Actions
HowToSetupFastCgiIndividualPermissionsInitScript » History » Revision 2
« Previous |
Revision 2/3
(diff)
| Next »
Anonymous, 2007-05-13 12:20
initial creation
I hope somebody might also find this useful as a init script for several fcgi php daemons with individual user permissions as described here
#! /bin/sh ### BEGIN INIT INFO # Provides: FastCGI servers for PHP # Required-Start: networking # Required-Stop: networking # Default-Start: 2 3 4 5 # Default-Stop: S 0 1 6 # Short-Description: Start PHP FastCGI servers. # Description: PHP can be started with lighttpd's spawn-fcgi binary to # get individual user permisions. This must be done # for each normal user which wants to have PHP support. ### END INIT INFO # # Author: Jannis Leidel # <jannis AT leidel.info>. # # Version: @(#)php-fcgi 0.1 12-May-2007 jannis AT leidel.info # # List of user which need own PHP-Fcgi processes # e.g. FCGI_USER_LIST="user1 user2 user3" FCGI_USER_LIST="" # Set the socket and pid directory and make sure it exists RUNFILES_PATH=/var/run/php-fcgi mkdir -p $RUNFILES_PATH FCGI_PROGRAM="/usr/bin/php-cgi" FCGI_WEB_SERVER_ADDRS="127.0.0.1" PHP_FCGI_CHILDREN=2 PHP_FCGI_MAX_REQUESTS=1000 ALLOWED_ENV="PATH USER" #### DO NOT CHANGE ANYTHING AFTER THIS LINE! set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="PHP FastCGI servers" # Function that starts all php daemons. d_start() { export PHP_FCGI_MAX_REQUESTS export FCGI_WEB_SERVER_ADDRS ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS" E= for i in $ALLOWED_ENV; do E="$E $i=${!i}" done for FCGI_USER in $FCGI_USER_LIST do echo -n " $FCGI_USER" if [ -f $RUNFILES_PATH/$FCGI_USER.pid ]; then echo -n " already running" else start-stop-daemon --start --quiet --pidfile $RUNFILES_PATH/$FCGI_USER.pid \ --chuid $FCGI_USER --exec /usr/bin/env -- spawn-fcgi \ -s $RUNFILES_PATH/$FCGI_USER.sock -f $FCGI_PROGRAM \ -u $FCGI_USER -g $FCGI_USER -C $PHP_FCGI_CHILDREN \ -P $RUNFILES_PATH/$FCGI_USER.pid 2>/dev/null chmod 400 $RUNFILES_PATH/$FCGI_USER.pid chmod 777 $RUNFILES_PATH/$FCGI_USER.sock fi done } # Function that stops all php daemons. d_stop() { for FCGI_USER in $FCGI_USER_LIST do echo -n " $FCGI_USER" start-stop-daemon --stop --quiet --pidfile $RUNFILES_PATH/$FCGI_USER.pid \ || echo -n " not running" if [ -f $RUNFILES_PATH/$FCGI_USER.pid ]; then rm $RUNFILES_PATH/$FCGI_USER.pid fi done } ACTION="$1" case "$ACTION" in start) echo -n "Starting $DESC: " d_start echo "." ;; stop) echo -n "Stopping $DESC: " d_stop echo "." ;; restart|force-reload) echo -n "Restarting $DESC: " d_stop sleep 2 d_start echo "." ;; *) echo "Usage: $NAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac exit 0
Updated by Anonymous over 17 years ago · 2 revisions