我想使用 Nginx 和 Gunicorn 在 Ubuntu 服务器上部署 Flask 应用程序。 我遵循了本教程。
1).Gunicorn 配置一切正常。2).我创建了 /etc/systemd/system/myproject.service。它看起来像
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/myproject
Environment="PATH=/root/myproject/myprojectenv/bin"
ExecStart=/root/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target
3). 启动 myproject.service 后,它将在我的项目文件夹中创建 myproject.sock 文件,该文件位于/根路径且此文件有权限srwxrwx---。
4). 我的/etc/nginx/sites-available/myproject文件外观
server {
listen 80;
server_name your_domain www.your_domain;
location / {
include proxy_params;
proxy_pass http://unix:/root/myproject/myproject.sock;
}
}
5). 重启 Nginx 后浏览器显示 403 Forbidden 错误。
6). Nginx 日志文件的样子查看日志文件连接上游时显示权限被拒绝。7).当我在 /tmp 文件夹中生成 .sock 文件时,它正在工作..... 但我想在 /root 目录中生成它
所以有人能帮我解决这个问题或者分享 Linux 权限相关的教程等吗?(提前谢谢了……)
答案1
首先,以 root 身份运行服务器风险很大,最好使用 为你的项目创建另一个系统用户useradd -r -U -s /usr/bin/nologin http
。这将创建一个名为 http 的新系统用户并创建一个 http 组。
然后您可以使用chown -R :http /root/myproject/
将拥有组更改为 http。
如果您的 nginx.conf 包含该语句,user http;
您现在应该能够访问套接字。
另外,我建议创建并使用普通用户帐户。如果您需要 root 访问权限,则可以使用 su 或 sudo 来执行。