web项目启动--uwsgi
参考文章:https://pythondjango.cn/python/tools/6-uwsgi-configuration/
1 uwsgi 介绍
# 介绍
uWSGI是一个Python Web服务器,它实现了WSGI协议、uwsgi、http等协议
# 作用
常在部署Django或Flask开发的Python Web项目时使用,作为连接Nginx与应用程序之间的桥梁。
# 为什么需要uwsgi
Nginx本身就是Web服务器,处理静态文件非常优秀
但却不能直接与我们的Python Web应用程序进行交互
uWSGI负责处理Nginx转发的动态请求,并与我们的Python应用程序沟通
同时将应用程序返回的响应数据传递给Nginx
客户端 <--> Nginx <--> uWSGI <--> Python应用程序(Django/Flask)
# 安装
pip install uwsgi
2 配置文件启动uWSGI
# 使用uwsgi.ini配置文件启动Django应用程序
uwsgi --ini uwsgi.ini
# 重启uWSGI服务
service uwsgi restart
# 查看所有uWSGI进程
ps aux | grep uwsgi
# 停止所有uWSGI进程
pkill [-f] -9 uwsgi # '[]' 表示可有可无
# uwsgi.ini的配置编写 以往采用xml格式编写,现采用ini的格式
[uwsgi]
# 表示uwsgi绑定的ip和端口 外部(nginx)访问uwsgi的地址 绑定在本地ip的 8080端口
# 采用socket通信 连接nginx
socket=0.0.0.0:8080 # Nginx配置中 uwsgi_pass应指向uWSGI服务器IP和端口
# 也采用http通信 连接nginx http通信时,外部浏览器即可直接访问该uwsgi
# http=0.0.0.0:8080 # Nginx配置中 proxy_pass应指向uWSGI服务器IP和端口
chdir=/home/django_test/ # 项目路径 项目所在目录
wsgi-file=django_test/wsgi.py # wsgi接口模块文件路径
processes=4 # 启动的进程数
threads=2 # 每个进程的线程数
master=True # 启动管理主进程
pidfile=uwsgi.pid # 存放主进程的进程号文件 以后可通过该进程号 关闭uwsgi服务
daemonize=uwsgi.log # 以后台守护进程运行 并存放日志记录文件
3 强调:nginx转发到uWSGI的通信配置
# 采用socket通信时
location / {
include uwsgi_params; # 导入一个uwsgi模块,用来同uwsgi通信
uwsgi_pass uWSGI_SERVER_IP:8080; # uwsgi所在服务器的ip、uwsgi绑定的端口 要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT django_test.wsgi; # wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /home/django_test/; # 项目路径
}
# 采用http通信时
location / {
# 注意:proxy_pass后面http必不可少哦!
proxy_pass http://uWSGI_SERVER_IP:8080;
}