Django在服务器上使用uwsgi部署

📒 笔记 · 02-12

使用Django作为后端,使用uwsgi部署在服务器上。


什么是 uWSGI?

uWSGI 是一个功能强大的、支持多种编程语言的应用服务器,它允许开发人员将他们的 Python、Perl、Ruby、PHP 等应用程序部署为 Web 服务器,并提供了丰富的特性和配置选项。

部署 Django 应用程序使用 uWSGI

1. 安装 uWSGI

pip install uwsgi

2. 配置 uWSGI

创建一个名为 uwsgi.ini 的配置文件。本文创建在django的根目录下(与manage.py同级)

文件中写入以下配置信息:

#配置域应该是uwsgi,记住这个不能丢,否则会报错
[uwsgi]
#uwsgi监听的socket,可以为socket文件或ip地址+端口号,用nginx的时候就配socket , 直接运行的时候配 http, http-socket = 127.0.0.1:8080
socket = 0.0.0.0:8000
#http = :8000
#指定项目的目录,在app加载前切换到当前目录(即manage.py所在的目录)
chdir = /root/data/DashApi/dashApi
# Django的wsgi文件,用来加载blog2/wsgi.py这个模块
module = dashApi.wsgi
# Python虚拟环境的路径
#home = /home/qbc/web/venv
# master 启动主进程。
master = true
# 最大数量的工作进程数
processes = 2
# 指定工作进程中的线程数
threads = 2
# 设置socket的权限
chmod-socket = 664
# 退出的时候是否清理环境,自动移除unix Socket 和 Pid 文件
vacuum = true
#日志文件路径
daemonize = ./uwsgi.log
# pid文件
pidfile = ./uwsgi.pid
# 指定缓冲区的大小
buffer-size = 65536

py-autoreload = 1

3. 修改django配置

在django的 setting.py 文件中增加配置项,设置允许访问的ip,* 为允许所有ip访问

ALLOWED_HOSTS = ['*']

4. 运行 uWSGI 服务器

uwsgi --ini uwsgi.ini

如果找不到uwsgi命令,则需要建立软链接。

uwsgi.ini配置文件可以先用http,然后使用ip+端口测试能否访问,访问成功后再改为使用socket,配置nginx访问。

5. 配置nginx

server {
        listen 80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
        server_name xxx.com;
        ssl_certificate xxxxxxx.cer;
    ssl_certificate_key xxxxxxxx.key;
    
    location / {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass 0.0.0.0:8000; # 这里就是uwsgi配置文件中写的socket
    }
}

重启nginx生效。

6. 使用域名查看访问是否成功。

停止运行

uwsgi --stop /path/to/your/uwsgi.pid

或者:

kill -SIGINT <uwsgi_pid>

或者:

kill -SIGTERM <uwsgi_pid>
Django
Theme Jasmine by Kent Liao