uWSGI
+Nginx
项目部署。
Python
应用 uWSGI
+ Nginx
部署
新建一个 Django
应用部署
- 使用
py
文件启动uWSGI
1 | def application(env, start_response): |
启动:
1 | uwsgi --http-socket :8000 --plugin python3 --wsgi-file uwsgi_test.py |
可能需要安装
1 | sudo apt install uwsgi-plugin-common |
视情况也可能是 apt install uwsgi-plugin-python
,看自己使用的 Python
版本和软连接情况。
这样,在对应的 IP
下的 8000
端口可以访问到文件。
- 新建
Django
项目
1 | django-admin startproject django_deployment |
- 通过修改配置允许外部访问
setting.py
:
1 | ALLOWED_HOSTS = ["*"] |
- 启动
1 | python3 manage.py runserver 0.0.0.0:8000 |
打通 Django
与 uWSGI
的链路
先停止应用
- 启动
uwsgi
打通关系
在项目根目录启动
1 | uwsgi --http-socket :8000 --plugin python3 --module django_deployment.wsgi |
- 将命令行配置改为文件配置
新建 django-uwsgi.ini
:
1 | touch django-uwsgi.ini |
1 | # 配置域 |
- 启动
1 | uwsgi --ini django-uwsgi-ini |
- 后台启动
后台运行程序并打印日志
1 | # 配置域 |
创建文件夹 log
和 pid
启动
1 | uwsgi --ini django-uwsgi.ini |
停止
1 | uwsgi --stop pid/uwsgi-8000.pid |
Django
Nginx
+ uWSGI
部署
uWSGI
启动 Django
服务器
- 启动并查看
pid
1 | uwsgi --ini django-uwsgi-ini |
1 | cat pid/uwsgi-8000.pid |
1 | ps -aux | grep xxx |
修改 Nginx
配置文件,完成反向代理
复制备份配置文件 nginx.conf
为 nginx.conf.back
修改 nginx.conf
在 63
行处:
1 | upstream uwsgi { |
启动
1
nginx
查看启动进程情况
1
ps -aux | grep nginx
添加
log
配置文件
1 | upstream uwsgi { |
重启
1 | nginx -s reload |
查看日志:
1 | cd /var/log/ngxin/ |
收集静态文件,完成静态文件寻址配置
- 收集静态文件
1 | vim django_deployment/settings.py |
1 | STATIC_ROOT = os.path.join(BASE_DIR, 'static') |
1 | python manage.py collectstatic |
- 配置静态文件路由
1 | upstream uwsgi { |
重新加载
1 | nginx -s reload |
HTTPS
加密部署
使用 443
端口,协议加密传输报文。
- 申请
SSL
证书
在 Nginx
中新建文件夹 ssl
,存放 crt
和 key
远程拷贝到服务器
1 | scp 2_topic.akashi.org.cn.crt root@122.51.1.19:/etc/nginx/ssl/ |
- 配置
Nginx
支持HTTPS
nginx.conf
:
1 | listen 443 ssl; |
- 定义
80
端口的返回
1 | server { |
或者
1 | server { |
- 重启生效
1 | nginx -s reload |
部署高可用服务
添加配置的启动端口,开启多个服务,并且转发到 nginx
上,还可以通过权重分配达到负载均衡
1 | upstream uwsgi { |
- 注意事项
不要使用
root
权限启动uwsgi
服务关闭
uwsgi
外网访问
1 | http-scoket = 127.0.0.1:8000 |
1 | http-scoket = 127.0.0.1:8001 |