Webpy + Nginx with FastCGI搭建Web.py

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

环境依赖的软件包

  • Nginx 0.8.* or 0.7.* (需要包含fastcgi和rewrite模块)。
  • Webpy 0.32
  • Spawn-fcgi 1.6.2
  • Flup

注意:Flup是最常见的忘记装的软件,需要安装

更老的版本应该也可以工作,但是没有测试过,最新的是可以工作的

一些资源

Notes

  • 你可以重命名index.py为任何你想要的文件名。
  • /path/to/www 为代码路径。
  • /path/to/www/index.py为python代码的完整路径。

Nginx 配置文件

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/sh
spawn-fcgi -d /path/to/www -f /path/to/www/index.py -a 127.0.0.1 -p 9002

关闭:
#!/bin/sh
kill `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 web

urls = ("/.*", "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。

运行

  1. 打开一个 spawn-fcgi 进程.
  2. 打开 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官方文档。

相关推荐: lnmp一键包nginx加装ngx_cache_purge缓存清理模块

之前一直用Kangle作为前端反代服务器,后台设置方便,但是在自定义缓存这块设置起来不是这么的灵活好像是要搭配他们自家easypanel才能自定义缓存之类的功能。如果还要另外装一个程序来实现更强大的缓存功能即CDN效果的话那就背离我最开始选择kangle作为反…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论