Bootstrap

Django部署uwsgi

开发环境

云服务器(Ubuntu),能run的Django项目文件

知识补充

WSGI (Web Server Gateway Interface) Web服务器网关接口,是python应用程序或框架和web服务器之间的一种接口,被广泛使用。

uWSGI定义:uWSGI是WSGI的一种,它实现了http协议、WSGI协议以及uwsgi协议(在实际应用中主要以学习配置为主)

在开发和测试环境中使用python manage.py runserver
开发结束后,使用WSGI在一个高效稳定的环境中运行完善的项目代码

uWSGI安装

服务器中执行 pip3 install uwsgi 即可
检查是否安装成功
pip3 freeze | grep -i ‘uwsgi’
如果成功安装的话,则会输出uWSGI版本;否则可能就是安装失败了,安装失败的原因可能是系统中没有gcc或者是gcc版本太高,详情请移步:pip安装uwsgi报错问题

配置uWSGI

  • 添加配置文件:项目同名文件夹/uwsgi.ini
    如:mysite1/mysite1/uwsgi.ini
    有如下配置项:

    • 文件以[uwsgi]开头,

    • 套接字方式的IP地址:端口号【此模式需要有nginx,如果只用uwsgi的话可以忽略此项】
      socket=127.0.0.1:8000

    • Http通信方式的IP地址:端口号【如果仅使用uwsgi的话建议写成0.0.0.0:8000】
      http=127.0.0.1:8000

    • 项目当前工作目录
      chdir=/home/test/…/my_project

    • 项目中wsgi.py文件的目录,相对于当前工作目录(就是上一个目录下的同名文件夹)
      wsgi-file=my_project/wsgi.py

    • 进程个数
      process=4

    • 每个进程的线程个数
      threads=2

    • 服务的pid记录文件
      pidfile=uwsgi.pid

    • 服务的目录文件位置(代表是否后台启动以及启动的日志输出在哪里)
      daemonize=uwsgi.log

    • 开启主进程管理模式
      master=true

    • 项目中静态文件static的路径
      static-map = /static=/home/…/zy_ds/static

下面是我自己的配置文件:
在这里插入图片描述

代码展示(可以直接拷贝)

[uwsgi]
http=0.0.0.0:8000
chdir=/home/wanghuimeng/python_SFTP/django_object/zy_ds_files/zy_ds
wsgi-file=zy_ds/wsgi.py
process=4
threads=2
pidfile=uwsgi.pid
daemonize=uwsgi.log
master=True
static-map = /static=/home/wanghuimeng/python_SFTP/django_object/zy_ds_files/zy_ds/static

特殊说明:
Django的settings.py需要做如下配置:
1,修改settings.py将DEBUG=True改为False(出于安全考虑)
2,修改settings.py将ALLOWED_HOSTS=[]改为ALLOWED_HOSTS=[‘网站域名’]或者[‘公网IP’]

uWSGI的运行管理

启动uwsgi
cd 到 uWSGI 配置文件所在目录
uwsgi --ini uwsgi.ini
如下:启动成功(图片来自于网上某位大佬)。
在这里插入图片描述

停止uwsgi
cd 到 uWSGI 配置文件所在目录
uwsgi --stop uwsgi.pid
如下:
在这里插入图片描述
整个启动和停止过程都要拿ps亲眼看到才行

uWSGI的运行说明

1,无论是启动还是关闭,都要执行ps aux|grep ‘uwsgi’ 确认是否符合预期
2,当uwsgi启动后,当前django项目的程序已变成后台守护进程,在关闭当前终端时此进程也不会停止
3,启动成功后,进程在后台执行,所有日志均输出在配置文件所在目录的uwsgi.log中
4,Django中代码有任何修改,都需要重启uwsgi(重启即为先关闭,再开启)

;