uwsgi搭载nginx部署django
来源:互联网 发布:教师优化作风的意义 编辑:程序博客网 时间:2024/06/05 07:04
先安装 Nginx,可以参照前面的小节:使用RPM安装Nginx。
Nginx 配置
在 nginx.conf 上加入/修改,我的 server 配置如下(一切从简……):
01
server {
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>
然后执行命令:
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
加载指定的xml配置文件。当使用命令行参数时,可以使用简化命令“-x”。当然也可以不简写:
1
uwsgi --xml /etc/nowamagic.xml
甚至如果在命令行的最后一个参数以“.xml”结尾,那么就隐含将加载该xml文件作为配置。
1
uwsgi /etc/nowamagic.xml
有时候因各种环境问题,-x --xml 命令识别不了,可以使用下面的 ini 配置方式:
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&
uwsgi 这样就启动起来了。如果无意外的话,就能在网上访问你的 Python 项目了。
小插曲
我在配置完 Nginx 和 uWSGI 之后,访问时显示 502 错误。查看 uWSGI 启动信息,发现这么一条:ImportError: No module named django.core.wsgi。
然后推断,我的 CentOS 上的 Python 版本是 2.4.3,然后进入 virtualenv,执行:
1
python
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:
1
killall -9 uwsgi
2
killall -s HUP /var/www/uwsgi
3
killall -s HUP /usr/
local
/bin/uwsgi
2. 列出端口占用情况:
1
netstat
-lpnt
- uwsgi搭载nginx部署django
- Django+Nginx+uwsgi部署
- nginx uwsgi django部署
- nginx uwsgi 部署django
- django nginx+uwsgi部署
- Django+uWsgi+nginx部署
- Nginx+uWSGI+Django部署
- nginx+uwsgi部署django
- nginx+uwsgi部署django
- nginx+uwsgi 部署django
- Django nginx uwsgi部署
- uwsgi+django+nginx部署
- nginx+uwsgi+django部署
- nginx + uwsgi + django部署
- DJango+UWSgi+Nginx部署
- uwsgi+nginx部署Django
- Django+Nginx+uWSGI部署
- Nginx+uWSGI部署Django应用
- python的包
- React-native防多次重复点击
- leetcode-456. 132 Pattern
- 解决新建maven项目速度慢的问题
- 在感觉项目代码的构架不行的时候,你们会怎么办?
- uwsgi搭载nginx部署django
- ArrayList、LinkedList、Vector的区别
- javascript中with的用法
- OPENGL
- jquery笔记
- js获取当前城市,并根据当前城市获得当地天气
- fastjson使用遇到的问题
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM
- 移动端触摸事件