uwsgi搭载nginx部署django

来源:互联网 发布:教师优化作风的意义 编辑:程序博客网 时间:2024/06/05 07:04


先安装 Nginx,可以参照前面的小节:使用RPM安装Nginx。

Nginx 配置

在 nginx.conf 上加入/修改,我的 server 配置如下(一切从简……):

01server {
02    listen       80;
03    server_name  115.28.0.89;
04    #server_name localhost;
05 
06    access_log /home/nowamagic/logs/access.log;
07    error_log /home/nowamagic/logs/error.log;
08 
09    #root         /root/nowamagic_venv/nowamagic_pj;
10    location / {
11        uwsgi_pass 127.0.0.1:8077;
12        #include uwsgi_params;
13        include /etc/nginx/uwsgi_params;
14        #uwsgi_pass 127.0.0.1:8077;
15        #uwsgi_param UWSGI_SCRIPT index;
16        #uwsgi_param UWSGI_PYHOME $document_root;
17        #uwsgi_param UWSGI_CHDIR  $document_root;
18   }
19   access_log off;
20}

注意保证配置里写的目录 /home/nowamagic/logs/ 和 /home/nowamagic/logs/ 存在,接下来就没啥问题了,Nginx 配置很简单。

uWSGI 配置

前面我们是直接使用命令行来启动 uWSGI,在实际部署环境中,我们常用的是配置文件的方式,而非命令行的方式。

我的 Django 程序目录:/root/nowamagic_venv/nowamagic_pj/

这里让 Nginx 采用 8077 端口与 uWSGI 通讯,请确保此端口没有被其它程序采用。

uWSGI 支持多种配置文件格式,比如 xml,ini,json 等等都可以。

1. xml 配置

请确定你在上一节中的django_wsgi.py文件已经存在了。新建一个XML文件:nowamagic_pj.xml,将它放在 /root/nowamagic_venv/nowamagic_pj 目录下

01<uwsgi>
02 <socket>127.0.0.1:8077</socket>
03 <listen>80</listen>
04 <master>true</master>
05 <pythonpath>/root/nowamagic_venv/nowamagic_pj</pythonpath>
06 <processes>1</processes>
07 <logdate>true</logdate>
08 <daemonize>/var/log/uwsgi.log</daemonize>
09 <plugins>python</plugins>
10</uwsgi>

然后执行命令:

1uwsgi -x /root/nowamagic_venv/nowamagic_pj/nowamagic_pj.xml
2or
3/usr/local/bin/uwsgi -x /root/nowamagic_venv/nowamagic_pj/nowamagic_pj.xml

加载指定的xml配置文件。当使用命令行参数时,可以使用简化命令“-x”。当然也可以不简写:

1uwsgi --xml /etc/nowamagic.xml

甚至如果在命令行的最后一个参数以“.xml”结尾,那么就隐含将加载该xml文件作为配置。

1uwsgi /etc/nowamagic.xml

有时候因各种环境问题,-x --xml 命令识别不了,可以使用下面的 ini 配置方式:

2. ini 配置

01[uwsgi]
02vhost = false
03plugins = python
04socket = 127.0.0.1:8077
05master = true
06enable-threads = true
07workers = 1
08wsgi-file = /root/nowamagic_venv/nowamagic_pj/nowamagic_pj/wsgi.py
09virtualenv = /root/nowamagic_venv
10chdir = /root/nowamagic_venv/nowamagic_pj

然后执行命令:

1uwsgi --ini /root/nowamagic_venv/nowamagic_pj.ini&

uwsgi 这样就启动起来了。如果无意外的话,就能在网上访问你的 Python 项目了。

小插曲

我在配置完 Nginx 和 uWSGI 之后,访问时显示 502 错误。查看 uWSGI 启动信息,发现这么一条:ImportError: No module named django.core.wsgi。

然后推断,我的 CentOS 上的 Python 版本是 2.4.3,然后进入 virtualenv,执行:

1python
2<<< import django
3<<< from django.core.wsgi import get_wsgi_application
4<<<

则没报错,因为我的虚拟环境里的 Python 版本是 2.7.5。推断成立,但是虚拟环境里的 Django 会默认调用外部环境的 Python。解决方法:在虚拟环境里 pip install django。

OK,问题解决,一切正常。

一些我在配置时用到的命令,省得你去搜索:

1. 关闭 uWSGI:

1killall  -9 uwsgi
2killall -s HUP /var/www/uwsgi 
3killall -s HUP /usr/local/bin/uwsgi

2. 列出端口占用情况:

1netstat -lpnt
原创粉丝点击