簡體   English   中英

Nginx:CentOS 7上的Gunicorn套接字被拒絕

[英]Nginx: Permission denied to Gunicorn socket on CentOS 7

我正在進行Django項目部署。 我在提供ma EC2(AWS)的CentOS 7服務器上工作。 我試圖通過多種方式解決這個問題,但我不明白我錯過了什么。

我正在使用ningx和gunicorn來部署我的項目。 我創建了我的/etc/systemd/system/myproject.service文件,其中包含以下內容:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=centos
Group=nginx
WorkingDirectory=/home/centos/myproject_app
ExecStart=/home/centos/myproject_app/django_env/bin/gunicorn --workers 3 --bind unix:/home/centos/myproject_app/django.sock app.wsgi:application
[Install]
WantedBy=multi-user.target

當我運行sudo systemctl restart myproject.servicesudo systemctl enable myproject.servicedjango.sock文件正確生成到/home/centos/myproject_app/

我已經在/ etc / nginx / sites-available /文件夾中創建了我的nginx conf flie,其中包含以下內容:

server {
    listen       80;
    server_name  my_ip;
    charset      utf-8;

    client_max_body_size       10m;
    client_body_buffer_size    128k;

    # serve static files
    location /static/ {
        alias /home/centos/myproject_app/app/static/;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/centos/myproject_app/django.sock;
    }
}

之后,我使用以下命令重新啟動nginx

sudo systemctl restart nginx

如果我運行命令sudo nginx -t ,響應是:

nginx: configuration file /etc/nginx/nginx.conf test is successful

當我在Web瀏覽器中訪問my_ip時,我收到了502錯誤的網關響應。

如果我檢查nginx錯誤日志,我看到以下消息:

1 connect() to unix:/home/centos/myproject_app/django.sock failed (13: Permission denied) while connecting to upstream

我真的嘗試了很多改變sock文件權限的解決方案。 但我不明白如何解決它。 我該如何修復此權限錯誤?...非常感謝你

如果myproject_app文件夾下的所有權限都是正確的,並且centos用戶或nginx組可以訪問這些文件,我會說它看起來像是安全增強型Linux(SELinux)問題。

我遇到了類似的問題,但是使用RHEL 7.我設法通過執行以下命令來解決它:

sudo semanage permissive -a httpd_t

它與SELinux的安全策略有關,您必須將httpd_t添加到許可域列表中。

來自NGINX博客的這篇文章可能會有所幫助: NGINX:升級到RHEL 6.6 / CentOS 6.6時SELinux會發生變化

受類似問題的影響,我剛剛寫了一篇關於如何在RHEL 7上部署Django應用程序的教程。 它應該與CentOS 7非常相似。

最有可能是兩個中的一個

1- nginx /home/centos/myproject_app/無法訪問該目錄

$ ls -la /home/centos/myproject_app/

如果它不可訪問,嘗試將路徑更改為/etc/nginx如果沒有,請嘗試該命令

$ /home/centos/myproject_app/django_env/bin/gunicorn --workers 3 --bind unix:/home/centos/myproject_app/django.sock app.wsgi:application

如果仍然沒有工作然后激活環境和python manage.py runserver 0.0.0.0:8000去瀏覽器並轉到http:// ip:8000問題可能在這里,但它的gunicorn命令運作良好,然后nginx用戶的目錄訪問問題

這里完全相同的問題。

刪除Group=www-data為我解決了這個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM