summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Orlitzky <mjo@gentoo.org>2016-07-26 17:02:40 -0400
committerMichael Orlitzky <mjo@gentoo.org>2016-07-26 17:26:27 -0400
commitf98dfac61c8076d7cf8ab6a9ab574b047dd07952 (patch)
treed85d90ac1e8d86246f9bd7073fa8b3b8584d8628
parentBump to v0.9.1 in configure.ac. (diff)
downloadeselect-php-f98dfac61c8076d7cf8ab6a9ab574b047dd07952.tar.gz
eselect-php-f98dfac61c8076d7cf8ab6a9ab574b047dd07952.tar.bz2
eselect-php-f98dfac61c8076d7cf8ab6a9ab574b047dd07952.zip
Add OpenRC init and conf files.
-rw-r--r--Makefile.am4
-rw-r--r--doc/php-fpm.example.conf8
-rw-r--r--doc/php-fpm.example.init71
3 files changed, 81 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am
index d9220bd..719ced1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,8 +1,8 @@
eselectdir = $(datadir)/eselect/modules
nodist_eselect_DATA = $(srcdir)/src/php.eselect
-# Without this, the conf input file doesn't wind up in the tarball.
-EXTRA_DIST = $(srcdir)/src/70_mod_php.conf.in
+# Without EXTRA_DIST, these files don't wind up in the tarball.
+EXTRA_DIST = $(srcdir)/src/70_mod_php.conf.in doc/*.*
if APACHE2
# Without these set, we won't try to install the conf file.
diff --git a/doc/php-fpm.example.conf b/doc/php-fpm.example.conf
new file mode 100644
index 0000000..b3efdbf
--- /dev/null
+++ b/doc/php-fpm.example.conf
@@ -0,0 +1,8 @@
+# The OpenRC conf.d file that accompanies the php-fpm init script.
+# Not to be confused with the php-fpm.conf file that ships with
+# PHP itself.
+
+# Set the umask of the FPM process to the given (octal) value. This is
+# passed directly to start-stop-daemon. If not specified, the system
+# default will be used.
+#PHP_FPM_UMASK=0002
diff --git a/doc/php-fpm.example.init b/doc/php-fpm.example.init
new file mode 100644
index 0000000..6369e9f
--- /dev/null
+++ b/doc/php-fpm.example.init
@@ -0,0 +1,71 @@
+#!/sbin/openrc-run
+
+extra_started_commands="reload"
+extra_commands="configtest"
+
+set_phpvars() {
+ PHPSLOT="${SVCNAME#php-fpm-}"
+ PHP_FPM_PID="/run/php-fpm-${PHPSLOT}.pid"
+ if [ "${PHPSLOT}" = "php-fpm" ] ; then
+ PHPSLOT="$(eselect php show fpm)"
+ PHP_FPM_PID="/run/php-fpm.pid"
+ fi
+
+ PHP_FPM_CONF="/etc/php/fpm-${PHPSLOT}/php-fpm.conf"
+ PHP_FPM_BIN="/usr/lib/${PHPSLOT}/bin/php-fpm"
+}
+
+start() {
+ # If configtest fails, we don't have to sit around for five
+ # seconds waiting for a pid to show up.
+ configtest || return $?
+ ebegin "Starting PHP FastCGI Process Manager"
+ set_phpvars
+ start-stop-daemon --start --pidfile "${PHP_FPM_PID}" \
+ --exec "${PHP_FPM_BIN}" \
+ ${PHP_FPM_UMASK:+--umask ${PHP_FPM_UMASK}} \
+ -- \
+ --fpm-config "${PHP_FPM_CONF}" \
+ --pid "${PHP_FPM_PID}"
+ local i=0
+ local timeout=5
+ while [ ! -f "${PHP_FPM_PID}" ] && [ $i -le $timeout ]; do
+ sleep 1
+ i=$(($i + 1))
+ done
+
+ [ $timeout -gt $i ]
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping PHP FastCGI Process Manager"
+ set_phpvars
+ start-stop-daemon --signal QUIT \
+ --stop \
+ --exec "${PHP_FPM_BIN}" \
+ --pidfile "${PHP_FPM_PID}"
+ eend $?
+}
+
+reload() {
+ configtest || return $?
+ ebegin "Reloading PHP FastCGI Process Manager"
+ set_phpvars
+ [ -f "${PHP_FPM_PID}" ] && kill -USR2 $(cat "${PHP_FPM_PID}")
+ eend $?
+}
+
+configtest() {
+ ebegin "Testing PHP FastCGI Process Manager configuration"
+ set_phpvars
+ # Hide the "test is successful" message (which goes to stderr) if
+ # the test passed, but show the entire output if the test failed
+ # because it may contain hints about the problem.
+ OUTPUT=$( "${PHP_FPM_BIN}" --fpm-config "${PHP_FPM_CONF}" --test 2>&1 )
+
+ # Save this so `echo` doesn't clobber it.
+ local exit_code=$?
+ [ $exit_code -ne 0 ] && echo "${OUTPUT}" >&2
+ eend $exit_code
+}