环境准备(依赖)
- Linux
- Django 项目
- Python3
- Nginx
- uwsgi
项目准备
- 安装依赖文件
python3 -m pip install -r requirements.txt
- 对有依赖服务的服务配置进行修改
- 如 MySQL
- 对有模型数据类进行迁移并生成表
- 启动
python3 manage.py runserver
没有异常数据
uwsgi 准备
在 Django 项目根目录下创建 uwsgi.ini
文件:
# uwsgi.ini file
[uwsgi]
# 服务监听端口
http = :8000
# Django 根目录路径
chdir = xxx
# Django 模块路径
module = web.wsgi
# 启用主进程
master = true
# 开启进程数
processes = 5
# 开启线程数
threads = 5
# 服务停止自动移除 pid 文件
vacuum = true
启动服务
- 启动
uwsgi --ini uwsgi.ini
- 重启
wsgi --reload uwsgi.pid
- 停止
uwsgi --stop uwsgi.pid
如果没有发现 .pid
文件, 那你可以使用 pkill -9 uwsgi
来进行停止。
Nginx 准备
server {
listen 80;
# 你的主机地址
server_name xxx;
# 匹配所有的请求
location / {
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT, web-token, app-token, Authorization, Accept, Origin, Keep-Alive, User-Agent, X-Mx-ReqToken, X-Data-Type, X-Auth-Token, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length, Content-Range';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset = utf-8';
add_header 'Content-Length' 0;
return 204;
}
root html;
# 请求转发的地址
proxy_pass http://xxx;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 5;
}
}
对于中间那一坨请参考Nginx 跨域问题解决方案。
Nginx 启动
- 启动
nginx -c -t /xxx
配置文件路径 - 重启
nginx -s reload
- 关闭
pkill -9 nginx
如有更好的方式或者文章错误,请留言,我将第一时间修改,给大家最正确的方式!