uWSGI 结合 nginx 配置动静分离
阅读原文时间:2023年07月08日阅读:1

uWSGI 结合 nginx 配置动静分离

目录

  1. 上传一个动态站点:/www/supercrm

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
  1. nginx与uwsgi不在同一台服务器上,两者使用TCP socket通信,配置如下所示:

    # uwsgi配置文件下
    socket= :8080
    
    # Nginx 配置文件下
    location / {
            include uwsgi_params;
            uwsgi_pass 10.1.19:8080;
    }
  2. nginx与uwsgi在同一台服务器上,优先使用本地机器的unix socket进行通信,这样速度更快。配置如下所示:

    # uwsgi 配置文件下
    socket = /www/supercrm/supercrm.sock
    # 启动uwsgi后会生成该文件
    
    # Nginx 配置文件下
    location / {
        include uwsgi_params;
        uwsgi_pass unix:/www/supercrm/supercrm.sock;
    }
  3. 如果nginx与uwsgi不在同一台服务器上,两者使用http协议进行通信,配置如下所示:

    # uwsgi配置文件下
    socket= :8080
    
    # Nginx 配置文件下
    location / {
        # 注:proxy_pass后面http必不可少!
        proxy_pass http://10.1.19:8080;
    }

uWSGI配置详解 | 大江狗的博客 (pythondjango.cn)

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器