Linux 下如何配置 webpy + Nginx + Fastcgi?
配置webpy与nginx
使用我们提供的nginx_uwsgi.py文件可以很容易的把nginx和webpy链接起来,具体看下面的步骤:
第一步:下载 nginx_uwsgi.py文件,并与您的webpy主程序放在同一个目录里。 到Github下载
第二步:在您的webpy程序中导入此模块,如:
import nginx_uwsgi
第三步:修改nginx_uwsgi.py文件中的SERVER_PORT为你想要的端口号,并在nginx中把请求转发到此端口(关于Nginx的配置请参考其它文档)。
然后启动你的webpy程序即可,如: python webpy_app.py
另外,nginx_uwsgi.py文件中还有两个可以选配的参数,FOOT_PRINTS_PATH是访问日志文件的路径 名,ERROR_LOG_PATH是错误日志文件的路径名,推荐至少使用ERROR_LOG_PATH(给它一个字符串的文件路径名,比如”/tmp /my-app-errors.log”)。
完整示例
如果拿webpy.org首页上的代码做为示例的话,添加nginx_uwsgi后的代码只比官方演示代码多一行,如:
import web
import nginx_uwsgi
urls = (
'/(.*)', 'hello'
)
app = web.application(urls, globals())
class hello:
def GET(self, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!'
if __name__ == "__main__":
app.run()
使用FastCGI
当然,添加了nginx_uwsgi只代表你的webpy请求是经nginx转发的,这在真实的项目中是不实用的,您必须搭配如FastCGi这样的程序同时启动多个进程才行,因此我们在这里教大家如何同时使用FastCGI
第一步:安装FastCGI,详见 http://www.fastcgi.com/drupal/
第二步:修改nginx配置文件使用FastCGI,如以下代码 (把“55555”改为您自己的端口号, 如果提示没有uwsgi_params文件,请安装最新版本的nginx):
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:55555;
}
第三步: 重启nginx服务器。
第四步: 打开spawn-fcgi.sh文件(与nginx_uwsg.py文件同时下载的),修改以下配置:
PWD="your webpy path" #like: /opt/my-site
APPNAME="your webpy app name" #like: app.py
SERVERPORT="55555"
PROCESSAMOUNT="8"
PIDFILE="/var/run/your-project-name.pid"
其中各个参数的解释如下:
PWD: 你webpy程序的所在目录,最后不要加“/”。
APPNAME: 您webpy主程序的文件名称,比如app.py。
SERVERPORT: 您的webpy程序使用的端口号,与nginx_uwsgi.py中配置的相同。
PROCESSAMOUNT: 启动进程数量,数量越多能够同时处理的请求数就越大,最少为1。
PIDFILE: 保存webpy程序进程ID的文件地址,用于关闭程序。
第五步:给您的webpy程序添加可执行权限,如:
sudo chown -R www-data:www-data path #其中path为您的程序所在目录
chmod +x app.py #其中app.py是您的webpy主程序
第六步:启动FastCGI,如 sudo sh spawn-fcgi.sh start
(杀死进程用: sudo sh spawn-fcgi.sh stop
)
本程序已经成功用于我们的第一个外包项目 http://www.dianxinos.com ,如有bug请反馈到豆瓣小组,谢谢!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。