在 Systemd 中使用 Gunicorn 套接字的 Centos 7 上的 Nginx 权限问题
Nginx Permission Issues on Centos 7 with Gunicorn Socket in Systemd
我们搜索了无数线程来解决这个问题,但 none 似乎对我们有用。
谁能帮我解决这个 nginx 权限问题?
我已经按照本文中的建议使用非 root 用户安装了它。
How To Serve Flask Applications with Gunicorn and Nginx on CentOS 7
但是,我们永远无法访问套接字,也无法访问静态文件。
取自tail -f /var/log/nginx/error.log
,访问套接字
时总是产生502 Bad Gateway Error
*5 connect() to unix:/home/devops/article-prod/articles.sock failed (13: Permission denied)
并在访问静态文件时产生 403 禁止错误
*14 open() "/home/devops/article-prod/assets/icons/types/article.png" failed (13: Permission denied)
这是我们的权限路径
/home/devops/article-prod/
/home/devops/article-prod/articles.sock
/home/devops/article-prod/assets
/home/devops/article-prod/assets/icons
/home/devops/article-prod/assets/icons/types
/home/devops/article-prod/assets/icons/types/article.png
drwxr-xr-x. 4 root root 34 Mar 15 03:57 home
drwxr-xr-x. 6 devops nginx 172 Mar 15 05:38 devops
drwxr-xr-x. 6 devops nginx 197 Mar 15 07:56 article-prod
srwxrwx---. 1 devops nginx 0 Mar 15 06:03 articles.sock
drwxr-xr-x. 3 devops nginx 19 Mar 15 04:56 assets
drwxr-xr-x. 4 devops nginx 36 Mar 15 04:56 icons
drwxr-xr-x. 2 devops nginx 25 Mar 15 04:56 types
-rwxr-xr-x. 1 devops nginx 1718 Mar 15 04:56 article.png
文件 nginx.conf:
...
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
...
server {
listen 80;
server_name www.article.com;
location /assets/ {
root /home/devops/article-prod;
autoindex on;
}
location / {
proxy_pass http://unix:/home/devops/article-prod/articles.sock;
}
}
...
文件articles.service:
[Unit]
Description=Gunicorn instance to serve articles
After=network.target
[Service]
User=devops
Group=nginx
WorkingDirectory=/home/devops/article-prod
Environment="PATH=/home/devops/article-prod/venv/bin"
ExecStart=/home/devops/article-prod/venv/bin/gunicorn --workers 3 --bind unix:articles.sock -m 007 wsgi
[Install]
WantedBy=multi-user.target
我也这样做是为了确保 devops 用户在 nginx 组中
sudo usermod -a -G devops nginx
甚至反过来
sudo usermod -a -G nginx devops
但还是不行。
任何帮助将不胜感激。
您尝试过禁用 SELINUX 吗?通过 运行:
检查你的 SELINUX 状态
$ sudo sestatus
如果状态为 enabled
,您可以通过 运行:
禁用它(临时)
$ sudo setenforce 0
并编辑文件 /etc/sysconfig/selinux
,然后将 SELINUX=enforcing
更改为 SELINUX=disabled
以永久禁用它。
如果需要,您可以重新启动服务器。
希望这对您有所帮助
我们搜索了无数线程来解决这个问题,但 none 似乎对我们有用。 谁能帮我解决这个 nginx 权限问题? 我已经按照本文中的建议使用非 root 用户安装了它。
How To Serve Flask Applications with Gunicorn and Nginx on CentOS 7
但是,我们永远无法访问套接字,也无法访问静态文件。
取自tail -f /var/log/nginx/error.log
,访问套接字
*5 connect() to unix:/home/devops/article-prod/articles.sock failed (13: Permission denied)
并在访问静态文件时产生 403 禁止错误
*14 open() "/home/devops/article-prod/assets/icons/types/article.png" failed (13: Permission denied)
这是我们的权限路径
/home/devops/article-prod/
/home/devops/article-prod/articles.sock
/home/devops/article-prod/assets
/home/devops/article-prod/assets/icons
/home/devops/article-prod/assets/icons/types
/home/devops/article-prod/assets/icons/types/article.png
drwxr-xr-x. 4 root root 34 Mar 15 03:57 home
drwxr-xr-x. 6 devops nginx 172 Mar 15 05:38 devops
drwxr-xr-x. 6 devops nginx 197 Mar 15 07:56 article-prod
srwxrwx---. 1 devops nginx 0 Mar 15 06:03 articles.sock
drwxr-xr-x. 3 devops nginx 19 Mar 15 04:56 assets
drwxr-xr-x. 4 devops nginx 36 Mar 15 04:56 icons
drwxr-xr-x. 2 devops nginx 25 Mar 15 04:56 types
-rwxr-xr-x. 1 devops nginx 1718 Mar 15 04:56 article.png
文件 nginx.conf:
...
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
...
server {
listen 80;
server_name www.article.com;
location /assets/ {
root /home/devops/article-prod;
autoindex on;
}
location / {
proxy_pass http://unix:/home/devops/article-prod/articles.sock;
}
}
...
文件articles.service:
[Unit]
Description=Gunicorn instance to serve articles
After=network.target
[Service]
User=devops
Group=nginx
WorkingDirectory=/home/devops/article-prod
Environment="PATH=/home/devops/article-prod/venv/bin"
ExecStart=/home/devops/article-prod/venv/bin/gunicorn --workers 3 --bind unix:articles.sock -m 007 wsgi
[Install]
WantedBy=multi-user.target
我也这样做是为了确保 devops 用户在 nginx 组中
sudo usermod -a -G devops nginx
甚至反过来
sudo usermod -a -G nginx devops
但还是不行。
任何帮助将不胜感激。
您尝试过禁用 SELINUX 吗?通过 运行:
检查你的 SELINUX 状态$ sudo sestatus
如果状态为 enabled
,您可以通过 运行:
$ sudo setenforce 0
并编辑文件 /etc/sysconfig/selinux
,然后将 SELINUX=enforcing
更改为 SELINUX=disabled
以永久禁用它。
如果需要,您可以重新启动服务器。
希望这对您有所帮助