使用spawn-fcgi启动webpy的fastcgi方式,前端是nginx
* 服务器环境:FreeBSD 7.1
* webpy-0.32
* spawn-fcgi v1.6.0
* nginx/0.6.36
* Flup
参照官方网站的例子行不通。
spawn-fcgi没有 -d参数,chroot的参数是-c 使用后会提示stderr输出错误。
修改项目主程序:
1. if __name__==”__main__”:
2. #关掉stderr的输出位置
3. import sys
4. sys.stderr = None
5. #fastcgi的方式运行app
6. web.wsgi.runwsgi = lambda func, addr=None:\
7. web.wsgi.runfcgi(func, addr)
8. app.run()
使用spawn-fcgi启动fastcgi进程:
/usr/local/bin/spawn-fcgi -u www -g www -f /www/zcut/zcut.py -a 127.0.0.1 -p 8032 -F 5 -P /tmp/zcut.pid
参数说明:
-f 指定调用 FastCGI 的进程的执行程序位置,根据系统上所装的 PHP 的情况具体设置
-a 绑定到地址 addr
-p 绑定到端口 port
-F 指定产生的 FastCGI 的进程数
-P 指定产生的进程的 PID 文件路径
-u 和 -g FastCGI 使用什么身份运行
将进程PID保存下来方便关闭进程:
kill `cat /tmp/zcut.pid`
启动后用sockstat -4 查看到类似下列信息,用ps也可以,习惯问题
www python 15274 0 tcp4 127.0.0.1:8032
然后配置nginx指向webpy的fastcgi端口
location / {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_pass 127.0.0.1:8032;
}
配置静态目录:
location /static/ {
if (-f $request_filename) {
rewrite ^/static/(.*)$ /static/$1 break;
}
}