1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/mattermost_ynh.git synced 2024-09-03 19:36:29 +02:00

scripts: use systemd rather than supervisor

Systemd is now the standard way of doing services in
Yunohost. It also avoids to install an extra dependency.

Fix #43
This commit is contained in:
Pierre de La Morinerie 2017-10-12 16:17:51 +05:30
parent 2a2cde5658
commit e8c51d4715
8 changed files with 100 additions and 48 deletions

View file

@ -1,5 +0,0 @@
[program:mattermost]
directory=/var/www/mattermost
command=/var/www/mattermost/bin/platform
startsecs=5
autorestart=true

24
conf/systemd.service Normal file
View file

@ -0,0 +1,24 @@
[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service
[Service]
Type=simple
ExecStart=__FINALPATH__/bin/platform
# HACK: Wait for Mattermost port to be open before declaring the service to be launched successfully.
# This avoids to report the service as launched even when it crashes a few milliseconds after start.
#
# TODO: improve mattermost to send a STARTED notification, and
# switch the service to 'Type=notify' instead.
ExecStartPost=/usr/bin/timeout 10 /bin/sh -c 'while ! nc -z localhost 8065; do sleep 0.2; done'
Restart=always
RestartSec=10
WorkingDirectory=__FINALPATH__
User=__APP__
Group=www-data
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target

View file

@ -47,7 +47,7 @@ ynh_backup "db.sql" "${backup_dir}/db.sql"
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "${backup_dir}/etc/nginx/conf.d/$domain.d/$app.conf" ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "${backup_dir}/etc/nginx/conf.d/$domain.d/$app.conf"
#================================================= #=================================================
# BACKUP SUPERVISOR CONFIG # BACKUP SYSTEMD
#================================================= #=================================================
ynh_backup "/etc/supervisor/conf.d/$app.conf" "${backup_dir}/etc/supervisor/conf.d/$app.conf" ynh_backup "/etc/systemd/system/$app.service" "${backup_dir}/etc/systemd/system/$app.service"

View file

@ -74,12 +74,6 @@ data_path="/home/yunohost.app/$app"
version=$(cat "$root_path/VERSION") version=$(cat "$root_path/VERSION")
archive_filename="mattermost-$version.tar.gz" archive_filename="mattermost-$version.tar.gz"
#=================================================
# INSTALL DEPENDENCIES
#=================================================
command -v supervisorctl >/dev/null 2>&1 || sudo apt-get install -y supervisor
#================================================= #=================================================
# CREATE A MYSQL DATABASE # CREATE A MYSQL DATABASE
#================================================= #=================================================
@ -144,8 +138,11 @@ ynh_app_setting_set "$app" analytics "$analytics"
# SECURE FILES AND DIRECTORIES # SECURE FILES AND DIRECTORIES
#================================================= #=================================================
sudo chown -R www-data: $final_path sudo chown -R mattermost:www-data "$final_path"
sudo chown -R www-data: $data_path sudo chown -R mattermost:www-data "$data_path"
sudo touch "/var/log/mattermost.log"
sudo chown mattermost:adm "/var/log/mattermost.log"
#================================================= #=================================================
# NGINX CONFIGURATION # NGINX CONFIGURATION
@ -155,10 +152,11 @@ sudo chown -R www-data: $data_path
ynh_add_nginx_config ynh_add_nginx_config
#================================================= #=================================================
# SETUP SUPERVISOR # SETUP SYSTEMD
#================================================= #=================================================
sudo cp $root_path/conf/supervisor.conf /etc/supervisor/conf.d/mattermost.conf # Create a dedicated systemd config
ynh_add_systemd_config
#================================================= #=================================================
# SETUP SSOWAT # SETUP SSOWAT
@ -169,16 +167,16 @@ if [ "$is_public" = "Yes" ];
then then
ynh_app_setting_set "$app" unprotected_uris "/" ynh_app_setting_set "$app" unprotected_uris "/"
fi fi
sudo yunohost app ssowatconf
#================================================= #=================================================
# RELOAD NGINX # RELOAD NGINX
#================================================= #=================================================
sudo service nginx reload sudo systemctl reload nginx
sudo yunohost app ssowatconf
#================================================= #=================================================
# START APP # START SERVER
#================================================= #=================================================
sudo supervisorctl reload sudo systemctl start mattermost

View file

@ -26,8 +26,17 @@ data_path="/home/yunohost.app/$app"
# STOP AND REMOVE SERVICE # STOP AND REMOVE SERVICE
#================================================= #=================================================
sudo supervisorctl stop "$app" # Remove systemd service
sudo rm -f "/etc/supervisor/conf.d/${app}.conf" if $(sudo systemctl -q is-active "$app"); then
sudo systemctl stop "$app"
fi
ynh_remove_systemd_config
# Legacy, for older versions of this app which used supervisor
if [ -f "/etc/supervisor/conf.d/${app}.conf" ]; then
sudo supervisorctl stop "$app"
sudo rm -f "/etc/supervisor/conf.d/${app}.conf"
fi
#================================================= #=================================================
# REMOVE THE MYSQL DATABASE # REMOVE THE MYSQL DATABASE

View file

@ -74,9 +74,12 @@ fi
#================================================= #=================================================
# Restore permissions on app files # Restore permissions on app files
chown -R www-data: $final_path chown -R mattermost:www-data $final_path
mkdir -p $data_path mkdir -p $data_path
chown -R www-data: $data_path chown -R mattermost:www-data $data_path
sudo touch "/var/log/mattermost.log"
sudo chown mattermost:adm "/var/log/mattermost.log"
#================================================= #=================================================
# RESTORE SSOWAT # RESTORE SSOWAT
@ -90,18 +93,11 @@ fi
#================================================= #=================================================
# SPECIFIC RESTORATION # SPECIFIC RESTORATION
#================================================= #=================================================
# REINSTALL DEPENDENCIES # RESTORE SYSTEMD
#================================================= #=================================================
# Define and install dependencies ynh_restore_file "/etc/systemd/system/$app.service"
# TODO: use ynh_install_app_dependencies once we'll stop supporting Yunohost < 2.6.4 sudo systemctl enable "$app"
command -v supervisorctl >/dev/null 2>&1 || sudo apt-get install -y supervisor
#=================================================
# RESTORE SUPERVISOR CONF
#=================================================
ynh_restore_file "/etc/supervisor/conf.d/$app.conf"
#================================================= #=================================================
# GENERIC FINALIZATION # GENERIC FINALIZATION
@ -115,4 +111,4 @@ sudo service nginx reload
# START SERVER # START SERVER
#================================================= #=================================================
sudo supervisorctl reload sudo systemctl start "$app"

View file

@ -24,7 +24,8 @@ domain=$(ynh_app_setting_get mattermost domain)
is_public=$(ynh_app_setting_get mattermost is_public) is_public=$(ynh_app_setting_get mattermost is_public)
root_path="$(pwd)/.." root_path="$(pwd)/.."
final_path=/var/www/mattermost final_path="/var/www/$app"
data_path="/home/yunohost.app/$app"
version=$(cat "$root_path/VERSION") version=$(cat "$root_path/VERSION")
archive_filename="mattermost-$version.tar.gz" archive_filename="mattermost-$version.tar.gz"
@ -34,13 +35,17 @@ archive_filename="mattermost-$version.tar.gz"
# Backup the current version of the app # Backup the current version of the app
ynh_backup_before_upgrade ynh_backup_before_upgrade
# If the upgrade fails…
ynh_clean_setup () { ynh_clean_setup () {
# Restore the backup if the upgrade fails # Stop attempting to restart the app
if $(sudo systemctl -q is-active "$app"); then
sudo systemctl stop "$app"
fi
# Restore the backup
ynh_restore_upgradebackup ynh_restore_upgradebackup
# Remove the temporary archive # Remove the temporary archive
sudo rm -f "$archive_filename" sudo rm -f "$archive_filename"
# Restart the server
sudo supervisorctl restart mattermost
} }
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
@ -57,7 +62,16 @@ sudo wget --quiet --output-document "$archive_filename" "$archive_url"
# STOP SERVER # STOP SERVER
#================================================= #=================================================
sudo supervisorctl stop mattermost # Stop the server (if the app is already using systemd)
if $(sudo systemctl -q is-active "$app"); then
sudo systemctl stop "$app"
fi
# Legacy, for older versions of this app which used supervisor
if [ -f "/etc/supervisor/conf.d/${app}.conf" ]; then
sudo supervisorctl stop "$app"
sudo rm -f "/etc/supervisor/conf.d/${app}.conf"
fi
#================================================= #=================================================
# BACKUP CONFIGURATION FILE # BACKUP CONFIGURATION FILE
@ -83,6 +97,18 @@ sudo rm -f "$archive_filename"
sudo cp -f "$backup_config_file" "$config_file" sudo cp -f "$backup_config_file" "$config_file"
#=================================================
# NGINX CONFIGURATION
#=================================================
ynh_add_nginx_config
#=================================================
# SYSTEMD CONFIGURATION
#=================================================
ynh_add_systemd_config
#================================================= #=================================================
# SPECIFIC UPGRADE STEPS # SPECIFIC UPGRADE STEPS
#================================================= #=================================================
@ -95,7 +121,11 @@ sudo sed -i "s|\"FileLocation\": \"/var/log/mattermost.log\"|\"FileLocation\": \
# RESTORE FILE PERMISSIONS # RESTORE FILE PERMISSIONS
#================================================= #=================================================
sudo chown -R www-data: "$final_path" sudo chown -R mattermost:www-data "$final_path"
sudo chown -R mattermost:www-data "$data_path"
sudo touch "/var/log/mattermost.log"
sudo chown mattermost:adm "/var/log/mattermost.log"
#================================================= #=================================================
# RELOAD NGINX # RELOAD NGINX
@ -107,4 +137,4 @@ sudo service nginx reload
# START SERVER # START SERVER
#================================================= #=================================================
sudo supervisorctl start mattermost sudo systemctl start "$app"

10
test.sh
View file

@ -152,9 +152,9 @@ function teardown() {
_parse_args $* _parse_args $*
setup setup
test_simple_install test_simple_install
test_simple_upgrade #test_simple_upgrade
test_simple_backup #test_simple_backup
test_simple_remove #test_simple_remove
test_simple_restore #test_simple_restore
test_package_check #test_package_check
teardown teardown