signed

QiShunwang

“诚信为本、客户至上”

ubuntu 20.10下uvicorn+nginx部署django

2021/1/28 12:49:25   来源:

uvicorn使用supervisor部署。

app@app:~/report$ ls /etc/supervisor
conf.d  supervisord.conf
app@app:~/report$ ls /etc/supervisor/conf.d
uvicorn-pz.conf
app@app:~/report$

uvicorn-pz.conf使用ls做软连接,文件放在django项目文件夹。
譬如: sudo ln -s /home/app/report/uvicorn-pz.conf
1、uvicorn的program写法:

[fcgi-program:uvicorn]
socket=unix:///tmp/uvicorn.sock
command=/home/app/report/venv/bin/uvicorn --fd 0 share_report.asgi:application
numprocs=4
directory=/home/app/report/
process_name=uvicorn-%(process_num)d
stdout_logfile=/home/app/logs/pz.log
stdout_logfile_maxbytes=0
user=www-data

注意 user字段,使用www-data与nginx用户一致,否则会导致nginx连接被拒绝。若不填user,uvicorn每次重启,默认此sock为root,然后nginx就显示502错误。
另外需要注意,后缀使用.conf,不再用.ini
proxmox虚拟机分配了4个核,numprocs就写4 .
在这里插入图片描述
2、nginx增加conf文件:

server {
    listen 80;
    client_max_body_size 64m;

    server_name 10.101.0.204;

    location / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_redirect off;
      proxy_buffering off;
      proxy_pass http://uvicorn;
    }

    location /static {
      # path for static files
      root /home/app/report;
    }
}

upstream uvicorn {
    server unix:///tmp/uvicorn.sock;
}

prixt_pass 照抄,不要改。
/static部分,“/home/app/report”不需要再加static,否则url会出现两个static。

3、Minio server的配置
参考How to Set Up an Object Storage Server Using Minio on Ubuntu 16.04
注意,minio.service文件
raw文本打不开,但是可以打开其显示文本。