说明
django自带的测试服务器,生产环境在安全和稳定性等方面都会存在问题,在生产环境采用比较多的部署方式是 nginx+uwsgi
部署。
nginx作为前端服务器,负责接收所有的请求。对于静态文件,nginx就可以处理,支持高并发。
对于动态请求,nginx 交给 uWSGI 服务器处理。uWSGI 是实现了uwsgi 和 WSGI 两种协议的web服务器,uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information)。
准备工作
基础安装1
2
3pip install uwsgi
yum intall nginx
python manage.py runserver
保证nginx
可以正常访问,django
项目可以通过网页正常访问settings.py
文件中修改1
Allow_host =['172.16.0.1', 'localhost',]
安装好之后在 settigs.py 文件的同级目录下,增加配置文件 uwsgi.ini
uwsgi配置文件
more uwsgi.ini1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19[uwsgi]
chdir=/mnt/www/pachong #项目目录
module=CMDB.wwsgi:application #指定项目的application
socket=/mnt/www/django_uwsgi.sock #指定sock文件路径
# socket=127.0.0.1:3309 #也可以使用端口
#http=127.0.0.1:3309 #作为单独服务器可以使用 http
workers=4 #指定进程数
pidfile=/mnt/www/uwsgi.pid
http://0.0.0.0:8080 #指定IP 端口
static-map=/static = /mnt/www/pkcong/arry/static #指定静态文件
uid=root
gid=root #指定启动的用户名和组
master=true #启用主进程
vacuum=true #自动移除unix socket和pid文件 服务终止时
thunder-lock=true #序列化接受的内容 如果可能的话
enable-thread=true #启用线程
harakiri=30 #设置自中断时间
post-buffering=4096 #设置缓冲
daemonize=/mnt/www/django_uwsgi.log #设置日志目录
启动1
uwsgi --ini uwsgi.ini
nginx配置文件
默认配置文件位于 /etc/nginx/conf/nginx.conf, 可以通过 nginx -t 查看1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20server{
listen 80;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /path/to/project/media;
}
location /static {
alias /mnt/www/pachong/arya/static;
}
location / {
uwsgi_pass unix:///mnt/www/django_uwsgi.sock; #和前面uwsgi一致,可以为ip+端口
include uwsgi_params;
uwsgi_read_timeout 30;
}
}
接下来启动 nginx,然后访问 nginx 监听的 80 端口即可。