|
|
@@ -1,203 +0,0 @@
|
|
|
-#!/bin/bash
|
|
|
-
|
|
|
-# To be removed after the 4.3
|
|
|
-
|
|
|
-ynh_add_fpm_config () {
|
|
|
- # Declare an array to define the options of this helper.
|
|
|
- local legacy_args=vtufpd
|
|
|
- local -A args_array=( [v]=phpversion= [t]=use_template [u]=usage= [f]=footprint= [p]=package= [d]=dedicated_service )
|
|
|
- local phpversion
|
|
|
- local use_template
|
|
|
- local usage
|
|
|
- local footprint
|
|
|
- local package
|
|
|
- local dedicated_service
|
|
|
- # Manage arguments with getopts
|
|
|
- ynh_handle_getopts_args "$@"
|
|
|
- package=${package:-}
|
|
|
-
|
|
|
- # The default behaviour is to use the template.
|
|
|
- use_template="${use_template:-1}"
|
|
|
- usage="${usage:-}"
|
|
|
- footprint="${footprint:-}"
|
|
|
- if [ -n "$usage" ] || [ -n "$footprint" ]; then
|
|
|
- use_template=0
|
|
|
- fi
|
|
|
- # Do not use a dedicated service by default
|
|
|
- dedicated_service=${dedicated_service:-0}
|
|
|
-
|
|
|
- # Set the default PHP-FPM version by default
|
|
|
- phpversion="${phpversion:-$YNH_PHP_VERSION}"
|
|
|
-
|
|
|
- local old_phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
|
|
|
-
|
|
|
- # If the PHP version changed, remove the old fpm conf
|
|
|
- if [ -n "$old_phpversion" ] && [ "$old_phpversion" != "$phpversion" ]
|
|
|
- then
|
|
|
- local old_php_fpm_config_dir=$(ynh_app_setting_get --app=$app --key=fpm_config_dir)
|
|
|
- local old_php_finalphpconf="$old_php_fpm_config_dir/pool.d/$app.conf"
|
|
|
-
|
|
|
- ynh_backup_if_checksum_is_different --file="$old_php_finalphpconf"
|
|
|
-
|
|
|
- ynh_remove_fpm_config
|
|
|
- fi
|
|
|
-
|
|
|
- # If the requested PHP version is not the default version for YunoHost
|
|
|
- if [ "$phpversion" != "$YNH_DEFAULT_PHP_VERSION" ]
|
|
|
- then
|
|
|
- # If the argument --package is used, add the packages to ynh_install_php to install them from sury
|
|
|
- if [ -n "$package" ]
|
|
|
- then
|
|
|
- local additionnal_packages="--package=$package"
|
|
|
- else
|
|
|
- local additionnal_packages=""
|
|
|
- fi
|
|
|
- # Install this specific version of PHP.
|
|
|
- ynh_install_php --phpversion="$phpversion" "$additionnal_packages"
|
|
|
- elif [ -n "$package" ]
|
|
|
- then
|
|
|
- # Install the additionnal packages from the default repository
|
|
|
- ynh_add_app_dependencies --package="$package"
|
|
|
- fi
|
|
|
-
|
|
|
- if [ $dedicated_service -eq 1 ]
|
|
|
- then
|
|
|
- local fpm_service="${app}-phpfpm"
|
|
|
- local fpm_config_dir="/etc/php/$phpversion/dedicated-fpm"
|
|
|
- else
|
|
|
- local fpm_service="php${phpversion}-fpm"
|
|
|
- local fpm_config_dir="/etc/php/$phpversion/fpm"
|
|
|
- fi
|
|
|
-
|
|
|
- # Create the directory for FPM pools
|
|
|
- mkdir --parents "$fpm_config_dir/pool.d"
|
|
|
-
|
|
|
- ynh_app_setting_set --app=$app --key=fpm_config_dir --value="$fpm_config_dir"
|
|
|
- ynh_app_setting_set --app=$app --key=fpm_service --value="$fpm_service"
|
|
|
- ynh_app_setting_set --app=$app --key=fpm_dedicated_service --value="$dedicated_service"
|
|
|
- ynh_app_setting_set --app=$app --key=phpversion --value=$phpversion
|
|
|
-
|
|
|
- # Migrate from mutual PHP service to dedicated one.
|
|
|
- if [ $dedicated_service -eq 1 ]
|
|
|
- then
|
|
|
- local old_fpm_config_dir="/etc/php/$phpversion/fpm"
|
|
|
- # If a config file exist in the common pool, move it.
|
|
|
- if [ -e "$old_fpm_config_dir/pool.d/$app.conf" ]
|
|
|
- then
|
|
|
- ynh_print_info --message="Migrate to a dedicated php-fpm service for $app."
|
|
|
- # Create a backup of the old file before migration
|
|
|
- ynh_backup_if_checksum_is_different --file="$old_fpm_config_dir/pool.d/$app.conf"
|
|
|
- # Remove the old PHP config file
|
|
|
- ynh_secure_remove --file="$old_fpm_config_dir/pool.d/$app.conf"
|
|
|
- # Reload PHP to release the socket and allow the dedicated service to use it
|
|
|
- ynh_systemd_action --service_name=php${phpversion}-fpm --action=reload
|
|
|
- fi
|
|
|
- fi
|
|
|
-
|
|
|
- if [ $use_template -eq 1 ]
|
|
|
- then
|
|
|
- # Usage 1, use the template in conf/php-fpm.conf
|
|
|
- local phpfpm_path="$YNH_APP_BASEDIR/conf/php-fpm.conf"
|
|
|
- # Make sure now that the template indeed exists
|
|
|
- [ -e "$phpfpm_path" ] || ynh_die --message="Unable to find template to configure PHP-FPM."
|
|
|
- else
|
|
|
- # Usage 2, generate a PHP-FPM config file with ynh_get_scalable_phpfpm
|
|
|
-
|
|
|
- # Store settings
|
|
|
- ynh_app_setting_set --app=$app --key=fpm_footprint --value=$footprint
|
|
|
- ynh_app_setting_set --app=$app --key=fpm_usage --value=$usage
|
|
|
-
|
|
|
- # Define the values to use for the configuration of PHP.
|
|
|
- ynh_get_scalable_phpfpm --usage=$usage --footprint=$footprint
|
|
|
-
|
|
|
- local phpfpm_path="$YNH_APP_BASEDIR/conf/php-fpm.conf"
|
|
|
- echo "
|
|
|
-[__APP__]
|
|
|
-user = __APP__
|
|
|
-group = __APP__
|
|
|
-chdir = __FINALPATH__
|
|
|
-listen = /var/run/php/php__PHPVERSION__-fpm-__APP__.sock
|
|
|
-listen.owner = www-data
|
|
|
-listen.group = www-data
|
|
|
-pm = __PHP_PM__
|
|
|
-pm.max_children = __PHP_MAX_CHILDREN__
|
|
|
-pm.max_requests = 500
|
|
|
-request_terminate_timeout = 1d
|
|
|
-" > $phpfpm_path
|
|
|
-
|
|
|
- if [ "$php_pm" = "dynamic" ]
|
|
|
- then
|
|
|
- echo "
|
|
|
-pm.start_servers = __PHP_START_SERVERS__
|
|
|
-pm.min_spare_servers = __PHP_MIN_SPARE_SERVERS__
|
|
|
-pm.max_spare_servers = __PHP_MAX_SPARE_SERVERS__
|
|
|
-" >> $phpfpm_path
|
|
|
-
|
|
|
- elif [ "$php_pm" = "ondemand" ]
|
|
|
- then
|
|
|
- echo "
|
|
|
-pm.process_idle_timeout = 10s
|
|
|
-" >> $phpfpm_path
|
|
|
- fi
|
|
|
-
|
|
|
- # Concatene the extra config.
|
|
|
- if [ -e $YNH_APP_BASEDIR/conf/extra_php-fpm.conf ]; then
|
|
|
- cat $YNH_APP_BASEDIR/conf/extra_php-fpm.conf >> "$phpfpm_path"
|
|
|
- fi
|
|
|
- fi
|
|
|
-
|
|
|
- local finalphpconf="$fpm_config_dir/pool.d/$app.conf"
|
|
|
- ynh_add_config --template="$phpfpm_path" --destination="$finalphpconf"
|
|
|
-
|
|
|
- if [ -e "$YNH_APP_BASEDIR/conf/php-fpm.ini" ]
|
|
|
- then
|
|
|
- ynh_print_warn --message="Packagers ! Please do not use a separate php ini file, merge your directives in the pool file instead."
|
|
|
- ynh_add_config --template="$YNH_APP_BASEDIR/conf/php-fpm.ini" --destination="$fpm_config_dir/conf.d/20-$app.ini"
|
|
|
- fi
|
|
|
-
|
|
|
- if [ $dedicated_service -eq 1 ]
|
|
|
- then
|
|
|
- # Create a dedicated php-fpm.conf for the service
|
|
|
- local globalphpconf=$fpm_config_dir/php-fpm-$app.conf
|
|
|
-
|
|
|
-echo "[global]
|
|
|
-pid = /run/php/php__PHPVERSION__-fpm-__APP__.pid
|
|
|
-error_log = /var/log/php/fpm-php.__APP__.log
|
|
|
-syslog.ident = php-fpm-__APP__
|
|
|
-include = __FINALPHPCONF__
|
|
|
-" > $YNH_APP_BASEDIR/conf/php-fpm-$app.conf
|
|
|
-
|
|
|
- ynh_add_config --template="$YNH_APP_BASEDIR/conf/php-fpm-$app.conf" --destination="$globalphpconf"
|
|
|
-
|
|
|
- # Create a config for a dedicated PHP-FPM service for the app
|
|
|
- echo "[Unit]
|
|
|
-Description=PHP __PHPVERSION__ FastCGI Process Manager for __APP__
|
|
|
-After=network.target
|
|
|
-[Service]
|
|
|
-Type=notify
|
|
|
-PIDFile=/run/php/php__PHPVERSION__-fpm-__APP__.pid
|
|
|
-ExecStart=/usr/sbin/php-fpm__PHPVERSION__ --nodaemonize --fpm-config __GLOBALPHPCONF__
|
|
|
-ExecReload=/bin/kill -USR2 \$MAINPID
|
|
|
-[Install]
|
|
|
-WantedBy=multi-user.target
|
|
|
-" > $YNH_APP_BASEDIR/conf/$fpm_service
|
|
|
-
|
|
|
- # Create this dedicated PHP-FPM service
|
|
|
- ynh_add_systemd_config --service=$fpm_service --template=$fpm_service
|
|
|
- # Integrate the service in YunoHost admin panel
|
|
|
- yunohost service add $fpm_service --log /var/log/php/fpm-php.$app.log --description "Php-fpm dedicated to $app"
|
|
|
- # Configure log rotate
|
|
|
- ynh_use_logrotate --logfile=/var/log/php
|
|
|
- # Restart the service, as this service is either stopped or only for this app
|
|
|
- ynh_systemd_action --service_name=$fpm_service --action=restart
|
|
|
- else
|
|
|
- # Validate that the new php conf doesn't break php-fpm entirely
|
|
|
- if ! php-fpm${phpversion} --test 2>/dev/null
|
|
|
- then
|
|
|
- php-fpm${phpversion} --test || true
|
|
|
- ynh_secure_remove --file="$finalphpconf"
|
|
|
- ynh_die --message="The new configuration broke php-fpm?"
|
|
|
- fi
|
|
|
- ynh_systemd_action --service_name=$fpm_service --action=reload
|
|
|
- fi
|
|
|
-}
|