使用spawn-fcgi运行php-cgi

1. 下载spawn-fcgi 二进制可执行程序,可以单独下载包(网上找)

    ubuntu下直接用sudo apt-get install spawn-fcgi

 

2. 安装php

    apt-get install php5-cgi php5-mysql php5-common php5-gd php5-curl php5-xcache php5-memcached php5-mcrypt php5-cli
    也可以单独下载安装,注意包依赖

3. 安装nginx

apt-get install nginx

 

4. php启动脚本, man spawn-fcgi 查看参数意思

   有两种:

   1) /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 2222 -u ${user} -g ${group} -f /usr/bin/php5-cgi -C 128

        指定ip地域、端口号

        而对应nginx 运行php配置为:

        fastcgi_pass   127.0.0.1:2222;

 

    2) /usr/local/bin/spawn-fcgi -u ${user} -g ${group} -s /tmp/php.sock -f /usr/bin/php5-cgi -P ${pidpath} 1>/dev/null

        指定sock文件、进程号。这个会很好地利于编写重启脚本。

        而对应nginx 运行php配置为:

        fastcgi_pass    unix:/tmp/php.sock;

 加3)当spawn-fcgi开启两个端口,利用nginx的upstream负载均衡php程序到不同的fcgi端口上面时,则这样设置:

         nginx 负载均衡配置

     upstream   spawn {
       # ip_hash;
         server 127.0.0.1:9000 max_fails=0 fail_timeout=30s;
         server 127.0.0.1:9001 max_fails=0 fail_timeout=30s;
       }

       而对应nginx 运行php配置为:

       fastcgi_pass spaw;

 

附带运行php脚本:

1.

#!/bin/bash
PHP_SCRIPT="/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 2222 -u www-data -g www-data -f /usr/bin/php5-cgi -C 128"
FASTCGI_USER=www-data
RETVAL=0
case "$1" in
    start)
      su - $FASTCGI_USER -c "$PHP_SCRIPT"
      RETVAL=$?
  ;;
    stop)
      killall -9 php5-cgi
      RETVAL=$?
  ;;
    restart)
      killall -9 php5-cgi
      su - $FASTCGI_USER -c "$PHP_SCRIPT"
      RETVAL=$?
  ;;
    *)
      echo "Usage: php {start|stop|restart}"
      exit 1
  ;;
esac
exit $RETVAL

 

2.

#! /bin/bash
pidpath="/tmp/spawn_php.pid"
user="daemon"
group="daemon"
phpcgi="/usr/local/php/bin/php-cgi"
PHP_FCGI_CHILDREN=50
PHP_FCGI_MAX_REQUESTS=50000

echo_ok ()
{
        echo -ne "/033[33C ["
        echo -ne "/033[32m"
        echo -ne "/033[1C OK"
        echo -ne "/033[39m"
        echo -ne "/033[1C ]/n"
}

start_spawn()
{
        env - PHP_FCGI_CHILDREN=${PHP_FCGI_CHILDREN} PHP_FCGI_MAX_REQUESTS=${PHP_FCGI_MAX_REQUESTS} /usr/local/bin/spawn-fcgi -u ${user} -g ${group} -s /tmp/php.sock -f ${phpcgi} -P ${pidpath} 1>/dev/null
        echo -ne "php-cgi start successfull"
        echo_ok
}


case "$1" in
start)
        if [ ! -f $pidpath ]
        then
                start_spawn
        else
                pidcount=`ps -ef |grep ${phpcgi}|wc -l`
                if [ "$pidcount" -gt "1" ]
                then
                        echo -ne "php  already  running  "
                        echo_ok
                else
                        rm -f $pidpath
                        rm -f /tmp/php.sock
                        start_spawn
                fi
        fi
        ;;
stop)
        pid=`cat ${pidpath} 2>/dev/null`
        kill ${pid} 2>/dev/null
        rm -f ${pidpath} 2>/dev/null
        rm -f /tmp/php.sock 2>/dev/null
        echo -ne "php-cgi  stop successfull"
        echo_ok
        ;;
restart)
        pid=`cat ${pidpath} 2>/dev/null`
        kill ${pid} 2>/dev/null
        rm -f ${pidpath} 2>/dev/null
        rm -f /tmp/php.sock 2>/dev/null
        echo -ne "php-cgi  stop successfull"
        echo_ok

        if [ ! -f $pidpath ]
        then
                start_spawn
        else
                pidcount=`ps -ef |grep ${phpcgi}|wc -l`
                if [ "$pidcount" -gt "1" ]
                then
                        echo -ne "php  already  running  "
                        echo_ok
                else
                        rm -f $pidpath
                        rm -f /tmp/php.sock
                        start_spawn
                fi
        fi
        ;;
*)
echo "Usage: $0 {start|stop|restart}"
        exit 1
esac
exit

   

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值