前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >uwsgi+nginx部署django项目

uwsgi+nginx部署django项目

作者头像
用户4945346
发布2020-06-16 10:17:42
1.1K0
发布2020-06-16 10:17:42
举报
文章被收录于专栏:pythonista的日常

正常我们写完一个 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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 pythonista的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档