Django + Uwsgi + Nginx 的生产环境部署
Posted 秒年度
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django + Uwsgi + Nginx 的生产环境部署相关的知识,希望对你有一定的参考价值。
一、安装uwsgi
uwsgi是python的一个模块,安装uwsgi只需简单的pip命令就可以了pip3 install uwsgi
二、基于uwsgi+django的实现
使用命令启动uwsgi
- 切换至django项目
命令测试启动
uwsgi --http 127.0.0.1:8000 --file teacher/wsgi.py --static-map=/static=static
参数说明:- --http 这个就和runserver一样指定IP 端口
- --file 这个文件就里有一个反射,如果你在调用他的时候没有指定Web Server就使用默认的
--static 做一个映射,指定静态文件
三、使用uwsgi配置文件启动django项目
新建script目录,创建uwsgi.ini
文件,配置如下:
# uwsig使用配置文件启动
[uwsgi]
# 项目目录
chdir=/home/eric/blog/DjangoBlog
# 指定项目的application
module=DjangoBlog.wsgi:application
# 指定sock的文件路径
socket=/home/eric/blog/script/uwsgi.sock
# 进程个数
workers=5
pidfile=/home/eric/blog/script/uwsgi.pid
# 指定IP端口
http=0.0.0.0:65321
# 指定静态文件
static-map=/static=/home/eric/blog/DjangoBlog/collectedstatic
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/home/eric/blog/script/uwsgi.log
启动项目:
uwsgi --ini wsgi.ini
至此,uwsgi+django就完美结合了,但是,光有uwsgi还不够,uwsgi处理动态请求能力高,但对于静态请求(如static文件,css,js文件等)处理能力差,此时就要结合nginx一起使用
四、安装Nginx
sudo apt-get install nginx
编辑配置文件
sudo vim /etc/nginx/sites-available/blog.conf
server {
listen 8000;
server_name 116.62.196.154;
charset utf-8;
client_max_body_size 75M;
location /static {
alias /home/eric/blog/DjangoBlog/collectedstatic;
}
location / {
uwsgi_pass unix:/home/eric/blog/script/uwsgi.sock;
include /etc/nginx/uwsgi_params;
}
}
激活网站:
sudo ln -s /etc/nginx/sites-available/zqxt.conf /etc/nginx/sites-enabled/blog.conf
测试配置语法问题:
sudo service nginx configtest 或 /path/to/nginx -t
重启 nginx 服务器:
sudo service nginx reload 或 sudo service nginx restart 或 /path/to/nginx -s reload
以上是关于Django + Uwsgi + Nginx 的生产环境部署的主要内容,如果未能解决你的问题,请参考以下文章
通过 Nginx 的 uwsgi + django - uwsgi 设置/生成?