aboutsummaryrefslogtreecommitdiff
path: root/www/spawn-fcgi/files/spawn-fcgi.in
diff options
context:
space:
mode:
Diffstat (limited to 'www/spawn-fcgi/files/spawn-fcgi.in')
-rw-r--r--www/spawn-fcgi/files/spawn-fcgi.in91
1 files changed, 91 insertions, 0 deletions
diff --git a/www/spawn-fcgi/files/spawn-fcgi.in b/www/spawn-fcgi/files/spawn-fcgi.in
new file mode 100644
index 000000000000..75bd8939ab4b
--- /dev/null
+++ b/www/spawn-fcgi/files/spawn-fcgi.in
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+# $FreeBSD$
+#
+# PROVIDE: spawn_fcgi
+# REQUIRE: %%REQUIRE%%
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+#
+# Optional settings:
+#
+# spawn_fcgi_app_args
+# spawn_fcgi_chroot_dir
+# spawn_fcgi_bindsocket
+# spawn_fcgi_web_server_addrs
+# spawn_fcgi_allowed_env
+
+. /etc/rc.subr
+
+name="spawn_fcgi"
+rcvar=spawn_fcgi_enable
+
+load_rc_config $name
+
+: ${spawn_fcgi_enable="NO"}
+: ${spawn_fcgi_app="%%LOCALBASE%%/bin/php-cgi"}
+: ${spawn_fcgi_pidfile="/var/run/spawn-fcgi.pid"}
+: ${spawn_fcgi_username="www"}
+: ${spawn_fcgi_groupname="www"}
+: ${spawn_fcgi_bindaddr="127.0.0.1"}
+: ${spawn_fcgi_bindport="9000"}
+: ${spawn_fcgi_bindsocket_mode="0777"}
+: ${spawn_fcgi_children="5"}
+: ${spawn_fcgi_max_requests="1000"}
+: ${spawn_fcgi_path_env="/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin"}
+
+if [ -z "${spawn_fcgi_bindsocket}" ]; then
+ _spawn_fcgi_bind="-a ${spawn_fcgi_bindaddr} -p ${spawn_fcgi_bindport}"
+else
+ if [ -n "${spawn_fcgi_bindsocket_mode}" ]; then
+ _spawn_fcgi_bind="-s ${spawn_fcgi_bindsocket} -M ${spawn_fcgi_bindsocket_mode}"
+ else
+ _spawn_fcgi_bind="-s ${spawn_fcgi_bindsocket}"
+ fi
+fi
+
+if [ -n "${spawn_fcgi_chroot_dir}" ]; then
+ _spawn_fcgi_chroot="-c ${spawn_fcgi_chroot_dir}"
+else
+ _spawn_fcgi_chroot=""
+fi
+
+command="/usr/local/bin/spawn-fcgi"
+command_args="-u ${spawn_fcgi_username} -g ${spawn_fcgi_groupname} ${_spawn_fcgi_bind} ${_spawn_fcgi_chroot} -P ${spawn_fcgi_pidfile} -- ${spawn_fcgi_app} ${spawn_fcgi_app_args}"
+pidfile=${spawn_fcgi_pidfile}
+procname=${spawn_fcgi_app}
+
+_allowed_env="PATH USER PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS"
+_allowed_env="${_allowed_env} ${spawn_fcgi_allowed_env}"
+
+start_precmd="${name}_start_precmd"
+stop_postcmd="${name}_stop_postcmd"
+
+spawn_fcgi_start_precmd()
+{
+ export PATH=${spawn_fcgi_path_env}
+ export USER=${spawn_fcgi_username}
+ export PHP_FCGI_CHILDREN=${spawn_fcgi_children}
+ export PHP_FCGI_MAX_REQUESTS=${spawn_fcgi_max_requests}
+ export FCGI_WEB_SERVER_ADDRS=${spawn_fcgi_web_server_addrs}
+ E=
+ for i in ${_allowed_env}; do
+ eval _val="\$$i"
+ if [ "${_val}_x" != "_x" ]; then
+ eval _add="$i=$_val"
+ E="${E} ${_add}"
+ fi
+ done
+ command="env - ${E} ${command}"
+}
+
+spawn_fcgi_stop_postcmd()
+{
+ rm -f ${pidfile}
+
+ if [ -n "${spawn_fcgi_bindsocket}" -a -S "${spawn_fcgi_chroot_dir}${spawn_fcgi_bindsocket}" ]; then
+ rm -f ${spawn_fcgi_chroot_dir}${spawn_fcgi_bindsocket}
+ fi
+}
+
+run_rc_command "$1"