From cd1235a55ac2ab146424ba7f0a45537bf4545802 Mon Sep 17 00:00:00 2001 From: Fabian Wilkens Date: Fri, 7 Feb 2020 20:34:09 +0100 Subject: [PATCH] Fix Installation Autor: Fabian Wilkens --- conf/env.sample | 5 +++-- conf/systemd.service | 3 ++- manifest.json | 10 ++++++++++ scripts/_common.sh | 7 ++++--- scripts/install | 38 +++++++++++++++++--------------------- 5 files changed, 36 insertions(+), 27 deletions(-) diff --git a/conf/env.sample b/conf/env.sample index d3b3d48..b5a4d67 100644 --- a/conf/env.sample +++ b/conf/env.sample @@ -1,8 +1,9 @@ # Rails Settings -EXPOSED_PORT=__EXPOSED_PORT__ -SECRET_KEY=__SECRET_KEY__ RAILS_ENV=__RAILS_ENV__ +EXPOSED_PORT=__EXPOSED_PORT__ +SECRET_KEY_BASE=__SECRET_KEY__ +RAILS_SERVE_STATIC_FILES=true # Extensions Settings EXTENSIONS_MANAGER_LOCATION=__EXTENSIONS_MANAGER_LOCATION__ diff --git a/conf/systemd.service b/conf/systemd.service index 21e65dd..9090ad5 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -12,7 +12,8 @@ Environment="PORT=__PORT_WEB__" #ExecStart=/opt/yunohost/snserver/rails s >> /var/log/snserver/snserver.log 2>&1 #ExecStart=__FINALPATH__/bin/rails s -e production >> /var/log/__APP__/__APP__.log 2>&1 #ExecStart=/opt/rbenv/versions/2.6.5/bin/bundle exec puma -C config/puma.rb -ExecStart=/opt/rbenv/versions/2.6.5/bin/rails s -b 0.0.0.0 >> /var/log/__APP__/__APP__.log 2>&1 +#ExecStart=/opt/rbenv/versions/2.6.5/bin/rails s -b 0.0.0.0 >> /var/log/__APP__/__APP__.log 2>&1 +ExecStart=/opt/rbenv/versions/2.6.5/bin/rails s -b 0.0.0.0 ExecReload=/bin/kill -SIGUSR1 $MAINPID StandardError=syslog Restart=always diff --git a/manifest.json b/manifest.json index be7aeba..2ff9d16 100644 --- a/manifest.json +++ b/manifest.json @@ -73,6 +73,16 @@ }, "choices": ["en", "fr", "de"], "default": "en" + }, + { + "name": "server_domain", + "type": "string", + "ask": { + "en": "Choose a server domain name for snweb", + "fr": "Choisissez un server domaine pour snweb", + "de": "Wähle einen Server Domain Namen für snweb" + }, + "example": "sync.standardnotes.org" } ] } diff --git a/scripts/_common.sh b/scripts/_common.sh index cec8aad..7e72400 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -7,7 +7,8 @@ # dependencies used by the app #pkg_dependencies="ruby ruby-dev rails zlib1g-dev libsqlite3-dev default-libmysqlclient-dev libssl-dev libreadline-dev" #pkg_dependencies=" zlib1g-dev libsqlite3-dev default-libmysqlclient-dev libssl-dev libreadline-dev" -pkg_dependencies="" +#pkg_dependencies="libssl-dev libreadline-dev zlib1g-dev" +pkg_dependencies="git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev" #================================================= # PERSONAL HELPERS @@ -16,14 +17,14 @@ pkg_dependencies="" # Execute a command as another user with login # (hence in user home dir, with prior loading of .profile, etc.) # usage: exec_login_as USER COMMAND [ARG ...] -exec_login_as() { +ynh_exec_login_as() { local user=$1 shift 1 exec_as $user --login "$@" } # Execute a command as another user # usage: exec_as USER COMMAND [ARG ...] -exec_as() { +ynh_exec_as() { local user=$1 shift 1 diff --git a/scripts/install b/scripts/install index e8f7e91..d84383f 100755 --- a/scripts/install +++ b/scripts/install @@ -33,6 +33,7 @@ is_public=$YNH_APP_ARG_IS_PUBLIC language=$YNH_APP_ARG_LANGUAGE admin_mail=$(ynh_user_get_info $admin 'mail') app=$YNH_APP_INSTANCE_NAME +server_domain=$YNH_APP_ARG_SERVER_DOMAIN #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS @@ -141,7 +142,6 @@ ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src mkdir $final_path ynh_setup_source --dest_dir="$final_path/live" -#ynh_setup_source --dest_dir="$final_path" #================================================= # NGINX CONFIGURATION @@ -149,9 +149,10 @@ ynh_setup_source --dest_dir="$final_path/live" ynh_script_progression --message="Configuring nginx web server..." --time --weight=2 ### `ynh_add_nginx_config` will use the file conf/nginx.conf +ynh_replace_string --match_string="__PORT__" --replace_string="$port_web" --target_file="../conf/nginx.conf" # Create a dedicated nginx config -ynh_add_nginx_config 'port_web' +ynh_add_nginx_config #================================================= # CREATE DEDICATED USER @@ -161,9 +162,9 @@ ynh_script_progression --message="Configuring system user..." --time --weight=2 # Create a system user #ynh_system_user_create --username=$app # Create a system user allowing login -#ynh_system_user_create $app $final_path 1 +ynh_system_user_create $app $final_path 1 # Create a system user -ynh_system_user_create --username=$app --home_dir=$final_path +#ynh_system_user_create --username=$app --home_dir=$final_path #================================================= @@ -175,10 +176,13 @@ ynh_script_progression --message="Installing Ruby..." --time --weight=321 ruby_version="2.6.5" ynh_install_ruby --ruby_version=$ruby_version + /opt/rbenv/versions/$ruby_version/bin/gem update --system -/opt/rbenv/versions/$ruby_version/bin/gem install bundler --no-document +/opt/rbenv/versions/$ruby_version/bin/gem install bundler:1.17.1 --no-document /opt/rbenv/versions/$ruby_version/bin/gem install bundle --no-document /opt/rbenv/versions/$ruby_version/bin/gem install rails --no-document +/opt/rbenv/versions/$ruby_version/bin/gem install haml --no-document +/opt/rbenv/versions/$ruby_version/bin/gem install sass --no-document #================================================= # MODIFY A CONFIG FILE @@ -188,8 +192,8 @@ ynh_script_progression --message="Modifying a config file..." --time --weight=2 ### (It's compatible with sed regular expressions syntax) -cp -f ../conf/env.sample "$final_path/live/.env" -config_file="$final_path/live/.env" +cp -f ../conf/env.sample "$final_path/live/.env.production" +config_file="$final_path/live/.env.production" ynh_replace_string --match_string="__EXPOSED_PORT__" --replace_string="$port_web" --target_file="$config_file" secret_key=$(ynh_string_random --length=48 | base64) @@ -197,13 +201,7 @@ ynh_replace_string --match_string="__SECRET_KEY__" --replace_string="$secret_key ynh_replace_string --match_string="__RAILS_ENV__" --replace_string="production" --target_file="$config_file" ynh_replace_string --match_string="__EXTENSIONS_MANAGER_LOCATION__" --replace_string="extensions/extensions-manager/dist/index.html" --target_file="$config_file" ynh_replace_string --match_string="__BATCH_MANAGER_LOCATION__" --replace_string="extensions/batch-manager/dist/index.min.html" --target_file="$config_file" -snserver_domain=(ynh_app_setting_get --app=snserver --key=domain) -if [ "$snserver" = "" ]; then - snserver_domain="sync.standardnotes.org" -fi -ynh_replace_string --match_string="__SF_DEFAULT_SERVER__" --replace_string="https://$snserver_domain" --target_file="$config_file" - -ynh_replace_string --match_string="__PORT__" --replace_string="$port_web;" --target_file="../conf/nginx.conf" +ynh_replace_string --match_string="__SF_DEFAULT_SERVER__" --replace_string="https://$server_domain" --target_file="$config_file" #================================================= # INSTALLING Standard Notes - Synicing Server @@ -214,13 +212,9 @@ chown -R "$app": "$final_path" pushd "$final_path/live" ynh_use_nodejs -# sudo -u "$app" env PATH=$PATH /opt/rbenv/versions/$ruby_version/bin/bundle config set path 'vendor/bundle' -# sudo -u "$app" env PATH=$PATH /opt/rbenv/versions/$ruby_version/bin/bundle config set with 'development' - # sudo -u "$app" env PATH=$PATH /opt/rbenv/versions/$ruby_version/bin/bundle install --path "vendor/bundle" - #sudo -u "$app" env PATH=$PATH /opt/rbenv/versions/$ruby_version/bin/bundle update --bundler - # sudo -u "$app" env PATH=$PATH yarn install --pure-lockfile - #sudo -u "$app" env PATH=$PATH yarn run build --pure-lockfile - sudo -u "$app" npm run build + ynh_exec_as "$app" env "PATH=$PATH" /opt/rbenv/versions/$ruby_version/bin/bundle install --path "vendor/bundle" + ynh_exec_as "$app" env "PATH=$PATH:/opt/rbenv/versions/$ruby_version/bin:/var/www/snweb/live/vendor/bundle:/var/www/snweb/live/bin:$nodejs_path" yarn run build + ynh_exec_as "$app" env "PATH=$PATH" /opt/rbenv/versions/$ruby_version/bin/rails assets:precompile popd #================================================= @@ -270,7 +264,9 @@ ynh_script_progression --message="Securing files and directories..." --time --we # Set permissions to app files chown -R root: $final_path chown $app: $final_path +chown $app: $final_path/live/ chown -R $app: $final_path/live/log/ +chown -R $app: $final_path/live/tmp/ #================================================= # SETUP LOGROTATE