uWSGI 结合 nginx 配置动静分离

uWSGI 结合 nginx 配置动静分离

1 环境准备

  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 配置文件设置

  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;
    }
    

4 有大佬写的很详细了

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

posted @ 2022-10-18 21:05  f_carey  阅读(142)  评论(0编辑  收藏  举报