项目部署(uWSGI+nginx)的实现思路

使用uWSGI与nginx是很常见的生产配置,今天在部署的时候一直没有想通其中的关系,反复琢磨之后才搞懂,发现自己是对一开始请求的对象产生了混淆。

1.uWSGI配置如下所示

[uwsgi]
socket=外网ip:端口(使用nginx连接时,使用socket)
http=外网ip:端口(直接做web服务器,使用http)
chdir=项目根目录
wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log

2.nginx配置如下

使用apt安装的nginx的配置文件处于/etc/nginx/中 (/sites-enabled/default)

server {
    #listen 80 default_server;
    listen 127.0.0.1:80 default_server;

    # ......
    root /var/www/html;
    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        # try_files $uri $uri/ =404;
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000;
    }
    location /static {
        alias /var/www/test8/static/;
    }
    # ......
}

listen绑定localhost的80端口,location+地址可以指定去哪里访问资源,/static访问静态文件,/访问不是静态的所有资源,配置之后,就可以通过127.0.0.1:80访问资源,普通请求通过location / 再通过uwsgi_pass转发到127.0.0.1:8000,之后通过uWSGI的socket与项目连接


与直接做web服务器不同,使用nginx之后相当于在原先的基础上又加了一层门户,通过这个门户,来判断接下来该向哪里访问,既能访问到uWSGI,也能访问静态文件,完美的解决问题

你可能感兴趣的:(项目部署(uWSGI+nginx)的实现思路)