#!/sbin/openrc-run # If you want to run separate master process per pool, then create a symlink # to this runscript for each pool. In that mode, the php-fpm daemon is started # as nobody by default. You can override the user (and group) by declaring # variable "user" and optionally "group" in conf.d file, or in the $fpm_config # file (the former has precedence). : ${name:="PHP FastCGI Process Manager"} command="/usr/sbin/php-fpm7" command_background="yes" start_stop_daemon_args="--quiet" pidfile="/run/$RC_SVCNAME/php-fpm.pid" retry="SIGTERM/20" # configtest is here only for backward compatibility extra_commands="checkconfig configtest" extra_started_commands="reload reopen" description_checkconfig="Run php-fpm config check" description_reload="Gracefully reload workers and config" description_reopen="Reopen log files" required_files="$fpm_config" depend() { need net use apache2 lighttpd nginx } init_vars() { # Defaults for single master process with multiple pools if [ "$RC_SVCNAME" = "php-fpm7" ]; then : ${fpm_config:="/etc/php7/php-fpm.conf"} : ${user:="root"} # Defaults for master process per pool else : ${fpm_config="/etc/php7/php-fpm.d/${RC_SVCNAME#php-fpm7.}.conf"} : ${user:="$(conf_get user)"} : ${user:="nobody"} : ${group:="$(conf_get group)"} fi command_args="--nodaemonize --fpm-config $fpm_config" start_stop_daemon_args="$start_stop_daemon_args --user $user ${group:+"--group $group"}" } start_pre() { checkconfig || return 1 # If unix socket is used (instead of TCP/IP), then ensure that the # directory exists and has correct privileges. local listen="$(conf_get listen)" if [ "${listen:0:1}" = "/" ]; then checkpath -d -o $user:$group "$(dirname "$listen")" fi checkpath -d "$(dirname "$pidfile")" } reload() { ebegin "Reloading $name" start-stop-daemon --signal USR2 --pidfile "$pidfile" eend $? } reopen() { ebegin "Reopening $name log files" start-stop-daemon --signal USR1 --pidfile "$pidfile" eend $? } checkconfig() { init_vars ebegin "Checking $fpm_config" local out out="$(su -s /bin/sh -c "$command --test --fpm-config $fpm_config" $user 2>&1)" || { printf "%s\n" "$out" eend 1 "failed, please correct errors above" return 1 } } configtest() { ewarn "configtest is deprecated, use checkconfig instead" checkconfig } conf_get() { local key="$1" sed -nE "s/^${key}\s*=\s*\"?([^\";]+).*/\1/p" "$fpm_config" | head -n 1 }