读书人

Webpy + Nginx with FastCGI筹建Web.py

发布时间: 2012-08-29 08:40:14 作者: rapoo

Webpy + Nginx with FastCGI搭建Web.py
这一节讲解的是如何使用Nginx和FastCGI搭建Web.py应用

环境依赖的软件包
location / { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; # [1] fastcgi_param PATH_INFO $fastcgi_script_name; # [2] fastcgi_pass 127.0.0.1:9002;}
对于静态文件可以添加如下配置:

location /static/ {    if (-f $request_filename) {    rewrite ^/static/(.*)$  /static/$1 break;    }}

注意: 地址和端口号可能会是不同的。

Spawn-fcgi
可以通过一下命令启动一个Spawn-fcgi进程:

spawn-fcgi -d /path/to/www -f /path/to/www/index.py -a 127.0.0.1 -p 9002

启动和关闭的命令
启动:

#!/bin/shspawn-fcgi -d /path/to/www -f /path/to/www/index.py -a 127.0.0.1 -p 9002

关闭:

#!/bin/shkill `pgrep -f "python /path/to/www/index.py"`

Note: 你可以随意填写地址和端口信息,但是一定需要和Nginx配置文件相匹配。

Hello world!
讲下面的代码保存为index.py(或者任何你喜欢的),注意,使用Nginx配置的话,web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)这一行代码是必须的。

#!/usr/bin/env python# -*- coding: utf-8 -*-import weburls = ("/.*", "hello")app = web.application(urls, globals())class hello:    def GET(self):        return 'Hello, world!'if __name__ == "__main__":    web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)    app.run()

注意: 同样需要给代码设置权限,代码如下chmod +x index.py。

运行
打开一个 spawn-fcgi 进程.
打开 Nginx.
如果需要检查应用程序是否运行,使用ps aux|grep index.py可以很容易的查看。

重启nginx配置:

/path/to/nginx/sbin/nginx -s reload

停止nginx:

/path/to/nginx/sbin/nginx -s stop

注意:运行后可访问http://localhost访问网站,更多信息可以去参考nginx官方文档。

读书人网 >Web前端

热点推荐