uwsgi+nginx部署django项目

2020-06-16 10:17:42 浏览数 (1)

正常我们写完一个 django 项目是需要放到服务器上运行,在本地开发你可以使用django自带的测试服务器 runserver 启动就行,这个 runserver 只是开发的时候使用,它的性能非常不好,放到线上服务器需要用其他的方式部署 django ,常见的部署方式是 uwsgi nginx 。

先了解下一些术语的意思,知道一些东西是要做什么用的。

WSGI只是一个协议,一个约定。是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。

uWSGI,是实现了 WSGI 协议的一个web服务器。Nginx 中 HttpUwsgiModule的作用是与 uWSGI 服务器进行交换。WSGI 是一种 Web 服务器网关接口。它是一个 Web 服务器(如 nginx ,uWSGI 等服务器)与web应用(如用 Django 框架写的程序)通信的一种规范。

Nginx 分配客户端的请求连接,端口转发, 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

具体的部署流程(不包括python虚拟环境的安装,以及数据库等的相关配置)

1.在对应的python环境(项目使用的python环境)安装uwsgi

代码语言:javascript复制
pip install uwsgi

2..写一个项目的uwsgi的配置文件uwsgi.ini

代码语言:javascript复制
[uwsgi]
# 项目目录
chdir=/root/test_uwsgi/Stuent_Manage_Systerm/django1703zz/day5

# 指定项目的application
module=day5.wsgi:application

socket=0.0.0.0:8000
# set the max allowed size of websocket messages (in Kbytes, default 1024)
websocket-max-size = 2048

# 直接通过uwsgi访问
#http-socket = 192.168.2.120:4040

# 进程个数
# systemd 模式下要关闭master
#master=true
# systemd 模式下要关闭master
workers=2
enable-threads=true
threads= 5

# 重启或者退出时不等线程退出
#no-threads-wait=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 设置自中断时间,没有websocket情况下建议开启
#harakiri=30

uid=root
gid=root

# PID文件 日志文件
#pidfile=/home/admin/zxy/Cyberrange/%n.pid
disable-logging = false
#logto2=/opt/Cyberrange/log/%n.log
# systemd 模式下要关闭daemonize
#daemonize=/opt/Cyberrange_online/log/%n.log
# systemd 模式下要关闭daemonize

# 序列化接受的内容,如果可能的话
thunder-lock=true
# 设置缓冲
post-buffering=4096

3.启动uwsgi

代码语言:javascript复制
uwsgi --ini uwsgi.ini

4.安装nginx

代码语言:javascript复制
yum install nginx

5.编写nginx对应的配置文件,在 /etc/nginx/conf.d文件夹下创建一个文件 8090.conf

代码语言:javascript复制
server {
          listen    8090;    #  在浏览器中输入的端口号
          server_name  192.168.1.20;  # 浏览器中输入的域名
          #  项目的静态文件配置
          location /static/ {
              root /root/test_uwsgi/Stuent_Manage_Systerm/django1703zz/day5;
          }
          location = /favicon.ico {
              root /root/test_uwsgi/Stuent_Manage_Systerm/django1703zz/day5/static;
    }


          location / {
              include uwsgi_params;
              uwsgi_pass 127.0.0.1:8000;  # uwsgi启动的端口
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              uwsgi_read_timeout 86400s;
              uwsgi_send_timeout 86400s;
              client_max_body_size    1000m;
              #proxy_redirect off;
              proxy_set_header X-Real-IP $remote_addr;
          }
          error_page 404 /404.html;
              location = /40x.html {
          }

          error_page 500 502 503 504 /50x.html;
              location = /50x.html {
          }
      }

6.启动nginx

代码语言:javascript复制
service nginx start

本教程使用的环境情况为:

代码语言:javascript复制
centos 7.6
python3.6
uwsig 2.0.18
nginx/1.12.2

0 人点赞