uWSGI其三:uWSGI搭配Nginx使用
2016-03-17 15:02
555 查看
http://www.nowamagic.net/academy/detail/1330334
上一篇介绍了uWSGI来部署Django程序,但在在生产环境中单单只有uWSGI是不够的,Nginx是必不可少的工具。
先安装Nginx,可以参照前面的小节:使用RPM安装Nginx。
注意保证配置里写的目录/home/nowamagic/logs/和/home/nowamagic/logs/存在,接下来就没啥问题了,Nginx配置很简单。
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目录下
然后执行命令:
加载指定的xml配置文件。当使用命令行参数时,可以使用简化命令“-x”。当然也可以不简写:
甚至如果在命令行的最后一个参数以“.xml”结尾,那么就隐含将加载该xml文件作为配置。
有时候因各种环境问题,-x--xml命令识别不了,可以使用下面的ini配置方式:
2.ini配置
然后执行命令:
uwsgi这样就启动起来了。如果无意外的话,就能在网上访问你的Python项目了。
然后推断,我的CentOS上的Python版本是2.4.3,然后进入virtualenv,执行:
则没报错,因为我的虚拟环境里的Python版本是2.7.5。推断成立,但是虚拟环境里的Django会默认调用外部环境的Python。解决方法:在虚拟环境里pipinstalldjango。
OK,问题解决,一切正常。
1.关闭uWSGI:
2.列出端口占用情况:
viewsource
print?
上一篇介绍了uWSGI来部署Django程序,但在在生产环境中单单只有uWSGI是不够的,Nginx是必不可少的工具。
先安装Nginx,可以参照前面的小节:
Nginx配置
在nginx.conf上加入/修改,我的server配置如下(一切从简……):01 | server{ |
02 | listen 80 ; |
03 | server_name 115.28 . 0.89 ; |
04 | #server_namelocalhost; |
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 | #includeuwsgi_params; |
13 | include / etc / nginx / uwsgi_params; |
14 | #uwsgi_pass127.0.0.1:8077; |
15 | #uwsgi_paramUWSGI_SCRIPTindex; |
16 | #uwsgi_paramUWSGI_PYHOME$document_root; |
17 | #uwsgi_paramUWSGI_CHDIR$document_root; |
18 | } |
19 | access_logoff; |
20 | } |
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> |
1 | uwsgi-x/root/nowamagic_venv/nowamagic_pj/nowamagic_pj.xml |
2 | or |
3 | /usr/ local /bin/uwsgi-x/root/nowamagic_venv/nowamagic_pj/nowamagic_pj.xml |
1 | uwsgi--xml/etc/nowamagic.xml |
1 | uwsgi/etc/nowamagic.xml |
2.ini配置
01 | [uwsgi] |
02 | vhost = false |
03 | plugins = python |
04 | socket = 127.0 . 0.1 : 8077 |
05 | master = true |
06 | enable - threads = true |
07 | workers = 1 |
08 | wsgi - file = / root / nowamagic_venv / nowamagic_pj / nowamagic_pj / wsgi.py |
09 | virtualenv = / root / nowamagic_venv |
10 | chdir = / root / nowamagic_venv / nowamagic_pj |
1 | uwsgi--ini/root/nowamagic_venv/nowamagic_pj.ini& |
小插曲
我在配置完Nginx和uWSGI之后,访问时显示502错误。查看uWSGI启动信息,发现这么一条:ImportError:Nomodulenameddjango.core.wsgi。然后推断,我的CentOS上的Python版本是2.4.3,然后进入virtualenv,执行:
1 | python |
2 | <<< import django |
3 | <<< from django.core.wsgi import get_wsgi_application |
4 | <<< |
OK,问题解决,一切正常。
附
一些我在配置时用到的命令,省得你去搜索:1.关闭uWSGI:
1 | killall-9uwsgi |
2 | killall-sHUP/var/www/uwsgi |
3 | killall-sHUP/usr/ local /bin/uwsgi |
1 | netstat -lpnt |
相关文章推荐
- 【1】Nginx安装方法
- Zookeeper的功能以及工作原理
- nginx php fastcgi
- nginx的基本配置
- Centos6.X下安装php nginx mysql 环境
- Nginx负载均衡配置实例详解
- Nginx+PHP+Swfupload 上传大文件 mac重启nginx
- nginx常用变量
- nginx具体的配置以及参数说明
- CentOS 6.5 安装 Nginx 1.7.8 教程
- nginx[未完待续]
- nginx fastcgi 超时问题解决记录
- 基于nginx和uWSGI在Ubuntu上部署Djan
- Ubuntu上简单搭建nginx
- 浅谈Nginx负载均衡原理与实现
- 如何在 FreeBSD 10.2 上安装使用 Nginx 的 Ghost
- 简单配置nginx使之支持pathinfo
- LNMP环境下Nginx、PHP、MySQL优化
- CentOS 6.6编译安装Nginx1.6.2+MySQL5.6.21+PHP5.6.3
- Nginx PHP 使用 limit_req,limit_conn 限制并发,外加白名单