diff --git a/scripts/install b/scripts/install index cea34a9..69fed5e 100755 --- a/scripts/install +++ b/scripts/install @@ -20,28 +20,32 @@ fi #================================================= ynh_script_progression --message="Setting up source files..." --weight=1 -# Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$install_dir/pytition" - mkdir -p "$install_dir/static" mkdir -p "$install_dir/mediaroot" -chmod 750 "$install_dir" -chmod -R o-rwx "$install_dir" -chown -R $app:www-data "$install_dir" +chown -R "$app:www-data" "$install_dir" setfacl -dR -m g:"www-data":rX -m u:$app:rwX "$install_dir/mediaroot/" setfacl -R -m g:"www-data":rX -m u:$app:rwX "$install_dir/mediaroot/" #================================================= -# NGINX CONFIGURATION +# SYSTEM CONFIGURATION #================================================= -ynh_script_progression --message="Configuring NGINX web server..." --weight=1 +ynh_script_progression --message="Adding system configurations related to $app..." --weight=1 -# Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# SPECIFIC SETUP +ynh_add_systemd_config +yunohost service add $app --description="Pytition uWSGI app $app" --log="/var/log/$app/$app.log" + +# Create log files before logrotate +mkdir -p "/var/log/$app" +chmod 750 "/var/log/$app" +chown -R "$app:www-data" "/var/log/$app" + +# Use logrotate to manage application logfile(s) +ynh_use_logrotate + #================================================= # INSTALL PYTHON DEPENDENCIES #================================================= @@ -67,23 +71,19 @@ secret_key=$(generate_secret_key) config_path="$install_dir/pytition/pytition/pytition/settings/config.py" ynh_add_config --template="../conf/config.py" --destination="$config_path" - -# FIXME: this should be handled by the core in the future -# You may need to use chmod 600 instead of 400, -# for example if the app is expected to be able to modify its own config chmod 400 "$config_path" -chown $app:$app "$config_path" +chown "$app:$app" "$config_path" ynh_add_config --template="../conf/uwsgi.yaml" --destination="$install_dir/uwsgi.yaml" chmod 400 "$install_dir/uwsgi.yaml" -chown $app:$app "$install_dir/uwsgi.yaml" +chown "$app:$app" "$install_dir/uwsgi.yaml" #================================================= # RUN APP CONFIGURATION #================================================= ynh_script_progression --message="Running app configuration..." --weight=3 -ynh_exec_as $app bash -c " +ynh_exec_as "$app" bash -c " set +o nounset source '$install_dir/venv/bin/activate' set -o nounset @@ -96,44 +96,15 @@ ynh_exec_as $app bash -c " " chmod 750 "$install_dir/static" -chown -R $app:www-data "$install_dir/static" +chown -R "$app:www-data" "$install_dir/static" -#================================================= -# SETUP SYSTEMD -#================================================= -ynh_script_progression --message="Configuring a systemd service..." --weight=1 - -# Create a dedicated systemd config -ynh_add_systemd_config - -#================================================= -# GENERIC FINALIZATION -#================================================= -# SETUP LOGROTATE -#================================================= -ynh_script_progression --message="Configuring log rotation..." --weight=1 - -mkdir -p "/var/log/$app" -chmod 750 "/var/log/$app" -chown -R $app:www-data "/var/log/$app" - -# Use logrotate to manage application logfile(s) -ynh_use_logrotate - -#================================================= -# INTEGRATE SERVICE IN YUNOHOST -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 - -yunohost service add $app --description="Pytition uWSGI app $app" --log="/var/log/$app/$app.log" #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=1 -# Start a systemd service -ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" +ynh_systemd_action --service_name="$app" --action="start" --log_path="/var/log/$app/$app.log" #================================================= # END OF SCRIPT diff --git a/scripts/remove b/scripts/remove index 78afae5..9dd1193 100755 --- a/scripts/remove +++ b/scripts/remove @@ -10,58 +10,30 @@ source _common.sh source /usr/share/yunohost/helpers #================================================= -# STANDARD REMOVE -#================================================= -# REMOVE SERVICE INTEGRATION IN YUNOHOST +# REMOVE SYSTEM CONFIGURATIONS #================================================= +ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 + +# This should be a symetric version of what happens in the install script + # Remove the service from the list of services known by YunoHost (added from `yunohost service add`) -if ynh_exec_warn_less yunohost service status $app >/dev/null +if ynh_exec_warn_less yunohost service status "$app" >/dev/null then ynh_script_progression --message="Removing $app service integration..." --weight=1 - yunohost service remove $app + yunohost service remove "$app" fi -#================================================= -# STOP AND REMOVE SERVICE -#================================================= -ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1 - -# Remove the dedicated systemd config ynh_remove_systemd_config -#================================================= -# REMOVE LOGROTATE CONFIGURATION -#================================================= -ynh_script_progression --message="Removing logrotate configuration..." --weight=1 - -# Remove the app-specific logrotate config -ynh_remove_logrotate - -#================================================= -# REMOVE NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1 - -# Remove the dedicated NGINX config ynh_remove_nginx_config -#================================================= -# REMOVE FAIL2BAN CONFIGURATION -#================================================= -ynh_script_progression --message="Removing Fail2Ban configuration..." --weight=1 +ynh_remove_logrotate -# Remove the dedicated Fail2Ban config ynh_remove_fail2ban_config -#================================================= -# SPECIFIC REMOVE -#================================================= -# REMOVE VARIOUS FILES -#================================================= -ynh_script_progression --message="Removing various files..." --weight=1 +# Remove other various files specific to the app... such as : -# Remove the log files ynh_secure_remove --file="/var/log/$app" #================================================= diff --git a/scripts/restore b/scripts/restore index 57a72ef..b835654 100755 --- a/scripts/restore +++ b/scripts/restore @@ -17,15 +17,7 @@ ynh_script_progression --message="Restoring the app main directory..." --weight= ynh_restore_file --origin_path="$install_dir" -chmod -R o-rwx "$install_dir" -chown -R $app:www-data "$install_dir" - -#================================================= -# RESTORE THE NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the NGINX web server configuration..." --weight=1 - -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" +chown -R "$app:www-data" "$install_dir" #================================================= # RESTORE THE MYSQL DATABASE @@ -35,43 +27,28 @@ ynh_script_progression --message="Restoring the MySQL database..." --weight=1 ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql #================================================= -# RESTORE SYSTEMD +# RESTORE SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Restoring the systemd configuration..." --weight=1 + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_restore_file --origin_path="/etc/systemd/system/$app.service" systemctl enable $app.service --quiet - -#================================================= -# RESTORE THE LOGROTATE CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1 +yunohost service add $app --description="Pytition uWSGI app $app" --log="/var/log/$app/$app.log" mkdir -p "/var/log/$app" chmod 750 "/var/log/$app" -chown -R $app:www-data "/var/log/$app" +chown -R "$app:www-data" "/var/log/$app" ynh_restore_file --origin_path="/etc/logrotate.d/$app" -#================================================= -# INTEGRATE SERVICE IN YUNOHOST -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 - -yunohost service add $app --description="Pytition uWSGI app $app" --log="/var/log/$app/$app.log" - -#================================================= -# START SYSTEMD SERVICE -#================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=1 - -ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" - #================================================= # GENERIC FINALIZATION #================================================= -# RELOAD NGINX +# RELOAD NGINX AND PHP-FPM OR THE APP SERVICE #================================================= -ynh_script_progression --message="Reloading NGINX web server..." --weight=1 +ynh_script_progression --message="Reloading NGINX web server and $app's service..." --weight=1 + +ynh_systemd_action --service_name="$app" --action="start" --log_path="/var/log/$app/$app.log" ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/upgrade b/scripts/upgrade index 118f6a2..c7052c7 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -39,15 +39,21 @@ fi chmod 750 "$install_dir" chmod -R o-rwx "$install_dir" chown -R $app:www-data "$install_dir" +setfacl -dR -m g:"www-data":rX -m u:$app:rwX "$install_dir/mediaroot/" +setfacl -R -m g:"www-data":rX -m u:$app:rwX "$install_dir/mediaroot/" #================================================= -# NGINX CONFIGURATION +# REAPPLY SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1 +ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 -# Create a dedicated NGINX config ynh_add_nginx_config +ynh_add_systemd_config +yunohost service add $app --description="Pytition uWSGI app $app" --log="/var/log/$app/$app.log" + +ynh_use_logrotate --non-append + #================================================= # SPECIFIC UPGRADE #================================================= @@ -85,7 +91,7 @@ chown $app:$app "$install_dir/uwsgi.yaml" #================================================= ynh_script_progression --message="Running app configuration..." --weight=1 -ynh_exec_as $app bash -c " +ynh_exec_as "$app" bash -c " set +o nounset source '$install_dir/venv/bin/activate' set -o nounset @@ -96,39 +102,15 @@ ynh_exec_as $app bash -c " python3 manage.py compilemessages " +chmod 750 "$install_dir/static" chown -R $app:www-data "$install_dir/static" -#================================================= -# SETUP SYSTEMD -#================================================= -ynh_script_progression --message="Upgrading systemd configuration..." --weight=1 - -# Create a dedicated systemd config -ynh_add_systemd_config - -#================================================= -# GENERIC FINALIZATION -#================================================= -# SETUP LOGROTATE -#================================================= -ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1 - -# Use logrotate to manage app-specific logfile(s) -ynh_use_logrotate --non-append - -#================================================= -# INTEGRATE SERVICE IN YUNOHOST -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 - -yunohost service add $app --description="Pytition uWSGI app $app" --log="/var/log/$app/$app.log" - #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=1 -ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" +ynh_systemd_action --service_name="$app" --action="start" --log_path="/var/log/$app/$app.log" #================================================= # END OF SCRIPT