存档

文章标签 ‘php-cgi’

Nginx、php-cgi启动停止脚本

2009年12月18日 admin 2 条评论

为了方便Nginx和php-cgi的启动停止写了一个脚本,将下面脚本保存为/etc/init.d/nginxd,支持service nginxd start|stop|restart|reload|status

注意:标亮的行可能需要按你的环境修改

#!/bin/sh

# source function library
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

RETVAL=0
prog="nginx"

nginxDir=/usr/local/nginx
nginxd=$nginxDir/sbin/nginx
nginxConf=$nginxDir/conf/nginx.conf
nginxPid=$nginxDir/logs/nginx.pid

nginx_check()
{
	if [[ -e $nginxPid ]]; then
		ps aux |grep -v grep |grep -q nginx
		if (( $? == 0 )); then
			echo "$prog already running..."
			exit 1
		else
			rm -rf $nginxPid &> /dev/null
		fi
	fi
}

phpcgi_check()
{
	netstat -tunlp |grep -q php-cgi
	if (( $? == 0 )); then
		echo "php-cgi already running..."
		return 1
	fi
}

phpcgi_start()
{
	phpcgi_check
	if (( $? == 0 )); then
		echo -n $"Starting php-cgi:"
		daemon /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nobody -g nobody -C 64 -f /usr/bin/php-cgi
		RETVAL=$?
		echo
                [ $RETVAL = 0 ] && touch /var/lock/subsys/php-cgi
                return $RETVAL
	fi
}

phpcgi_stop()
{
	echo -n $"Stopping php-cgi:"
	phpcgi_pid=`netstat -tnlp |grep php-cgi |awk '{print $7}' |awk -F'/' '{print $1}'`
        kill -9 $phpcgi_pid &>/dev/null
        RETVAL=$?
	killall -9 php-cgi &>/dev/null
	RETVAL=$RETVAL+$?
	if (( $RETVAL == 0 )); then
		echo_success
	else
		echo_failure
	fi
        echo
	[ $RETVAL = 0 ] && rm -f /var/lock/subsys/php-cgi
}

start()
{
	nginx_check
	if (( $? != 0 )); then
		true
	else
		echo -n $"Starting $prog:"
		daemon $nginxd -c $nginxConf
		RETVAL=$?
		echo
		[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
		return $RETVAL
	fi
}

stop()
{
	echo -n $"Stopping $prog:"
	killproc $nginxd
	RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx $nginxPid
}

reload()
{
	echo -n $"Reloading $prog:"
	killproc $nginxd -HUP
	RETVAL=$?
        echo
}

case "$1" in
        start)
		phpcgi_start
                start
                ;;
        stop)
		phpcgi_stop
                stop
                ;;
        restart)
		phpcgi_stop
                stop
		phpcgi_start
                start
                ;;
        reload)
                reload
                ;;
        status)
                status $prog
                RETVAL=$?
                ;;
        *)
                echo $"Usage: $0 {start|stop|restart|reload|status}"
                RETVAL=1
esac
exit $RETVAL