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;
}
posted @ 2022-08-23 18:58  Edmond辉仔  阅读(129)  评论(0编辑  收藏  举报