尝试使用Nginx代理Gunicorn套接字。/etc/systemd/system/gunicorn.service
文件
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/root/PSite/blog
ExecStart=/root/PSite/blog/blog/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/root/PSite/blog/blog.sock blog.wsgi:application
[Install]
WantedBy=multi-user.target
/etc/nginx/sites-available/blog
文件server {
listen 80;
server_name server_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/PSite/blog;
}
location / {
include proxy_params;
proxy_pass http://unix:/root/PSite/blog/blog.sock;
}
}
然后我启动守护程序:
systemctl start gunicorn
运行
systemctl status gunicorn
后,它会抛出错误:EXEC生成/root/PSite/blog/blog/venv/bin/gunicorn:权限被拒绝
所有文件夹和文件均由 www-data:www-data 拥有。
如果我将gunicorn用户更改为
root
,它将创建代理,但nginx日志称它没有权限。问题是什么?
最佳答案
以非root用户身份运行服务是很好的安全措施。但是,您试图通过将文件存储在“/root”下来使问题复杂化,该文件仅用于“root”用户访问。
尝试将“PSite”站点文件夹从“/root”移动到中性位置,例如“/var/www/PSite”。
关于sockets - Nginx权限被拒绝连接到.socket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48115472/