Compile nginx+passenger for Decidim and finalize install script

This commit is contained in:
Disassembler 2019-11-23 18:11:18 +01:00
parent b6c3949d41
commit 4d579ef8c1
Signed by: Disassembler
GPG Key ID: 524BD33A0EE29499
9 changed files with 57 additions and 17 deletions

View File

@ -22,20 +22,20 @@ chown 108080:108080 /srv/decidim/decidim_conf
lxc-execute decidim -- tar -cC /srv/decidim-app/config . | tar -xC /srv/decidim/decidim_conf lxc-execute decidim -- tar -cC /srv/decidim-app/config . | tar -xC /srv/decidim/decidim_conf
# Configure Decidim # Configure Decidim
export DECIDIM_SECRET=$(rake secret) export DECIDIM_SECRET=$(lxc-execute decidim -- rake secret)
mkdir -p /srv/decidim/decidim_data/storage /srv/decidim/decidim_data/uploads
chown 108080:108080 /srv/decidim/decidim_data/storage /srv/decidim/decidim_data/uploads
cp decidim_conf/environments/production.rb /srv/decidim/decidim_conf/environments/production.rb cp decidim_conf/environments/production.rb /srv/decidim/decidim_conf/environments/production.rb
cp decidim_conf/initializers/decidim.rb /srv/decidim/decidim_conf/initializers/decidim.rb cp decidim_conf/initializers/decidim.rb /srv/decidim/decidim_conf/initializers/decidim.rb
envsubst <decidim_conf/application.yml >/srv/decidim/decidim_conf/application.yml envsubst <decidim_conf/application.yml >/srv/decidim/decidim_conf/application.yml
# Populate database # Populate database
lxc-execute decidim -- RAILS_ENV=production bin/rails db:create db:migrate lxc-execute decidim -- sh -c 'cd /srv/decidim-app; bin/rails db:migrate'
# Create admin account # Create admin account
export DECIDIM_ADMIN_EMAIL=admin@example.com export DECIDIM_ADMIN_EMAIL=admin@example.com
export DECIDIM_ADMIN_PWD=$(head -c 12 /dev/urandom | base64 | tr -d '+/=') export DECIDIM_ADMIN_PWD=$(head -c 12 /dev/urandom | base64 | tr -d '+/=')
#lxc-execute decidim -- bin/rails console -e production envsubst <adminpwd.rb | lxc-execute decidim -- sh -c 'cd /srv/decidim-app; bin/rails console -e production'
#user = Decidim::System::Admin.new(email: "admin@example.org", password: "P8vDKAc3FdEte9Hw", password_confirmation: "P8vDKAc3FdEte9Hw")
#user.save!
# Install config update script # Install config update script
cp update-conf.sh /srv/decidim/update-conf.sh cp update-conf.sh /srv/decidim/update-conf.sh

View File

@ -0,0 +1,3 @@
user = Decidim::System::Admin.new(email: "${DECIDIM_ADMIN_EMAIL}", password: "${DECIDIM_ADMIN_PWD}", password_confirmation: "${DECIDIM_ADMIN_PWD}")
user.save!
quit

View File

@ -0,0 +1 @@
*/5 * * * * [ -s /srv/decidim-app/tmp/pids/delayed_job.pid ] || RAILS_ENV=production /srv/decidim-app/bin/delayed_job start >/dev/null

View File

