uWSGI 结合 nginx 配置动静分离
uWSGI 结合 nginx 配置动静分离
1 环境准备
- 上传一个动态站点:/www/supercrm
2 初始配置文件
2.1 uwsgi 配置文件
[uwsgi]
http = :8080
# 项目路径
chdir = /www/aclabe
# uwsgi的文件
wsgi-file= aclabe/wsgi.py
# 虚拟环境
virtualenv = /root/venv
# 进程个数
processes = 2
# 线程个数
threads = 2
# 后台启动,指定日志的输出
daemonize = /www/aclabe/django.log
# 清除临时文件
vacuum = true
# python文件发生改变自动重启
py-autoreload = 1
# 设置后台运行,保存日志
daemonize = uwsgi.log
# 启动项目
uwsgi --ini file
2.2 Nginx配置文件
server {
listen 80;
server_name crm.aclab.com;
location / {
include uwsgi_params;
uwsgi_pass 10.1.19:8080;
}
location /static {
root /www/supercrm;
}
}
2.3 Django配置
# settings.py
SATAIC_ROOT=os.path.join(BASE_DIR,'static/')
# 收集动态文件
python3 manager.py collectstatic
3 配置文件设置
-
nginx与uwsgi不在同一台服务器上,两者使用TCP socket通信,配置如下所示:
# uwsgi配置文件下 socket= :8080 # Nginx 配置文件下 location / { include uwsgi_params; uwsgi_pass 10.1.19:8080; }
-
nginx与uwsgi在同一台服务器上,优先使用本地机器的unix socket进行通信,这样速度更快。配置如下所示:
# uwsgi 配置文件下 socket = /www/supercrm/supercrm.sock # 启动uwsgi后会生成该文件 # Nginx 配置文件下 location / { include uwsgi_params; uwsgi_pass unix:/www/supercrm/supercrm.sock; }
-
如果nginx与uwsgi不在同一台服务器上,两者使用http协议进行通信,配置如下所示:
# uwsgi配置文件下 socket= :8080 # Nginx 配置文件下 location / { # 注:proxy_pass后面http必不可少! proxy_pass http://10.1.19:8080; }