我用于Django项目部署nginx和gunicorn
决定试试uvicorn
结果是运行,只是连接uvicorn,nginx什么都没有。
配置nginx
...
http {
...
upstream uvicorn {
server unix:/home/dhvcc/PycharmProjects/dwapper/dwapper.sock;
}
}
项目配置
server {
listen 80;
server_name 0.0.0.0;
return 301 https://0.0.0.0:80$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# SSL
ssl_certificate /etc/nginx/ssl/dwapper.crt;
ssl_certificate_key /etc/nginx/ssl/dwapper.key;
# DJANGO
location = /favicon.ico {
access_log off; log_not_found off;
}
location /static/ {
alias /home/dhvcc/PycharmProjects/dwapper/staticfiles/;
}
# UVICORN
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;
}
}
当我尝试访问该站点时,我进入了日志
*205 connect() to unix:/home/dhvcc/PycharmProjects/dwapper/dwapper.sock failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/2.0", upstream: "http://unix:/home/dhvcc/PycharmProjects/dwapper/dwapper.sock:/", host: "localhost"
最有可能的问题是它uvicorn没有运行。我像这样运行它(--uds 明确指向该套接字)
/home/dhvcc/PycharmProjects/dwapper/venv/bin/uvicorn --workers 3 --uds unix:/home/dhvcc/PycharmProjects/dwapper/dwapper.sock dwapper.asgi:application
由于某种原因,只有发射发生在http://127.0.0.1:8000.
dwapper.sock- 使用时生成的文件gunicorn
这是我工作的旧服务配置gunicorn
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=dhvcc
Group=www-data
WorkingDirectory=/home/dhvcc/PycharmProjects/dwapper
ExecStart=/home/dhvcc/PycharmProjects/dwapper/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/dhvcc/PycharmProjects/dwapper.sock dwapper.wsgi:application -k uvicorn.workers.UvicornWorker
[Install]
WantedBy=multi-user.target