@ -1,4 +1,4 @@
user nginx; user decidim;
pid /run/nginx.pid; pid /run/nginx.pid;
worker_processes 1; worker_processes 1;
error_log /dev/stderr warn; error_log /dev/stderr warn;
@ -17,6 +17,9 @@ http {
sendfile on; sendfile on;
send_timeout 300; send_timeout 300;
passenger_root /usr/local/lib/ruby/gems/2.6.0/gems/passenger-6.0.4;
passenger_ruby /usr/local/bin/ruby;
server { server {
listen 8080; listen 8080;
server_name localhost; server_name localhost;

View File

@ -1,4 +1,4 @@
#!/bin/execlineb -P #!/bin/execlineb -P
foreground { s6-svwait -d -t 3000 delayed_job } foreground { s6-svwait -d -t 3000 cron }
foreground { s6-svwait -d -t 3000 nginx } foreground { s6-svwait -d -t 3000 nginx }

View File

@ -0,0 +1,4 @@
#!/bin/execlineb -P
fdmove -c 2 1
crond -f -d 8

View File

@ -1,6 +0,0 @@
#!/bin/execlineb -P
export RAILS_ENV production
fdmove -c 2 1
s6-setuidgid www-data
/srv/decidim-app/bin/delayed_job start

View File

@ -3,7 +3,6 @@ IMAGE decidim_0.0.1-191113
LAYER alpine3.9_3.9.4-190620 LAYER alpine3.9_3.9.4-190620
LAYER alpine3.9-ruby2.6_2.6.3-190620 LAYER alpine3.9-ruby2.6_2.6.3-190620
LAYER alpine3.9-nodejs10_10.14.2-190620 LAYER alpine3.9-nodejs10_10.14.2-190620
LAYER alpine3.9-nginx_1.14.2-191115
MERGE /usr/bin/lxcmerge MERGE /usr/bin/lxcmerge
@ -14,14 +13,46 @@ ENV RAILS_ENV production
RUN EOF RUN EOF
# Install runtime dependencies # Install runtime dependencies
apk --no-cache add libpq tzdata apk --no-cache add curl libpq pcre procps tzdata
# Install build dependencies # Install build dependencies
apk --no-cache add --virtual .deps build-base icu-dev libxml2-dev libxslt-dev postgresql-dev zlib-dev apk --no-cache add --virtual .deps build-base curl-dev icu-dev libxml2-dev libxslt-dev linux-headers pcre-dev postgresql-dev zlib-dev
# Install passenger # Install passenger
gem install passenger --no-document gem install passenger --no-document
# Create OS user
addgroup -S decidim
adduser -S -h /srv/decidim-app -s /sbin/nologin -G decidim -g decidim decidim
# Compile nginx
# taken from passenger-install-nginx-module
cd /tmp
wget https://nginx.org/download/nginx-1.17.3.tar.gz
tar xf nginx-1.17.3.tar.gz
cd nginx-1.17.3
./configure \
--prefix=/var/lib/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/run/nginx.pid \
--lock-path=/run/nginx.lock \
--user=decidim \
--group=decidim \
--with-threads \
--with-file-aio \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_addition_module \
--with-cc-opt=-Wno-error \
--add-module=/usr/local/lib/ruby/gems/2.6.0/gems/passenger-6.0.4/src/nginx_module
make -j $(getconf _NPROCESSORS_ONLN)
make install
rm -f /etc/nginx/*.default
# Install Decidim # Install Decidim
bundle config build.nokogiri --use-system-libraries bundle config build.nokogiri --use-system-libraries
gem install decidim gem install decidim
@ -43,10 +74,12 @@ RUN EOF
bin/rails assets:precompile bin/rails assets:precompile
# Change ownership # Change ownership
chown -R nginx:www-data /srv/decidim-app chown -R decidim:decidim /srv/decidim-app
# Cleanup # Cleanup
apk --no-cache del .deps apk --no-cache del .deps
rm -rf /tmp/*
rm -rf /root/.bundle /root/.gem
EOF EOF
CMD s6-svscan /etc/services.d CMD s6-svscan /etc/services.d

View File

@ -14,6 +14,8 @@
], ],
"mounts": [ "mounts": [
["DIR", "/srv/decidim/decidim_conf", "/srv/decidim-app/config"] ["DIR", "/srv/decidim/decidim_conf", "/srv/decidim-app/config"]
["DIR", "/srv/decidim/decidim_data/storage", "/srv/decidim-app/storage"]
["DIR", "/srv/decidim/decidim_data/uploads", "/srv/decidim-app/public/uploads"]
] ]
}, },
"decidim-postgres": { "decidim-postgres": {