aboutsummaryrefslogtreecommitdiffstats
path: root/main/php5
diff options
context:
space:
mode:
authorJakub Jirutka <jakub@jirutka.cz>2016-09-22 01:29:12 +0200
committerJakub Jirutka <jakub@jirutka.cz>2016-09-22 01:52:53 +0200
commite3a54f061a9c88a49044b6e80172ff7760e6c144 (patch)
treedaec8a4d8f75deb47c401076fca5bd63371a86ec /main/php5
parent96c1ae21a30036af89b2399cdf7e1de7d7ed64b6 (diff)
downloadaports-e3a54f061a9c88a49044b6e80172ff7760e6c144.tar.bz2
aports-e3a54f061a9c88a49044b6e80172ff7760e6c144.tar.xz
main/php5: rewrite runscript, allow to run multiple masters
Diffstat (limited to 'main/php5')
-rw-r--r--main/php5/APKBUILD8
-rw-r--r--main/php5/php-fpm.initd86
2 files changed, 80 insertions, 14 deletions
diff --git a/main/php5/APKBUILD b/main/php5/APKBUILD
index b9f63c6d95..b935d2a247 100644
--- a/main/php5/APKBUILD
+++ b/main/php5/APKBUILD
@@ -4,7 +4,7 @@
# Maintainer: Matt Smith <mcs@darkregion.net>
pkgname=php5
pkgver=5.6.25
-pkgrel=0
+pkgrel=1
pkgdesc="The PHP language runtime engine"
url="http://www.php.net/"
arch="all"
@@ -494,17 +494,17 @@ wddx() { _mv_ext wddx; }
opcache() { _mv_ext opcache; }
md5sums="f63b9956c25f1ae0433015a80b44224c php-5.6.25.tar.bz2
-11375b4f0aaedc589eba5e31c19e5a7d php-fpm.initd
+63b16caff0d7aa881a31a1e02f3080c3 php-fpm.initd
67719f428f44ec004da18705cbabe2ee php5-module.conf
483bc0a85c50a9a9aedbe14a19ed4526 php-install-pear-xml.patch
7200972a23adae799921c4ca20ff0074 gd-iconv.patch"
sha256sums="58ce6032aced7f3e42ced492bd9820e5b3f2a3cd3ef71429aa92fd7b3eb18dde php-5.6.25.tar.bz2
-8fc31134677746d5d972d4ed4ab0abe42669e78f46ce45c18bc042b99bc034cd php-fpm.initd
+be9bfdab10a994fe553119b181be7015325a7618de454a58bdee06bcfb711454 php-fpm.initd
ceec4d5b2a128c6a97e49830af604f0bb555bca1a86a9cd0366b828ba392257f php5-module.conf
f739ca427a1dd53a388bad0823565299c5d4a5796b1171b892884e4d7d099bab php-install-pear-xml.patch
98de37c650a36870a543225f6a6b81813ccd447a484f0881511be4eb6e901844 gd-iconv.patch"
sha512sums="675a5244822f00abd93ec4ef31c539a4c305cab0aaf4735f6cbe037507853ba3f1691fcbaf1cf54dde106d918c22337bb600ed78c38351d4405da8ffdc5d50e0 php-5.6.25.tar.bz2
-ded5cdebc74aeb2d0f0899fe448477ba9eaa01e2e9fbfa6f3425398daccdf26fbe440ab184761cd87b0ea271f97ee237c482a621397d6588c6d353513cdbed1e php-fpm.initd
+1f5cb18f85a2e279e24344d993f5c51c7bfbcbecc0e9bfcf075bebd1b0b893e2ffb793d95a632c9333033597d4b4f74840bfd00520a6dc700444d1a054225da1 php-fpm.initd
895e94c791bd82060ad820fef049d366a09c932097faa6b7b9a2c2e9e00a18cb7c0f9b128679c7659b404379266fd0f95dba5c0333f626194cf60f7bf6044102 php5-module.conf
f1177cbf6b1f44402f421c3d317aab1a2a40d0b1209c11519c1158df337c8945f3a313d689c939768584f3e4edbe52e8bd6103fb6777462326a9d94e8ab1f505 php-install-pear-xml.patch
6ecd0be2da1dc5b1d7512e46a2a5cd107a8b2a8c364efc9c624a7d6b2ab081685a329c94c22c970dc14c5c1115f702c512e97ae858da1bc69c6423323dbeeba2 gd-iconv.patch"
diff --git a/main/php5/php-fpm.initd b/main/php5/php-fpm.initd
index f778c055bd..9f091e7645 100644
--- a/main/php5/php-fpm.initd
+++ b/main/php5/php-fpm.initd
@@ -1,27 +1,93 @@
#!/sbin/openrc-run
-name="PHP FastCGI Process Manager"
-cfgfile="/etc/php5/php-fpm.conf"
-pidfile="/var/run/php-fpm.pid"
+# 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/bin/php-fpm"
-command_args="--fpm-config $cfgfile --pid $pidfile"
-required_files="$cfgfile"
+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"
-extra_started_commands="reload"
+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-fpm" ]; then
+ : ${fpm_config:="/etc/php5/php-fpm.conf"}
+ : ${user:="root"}
+ # Defaults for master process per pool
+ else
+ : ${fpm_config="/etc/php5/fpm.d/${RC_SVCNAME#php-fpm.}.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() {
- ebegin
- $command $command_args -t 2>/dev/null
- eend $?
+ 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} --name ${SVCNAME}
+ 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
+}