summaryrefslogtreecommitdiff
path: root/openrc
diff options
context:
space:
mode:
authorMichael Orlitzky <mjo@gentoo.org>2017-07-25 19:45:42 -0400
committerMichael Orlitzky <mjo@gentoo.org>2017-07-25 19:45:42 -0400
commit66fee3ec3c7a8cea2332123c6a772d1bc0e35dda (patch)
treee29d230a2bbb29e9ecea607dc3a80b14adf99b92 /openrc
parentconfigure.ac: update the version to 0.9.3. (diff)
downloadeselect-php-66fee3ec3c7a8cea2332123c6a772d1bc0e35dda.tar.gz
eselect-php-66fee3ec3c7a8cea2332123c6a772d1bc0e35dda.tar.bz2
eselect-php-66fee3ec3c7a8cea2332123c6a772d1bc0e35dda.zip
Rename OpenRC init script and config file.
The OpenRC init script is now installed by the Makefile, so to be useful it needs to be called "php-fpm". To that end, I've renamed both the init script and the config file to lack the word "example". Moreover, now that these files are code-like and not documentation-like, I've renamed the directory containing them from "doc" to "openrc".
Diffstat (limited to 'openrc')
-rw-r--r--openrc/php-fpm.conf8
-rw-r--r--openrc/php-fpm.in.in77
2 files changed, 85 insertions, 0 deletions
diff --git a/openrc/php-fpm.conf b/openrc/php-fpm.conf
new file mode 100644
index 0000000..b3efdbf
--- /dev/null
+++ b/openrc/php-fpm.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/openrc/php-fpm.in.in b/openrc/php-fpm.in.in
new file mode 100644
index 0000000..2eaa2c3
--- /dev/null
+++ b/openrc/php-fpm.in.in
@@ -0,0 +1,77 @@
+#!/sbin/openrc-run
+
+#
+# We support both slot-agnostic and slotted versions of the init
+# script. The slotted versions would be named something like
+# php-fpm-php7.1, and PHP_SLOT below would be set to "php7.1". But we
+# also support a general init script named "php-fpm" that uses
+# whatever the currently-eselected fpm implementation is. In that
+# case, PHP_SLOT winds up set to "php-fpm" and we need to get the
+# actual slot by querying eselect.
+#
+# An open question is, what should we do if the user has both a
+# slot-agnostic and slotted init script, which happen to point to the
+# same slot? In other words, if the user has a php-fpm init script and
+# slot php7.1 eselected, but also a php-fpm-php7.1 init script. Should
+# they manage the same instance? I think so...
+#
+PHP_SLOT="${SVCNAME#php-fpm-}"
+if [ "${PHP_SLOT}" = "php-fpm" ] ; then
+ PHP_SLOT="$(eselect php show fpm)"
+fi
+
+PHP_FPM_CONF="@SYSCONFDIR@/php/fpm-${PHP_SLOT}/php-fpm.conf"
+
+command="@LIBDIR@/${PHP_SLOT}/bin/php-fpm"
+pidfile="@piddir@/php-fpm-${PHP_SLOT}.pid"
+
+# Force the daemon into the background and make it use our pid file,
+# regardless of what the config file says.
+command_args="--fpm-config ${PHP_FPM_CONF} --pid ${pidfile} --daemonize"
+extra_started_commands="reload"
+extra_commands="configtest"
+
+# Wait five seconds after starting for the pidfile to show up.
+start_stop_daemon_args="--wait 5000 ${PHP_FPM_UMASK:+--umask ${PHP_FPM_UMASK}}"
+
+configtest() {
+ ebegin "Testing PHP FastCGI Process Manager configuration"
+
+ # 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=$( ${command} ${command_args} --test 2>&1 )
+
+ # Save this so `echo` doesn't clobber it.
+ local exit_code=$?
+ [ $exit_code -ne 0 ] && echo "${OUTPUT}" >&2
+ eend $exit_code
+}
+
+start_pre() {
+ # If this isn't a restart, make sure that the user's config isn't
+ # busted before we try to start the daemon (this will produce
+ # better error messages than if we just try to start it blindly).
+ #
+ # If, on the other hand, this *is* a restart, then the stop_pre
+ # action will have ensured that the config is usable and we don't
+ # need to do that again.
+ if [ "${RC_CMD}" != "restart" ] ; then
+ configtest || return $?
+ fi
+}
+
+stop_pre() {
+ # If this is a restart, check to make sure the user's config
+ # isn't busted before we stop the running daemon.
+ if [ "${RC_CMD}" = "restart" ] ; then
+ configtest || return $?
+ fi
+}
+
+reload() {
+ configtest || return $?
+ ebegin "Reloading PHP FastCGI Process Manager"
+ start-stop-daemon --signal USR2 --pidfile "${pidfile}"
+ eend $?
+}