mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
147 lines
5.4 KiB
Bash
147 lines
5.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Create a dedicated php-fpm config
|
|
#
|
|
# usage: ynh_add_fpm_config [--phpversion=7.X]
|
|
# | arg: -v, --phpversion - Version of php to use.
|
|
#
|
|
# Requires YunoHost version 2.7.2 or higher.
|
|
ynh_add_fpm_config () {
|
|
# Declare an array to define the options of this helper.
|
|
local legacy_args=v
|
|
declare -Ar args_array=( [v]=phpversion= )
|
|
local phpversion
|
|
# Manage arguments with getopts
|
|
ynh_handle_getopts_args "$@"
|
|
|
|
# Configure PHP-FPM 7.0 by default
|
|
phpversion="${phpversion:-7.0}"
|
|
|
|
local fpm_config_dir="/etc/php/$phpversion/fpm"
|
|
local fpm_service="php${phpversion}-fpm"
|
|
# Configure PHP-FPM 5 on Debian Jessie
|
|
if [ "$(ynh_get_debian_release)" == "jessie" ]; then
|
|
fpm_config_dir="/etc/php5/fpm"
|
|
fpm_service="php5-fpm"
|
|
fi
|
|
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"
|
|
finalphpconf="$fpm_config_dir/pool.d/$app.conf"
|
|
ynh_backup_if_checksum_is_different --file="$finalphpconf"
|
|
cp ../conf/php-fpm.conf "$finalphpconf"
|
|
ynh_replace_string --match_string="__NAMETOCHANGE__" --replace_string="$app" --target_file="$finalphpconf"
|
|
ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="$finalphpconf"
|
|
ynh_replace_string --match_string="__USER__" --replace_string="$app" --target_file="$finalphpconf"
|
|
ynh_replace_string --match_string="__PHPVERSION__" --replace_string="$phpversion" --target_file="$finalphpconf"
|
|
chown root: "$finalphpconf"
|
|
ynh_store_file_checksum --file="$finalphpconf"
|
|
|
|
if [ -e "../conf/php-fpm.ini" ]
|
|
then
|
|
echo "Packagers ! Please do not use a separate php ini file, merge your directives in the pool file instead." >&2
|
|
finalphpini="$fpm_config_dir/conf.d/20-$app.ini"
|
|
ynh_backup_if_checksum_is_different "$finalphpini"
|
|
cp ../conf/php-fpm.ini "$finalphpini"
|
|
chown root: "$finalphpini"
|
|
ynh_store_file_checksum "$finalphpini"
|
|
fi
|
|
ynh_systemd_action --service_name=$fpm_service --action=reload
|
|
}
|
|
|
|
# Remove the dedicated php-fpm config
|
|
#
|
|
# usage: ynh_remove_fpm_config
|
|
#
|
|
# Requires YunoHost version 2.7.2 or higher.
|
|
ynh_remove_fpm_config () {
|
|
local fpm_config_dir=$(ynh_app_setting_get --app=$app --key=fpm_config_dir)
|
|
local fpm_service=$(ynh_app_setting_get --app=$app --key=fpm_service)
|
|
# Assume php version 7 if not set
|
|
if [ -z "$fpm_config_dir" ]; then
|
|
fpm_config_dir="/etc/php/7.0/fpm"
|
|
fpm_service="php7.0-fpm"
|
|
fi
|
|
ynh_secure_remove --file="$fpm_config_dir/pool.d/$app.conf"
|
|
ynh_secure_remove --file="$fpm_config_dir/conf.d/20-$app.ini" 2>&1
|
|
ynh_systemd_action --service_name=$fpm_service --action=reload
|
|
}
|
|
|
|
# Install another version of php.
|
|
#
|
|
# usage: ynh_install_php --phpversion=phpversion [--package=packages]
|
|
# | arg: -v, --phpversion - Version of php to install.
|
|
# | arg: -p, --package - Additionnal php packages to install
|
|
ynh_install_php () {
|
|
# Declare an array to define the options of this helper.
|
|
local legacy_args=vp
|
|
declare -Ar args_array=( [v]=phpversion= [p]=package= )
|
|
local phpversion
|
|
local package
|
|
# Manage arguments with getopts
|
|
ynh_handle_getopts_args "$@"
|
|
package=${package:-}
|
|
|
|
# Store phpversion into the config of this app
|
|
ynh_app_setting_set $app phpversion $phpversion
|
|
|
|
if [ "$phpversion" == "7.0" ]
|
|
then
|
|
ynh_die "Do not use ynh_install_php to install php7.0"
|
|
fi
|
|
|
|
# Store the ID of this app and the version of php requested for it
|
|
echo "$YNH_APP_INSTANCE_NAME:$phpversion" | tee --append "/etc/php/ynh_app_version"
|
|
|
|
# Add an extra repository for those packages
|
|
ynh_install_extra_repo --repo="https://packages.sury.org/php/ $(lsb_release -sc) main" --key="https://packages.sury.org/php/apt.gpg" --priority=995 --name=extra_php_version
|
|
|
|
# Install requested dependencies from this extra repository.
|
|
# Install php-fpm first, otherwise php will install apache as a dependency.
|
|
ynh_add_app_dependencies --package="php${phpversion}-fpm"
|
|
ynh_add_app_dependencies --package="php$phpversion php${phpversion}-common $package"
|
|
|
|
# Set php7.0 back as the default version for php-cli.
|
|
update-alternatives --set php /usr/bin/php7.0
|
|
|
|
# Pin this extra repository after packages are installed to prevent sury of doing shit
|
|
ynh_pin_repo --package="*" --pin="origin \"packages.sury.org\"" 200 --name=extra_php_version
|
|
ynh_pin_repo --package="php7.0*" --pin="origin \"packages.sury.org\"" 600 --name=extra_php_version --append
|
|
|
|
# Advertise service in admin panel
|
|
yunohost service add php${phpversion}-fpm --log "/var/log/php${phpversion}-fpm.log"
|
|
}
|
|
|
|
# Remove the specific version of php used by the app.
|
|
#
|
|
# usage: ynh_install_php
|
|
ynh_remove_php () {
|
|
# Get the version of php used by this app
|
|
local phpversion=$(ynh_app_setting_get $app phpversion)
|
|
|
|
if [ "$phpversion" == "7.0" ] || [ -z "$phpversion" ]
|
|
then
|
|
if [ "$phpversion" == "7.0" ]
|
|
then
|
|
ynh_print_err "Do not use ynh_remove_php to install php7.0"
|
|
fi
|
|
return 0
|
|
fi
|
|
|
|
# Remove the line for this app
|
|
sed --in-place "/$YNH_APP_INSTANCE_NAME:$phpversion/d" "/etc/php/ynh_app_version"
|
|
|
|
# If no other app uses this version of php, remove it.
|
|
if ! grep --quiet "$phpversion" "/etc/php/ynh_app_version"
|
|
then
|
|
# Purge php dependences for this version.
|
|
ynh_package_autopurge "php$phpversion php${phpversion}-fpm php${phpversion}-common"
|
|
# Remove the service from the admin panel
|
|
yunohost service remove php${phpversion}-fpm
|
|
fi
|
|
|
|
# If no other app uses alternate php versions, remove the extra repo for php
|
|
if [ ! -s "/etc/php/ynh_app_version" ]
|
|
then
|
|
ynh_secure_remove /etc/php/ynh_app_version
|
|
fi
|
|
}
|