Zeray Rice

..

在 Fedora 上编译 Nginx + Mod_wsgi 部署 web.py

Warning: 已经可以用 uWSGI 来作为 CGI 了, 具体戳这里~

最近的一个项目用到了 web.py 部署服务器自然选择了 nginx , cgi 模块选用了 wsgi ..不过编译稍微麻烦了一点..但是还是给解决掉了~

先说句..按照网上的方法..即使是打过补丁的 mod_wsgi .. 在 python2.6+ 下依旧编译不通过.. 下面给出了如何解决在 python2.6/2.7 下编译 mod_wsgi 的方法..

(不仅仅需要打 http://www.thechikun.com/depo/patch-mod_wsgi.txt 这个补丁,还需要打 http://n2.nabble.com/file/n4600653/patch_mod_wsgi_python2.6 这个补丁..)

首先..需要下载 nginx mod_wsgi 两个的源码包

nginx: http://nginx.org/download/nginx-0.8.54.tar.gz

mod_wsgi(已经打过mod_wsgi修正补丁&&python2.6+支持不补丁): http://min.us/mvkywhD

然后 安装一堆依赖包:

1
yum install python-devel pcre-devel openssl openssl-devel

安装完之后开始编译 nginx :

1
./configure --add-module=/path/to/mod_wsgi/ --prefix=/usr/local/nginx
1
make && make install

安装之后..开始安装 mod_wsgi :

1
python setup.py --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf --sbin-path=/usr/local/nginx/sbin

到此时, nginx + mod_wsgi 安装完成~撒花~

不过还需要配置下 nginx , 在 /usr/local/nginx/conf/nginx.conf 中的 http { 改成

1
2
3
env HOME;
env PYTHON_EGG_CACHE=/tmp;
http \{

下面给出的配置是在这里Copy来的, 改下具体的文件就可以用了~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
        listen 80;
        server_name www.aaa.com
        index index.html index.htm default.html default.htm index.py;
        root /var/www/aaa/html;
        include wsgi_vars;

        location / {
                wsgi_pass /var/www/aaa/html/main.py;
                wsgi_pass_authorization off;
                wsgi_script_reloading on;
                wsgi_use_main_interpreter on;
        }

        location /static/ {
                expires 12h;
        }
}

参考资料:

[1] http://leven.co/blog/read/linux-nginx-install-wsgi-for-python

[2] http://zhwen.org/xlog/?p=515

什么?不能用?不可能..我已经在3个电脑上这么编译成功了….恩..再找找其他问题吧

Comments