当前位置: 首页 > 工具软件 > djongo > 使用案例 >

配置uWSGI启动Django

芮雪风
2023-12-01

1.在虚拟环境下安装uUWSGI

(env_dj) [root@chen1995 MyWebWord]# pip3 install uwsgi

2.在项目的同级目录新建一个script目录,然后新建一个uwsgi.ini文件

(env_dj) [root@chen1995 MyWebWord]# mkdir script  # 新建目录
(env_dj) [root@chen1995 MyWebWord]# cd script     # 进入目录
(env_dj) [root@chen1995 script]# vim uwsgi.ini    # 新建uwsgi.ini

# 也可以在其他目录下新建uwsgi.ini文件,我这里直接在项目目录下创建,如下:
(env_dj) [root@chen1995 MyWebWord]# vim uwsgi.ini

3.配置uwsgi.ini文件
当配置socket或http,服务器地址时,这里有个坑需要注意–如果我们使用的是云服务器,这里要写私有IP----不要写公网IP

[uwsgi]
#套接字方式--使用nginx连接时使用,后面是Django程序所在服务器地址
# socket=192.168.0.214:8000

#http通信方式--直接做web服务器使用,后面是Django程序所在服务器地址
http=192.168.0.214:8000

#配置当前工作的项目目录
chdir=/home/myproject/MyWebWord

#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=MyWebWord/wsgi.py

# 进程数
processes=4

# 线程数
threads=2

# 开启主进程模式--uwsgi服务器的角色   uwsgi做主进程,关闭该进程其他相关进程也会被杀掉
master=True

# 存放进程编号的文件
pidfile=uwsgi.pid

# 后台运行,并输出日志,后面是日志文件位置,后台运行时看不见终端所以只能查看日志
daemonize=uwsgi.log

一般使用以上配置基本可以满足需求–但是uwsgi还有很多其他配置项如下:

# 并发的socket 连接数。默认为100。优化需要根据系统配置--未测试
listen = 4

# 如果想加载静态文件,则配置静态文件所在目录--未测试
static-map=/static=/home/myproject/MyWebWord/static

# 指定依赖的虚拟环境--未测试
virtualenv=/home/python/.virtualenvs/django_2.2_env

# 指定python环境路径    二选一     --未测试
pythonpath=/home/python/.virtualenvs/django_2.2_env/lib/python/site-packages
# pythonpath=/home/python/.virtualenvs/django_2.2_env/bin

#monitor uwsgi status 通过该端口可以监控 uwsgi 的负载情况--未测试
stats = 0.0.0.0:9192

# 启动uwsgi的用户名和用户组
uid=root
gid=root

# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096

# 设置自中断时间
harakiri=30

# 设置缓冲
post-buffering=4096

4.使用uwsgi启动web服务
启动时进入虚拟环境–进入项目目录–输入以下命令

uwsgi --ini uwsgi.ini

5.关闭uswsgi
关闭时进入虚拟环境–进入项目目录–输入以下命令

uwsgi --stop uwsgi.pid

或者使用pkill杀掉所有uwsgi进程:
pkill -f -9 uwsgi

6.Django的settings.py文件配置

# 配置为生产环境时关闭debug功能
DEBUG = False  

# 配置ALLOWED_HOSTS
ALLOWED_HOSTS = ['公网IP', 'localhost', '0.0.0.0:8000', '127.0.0.1']

7.使用脚本启动uWSGI
使用脚本前,需要先进入项目的虚拟环境后在执行脚本
启动uWSGI

import os
print('开始执行启动uWSGI')

print('执行命令: cd /home/myproject/MyWebWord')
os.popen(r"/home/myproject/MyWebWord")

start = os.popen('uwsgi --ini uwsgi.ini').read()
print('执行命令: uwsgi --ini uwsgi.ini')
print(start)

print('脚本执行完毕')

停止uWSG

import os
print('开始执行停止uWSGI')

print('执行命令: cd /home/myproject/MyWebWord')
os.chdir(r"/home/myproject/MyWebWord")

print('执行命令: uwsgi --stop uwsgi.pid')
stop = os.popen('uwsgi --stop uwsgi.pid').read()
print(stop)

print('脚本执行完毕')
 类似资料: