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:
parent
2a2cde5658
commit
e8c51d4715
8 changed files with 100 additions and 48 deletions
|
@ -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
24
conf/systemd.service
Normal 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
|
|
@ -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"
|
||||
|
||||
#=================================================
|
||||
# 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"
|
||||
|
|
|
@ -74,12 +74,6 @@ data_path="/home/yunohost.app/$app"
|
|||
version=$(cat "$root_path/VERSION")
|
||||
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
|
||||
#=================================================
|
||||
|
@ -144,8 +138,11 @@ ynh_app_setting_set "$app" analytics "$analytics"
|
|||
# SECURE FILES AND DIRECTORIES
|
||||
#=================================================
|
||||
|
||||
sudo chown -R www-data: $final_path
|
||||
sudo chown -R www-data: $data_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"
|
||||
|
||||
#=================================================
|
||||
# NGINX CONFIGURATION
|
||||
|
@ -155,10 +152,11 @@ sudo chown -R www-data: $data_path
|
|||
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
|
||||
|
@ -169,16 +167,16 @@ if [ "$is_public" = "Yes" ];
|
|||
then
|
||||
ynh_app_setting_set "$app" unprotected_uris "/"
|
||||
fi
|
||||
sudo yunohost app ssowatconf
|
||||
|
||||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
|
||||
sudo service nginx reload
|
||||
sudo yunohost app ssowatconf
|
||||
sudo systemctl reload nginx
|
||||
|
||||
#=================================================
|
||||
# START APP
|
||||
# START SERVER
|
||||
#=================================================
|
||||
|
||||
sudo supervisorctl reload
|
||||
sudo systemctl start mattermost
|
||||
|
|
|
@ -26,8 +26,17 @@ data_path="/home/yunohost.app/$app"
|
|||
# STOP AND REMOVE SERVICE
|
||||
#=================================================
|
||||
|
||||
sudo supervisorctl stop "$app"
|
||||
sudo rm -f "/etc/supervisor/conf.d/${app}.conf"
|
||||
# Remove systemd service
|
||||
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
|
||||
|
|
|
@ -74,9 +74,12 @@ fi
|
|||
#=================================================
|
||||
|
||||
# Restore permissions on app files
|
||||
chown -R www-data: $final_path
|
||||
chown -R mattermost:www-data $final_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
|
||||
|
@ -90,18 +93,11 @@ fi
|
|||
#=================================================
|
||||
# SPECIFIC RESTORATION
|
||||
#=================================================
|
||||
# REINSTALL DEPENDENCIES
|
||||
# RESTORE SYSTEMD
|
||||
#=================================================
|
||||
|
||||
# Define and install dependencies
|
||||
# TODO: use ynh_install_app_dependencies once we'll stop supporting Yunohost < 2.6.4
|
||||
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"
|
||||
ynh_restore_file "/etc/systemd/system/$app.service"
|
||||
sudo systemctl enable "$app"
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALIZATION
|
||||
|
@ -115,4 +111,4 @@ sudo service nginx reload
|
|||
# START SERVER
|
||||
#=================================================
|
||||
|
||||
sudo supervisorctl reload
|
||||
sudo systemctl start "$app"
|
||||
|
|
|
@ -24,7 +24,8 @@ domain=$(ynh_app_setting_get mattermost domain)
|
|||
is_public=$(ynh_app_setting_get mattermost is_public)
|
||||
|
||||
root_path="$(pwd)/.."
|
||||
final_path=/var/www/mattermost
|
||||
final_path="/var/www/$app"
|
||||
data_path="/home/yunohost.app/$app"
|
||||
version=$(cat "$root_path/VERSION")
|
||||
archive_filename="mattermost-$version.tar.gz"
|
||||
|
||||
|
@ -34,13 +35,17 @@ archive_filename="mattermost-$version.tar.gz"
|
|||
|
||||
# Backup the current version of the app
|
||||
ynh_backup_before_upgrade
|
||||
|
||||
# If the upgrade fails…
|
||||
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
|
||||
# Remove the temporary archive
|
||||
sudo rm -f "$archive_filename"
|
||||
# Restart the server
|
||||
sudo supervisorctl restart mattermost
|
||||
}
|
||||
|
||||
# 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
|
||||
#=================================================
|
||||
|
||||
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
|
||||
|
@ -83,6 +97,18 @@ sudo rm -f "$archive_filename"
|
|||
|
||||
sudo cp -f "$backup_config_file" "$config_file"
|
||||
|
||||
#=================================================
|
||||
# NGINX CONFIGURATION
|
||||
#=================================================
|
||||
|
||||
ynh_add_nginx_config
|
||||
|
||||
#=================================================
|
||||
# SYSTEMD CONFIGURATION
|
||||
#=================================================
|
||||
|
||||
ynh_add_systemd_config
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC UPGRADE STEPS
|
||||
#=================================================
|
||||
|
@ -95,7 +121,11 @@ sudo sed -i "s|\"FileLocation\": \"/var/log/mattermost.log\"|\"FileLocation\": \
|
|||
# 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
|
||||
|
@ -107,4 +137,4 @@ sudo service nginx reload
|
|||
# START SERVER
|
||||
#=================================================
|
||||
|
||||
sudo supervisorctl start mattermost
|
||||
sudo systemctl start "$app"
|
||||
|
|
10
test.sh
10
test.sh
|
@ -152,9 +152,9 @@ function teardown() {
|
|||
_parse_args $*
|
||||
setup
|
||||
test_simple_install
|
||||
test_simple_upgrade
|
||||
test_simple_backup
|
||||
test_simple_remove
|
||||
test_simple_restore
|
||||
test_package_check
|
||||
#test_simple_upgrade
|
||||
#test_simple_backup
|
||||
#test_simple_remove
|
||||
#test_simple_restore
|
||||
#test_package_check
|
||||
teardown
|
||||
|
|
Loading…
Add table
Reference in a new issue