使用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>