在实战中,Nginx与uWSGI搭配使用是一种常见的方式,用于高性能部署基于Python的Web应用,尤其是Django或Flask这类框架的应用。下面是一步一步的实战配置过程:
1. 安装环境
-
安装Python3环境:
# 以CentOS为例 sudo yum install -y python3 python3-devel
-
安装pip3:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py
-
安装uWSGI:
pip3 install uwsgi
-
安装Django或其他Python Web框架:
pip3 install django
2. 配置uWSGI
创建uWSGI配置文件,例如myproject_uwsgi.ini
,内容可能包括:
[uwsgi]
# Django项目的绝对路径
chdir = /path/to/myproject
# Django settings模块
module = myproject.wsgi:application
master = true
processes = 4
threads = 2
socket = 127.0.0.1:3031
chmod-socket = 660
vacuum = true
die-on-term = true
uid = www-data # 根据实际情况设置运行uWSGI的用户
gid = www-data # 根据实际情况设置运行uWSGI的组
3. 测试uWSGI配置
启动uWSGI服务并测试运行情况:
uwsgi --ini myproject_uwsgi.ini
4. 配置Nginx
在Nginx配置文件中(通常是/etc/nginx/nginx.conf
或/etc/nginx/conf.d/myproject.conf
)添加一个server区块来代理uWSGI服务:
server {
listen 80; # 或者监听443端口以启用HTTPS
server_name example.com; # 你的域名
location / {
include uwsgi_params; # 加载包含通用uwsgi参数的文件
uwsgi_pass 127.0.0.1:3031; # uWSGI监听的地址和端口
}
# 静态文件处理(可选)
location /static/ {
alias /path/to/static/files/;
expires 30d;
}
}
5. 测试Nginx配置
nginx -t
6. 重启Nginx服务
systemctl restart nginx
7. 验证服务
现在,当你访问example.com
时,Nginx会将请求转发给uWSGI服务器,uWSGI再将请求传递给Python/Django应用进行处理,然后将响应通过Nginx返回给客户端。
注意事项
- 需要确保Nginx和uWSGI之间的通信正确无误,包括端口、Socket文件路径和权限设置。
- 为提升安全性,可以考虑使用Unix Socket替代TCP Socket。
- 若启用HTTPS,还需配置SSL证书和相关的Nginx SSL模块设置。
- 根据应用需求,可能需要对Nginx和uWSGI进行更精细的性能优化配置,例如缓存策略、负载均衡、错误处理等。