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

原文地址:https://www.cnblogs.com/steinven/p/9271467.html