Gunicorn 沒有創建套接字導致 nginx 拋出 502 錯誤

Gunicorn 沒有創建套接字導致 nginx 拋出 502 錯誤

下列的本教程,我能夠設定 Django、Gunicorn 和 nginx在 virtualenv 中在 AWS EC2 執行個體(執行 Ubuntu 16.04)上,然後繼續建立一個 Upstart 檔案來「守護」整個事物。

啟動 virtualenv 後,我檢查了:

  1. 薑戈作品- 我可以透過執行以下命令透過連接埠 8000 存取我的 Django 專案:

./manage.py runserver 0.0.0.0:8000

當我訪問時,mydomain.com:8000我受到了預設的 Django 頁面的歡迎。

  1. Gunicorn 可以工作並能夠為 Django 應用程式提供服務- 我可以透過從我的專案資料夾運行它來存取我的 Django 應用程式(替換projectname為我的實際專案名稱):

gunicorn --bind 0.0.0.0:8000 projectname.wsgi:application

這次訪問時,mydomain.com:8000我再次看到歡迎頁面,當附加到/adminURL 末尾時,我能夠看到登入畫面CSS(因為 Gunicorn 不知道靜態 CSS 文件,根據教學目前這是可以的)。

從這裡我繼續創建以下 systemd 檔案(whenmasterfolder用於顯示所有操作發生的資料夾,myuser是我的系統使用者(ubuntu,因為這是 Ubuntu 實例):

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

[Service]
User=myuser
Group=www-data
WorkingDirectory=/home/myuser/masterfolder
ExecStart=/home/myuser/masterfolder/myvirtualenv/bin/gunicorn --workers 3 --bind unix:/home/myuser/masterfolder/projectname.sock$

[Install]
WantedBy=multi-user.target`

我遇到了兩個問題:

  1. 沒有創建套接字- 檢查 nginx 日誌檔時外部和內部virtualenv(不完全確定為什麼它們是相同的,順便說一句)我看到了同樣的錯誤:

2017/01/17 15:12:43 [crit] 12403#12403: *3 connect() to unix:/home/myuser/masterfolder/projectname.sock failed (2: No such file or directory) while connecting to upstream

現在,請注意,這與我運行時創建的masterfolder資料夾層次結構一致:django-adminstartproject

masterfolder/ ├── manage.py └── projectname ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py

往裡面一看masterfolder確實有根本沒有 .sock 文件,別介意一個被命名的projectname.sock

  1. 因此,儘管 nginx 可以工作,但它會拋出 502-

這是我的etc/nginx/sites-availabe/projectname文件的樣子:

server {
    listen 80;
    server_name www.mydomain.com mydomain.com MYIPADDRESS;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/masterfolder/projectname;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/myuser/mastefolder/projectname.sock;
    }
}

當然,它的符號連結是正確的,在我嘗試修復它的每次更改之後,我都會運行:

sudo systemctl daemon-reload
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
sudo systemctl restart nginx

我覺得我在理解所有這些基礎設施如何協同工作方面似乎缺少一些基本的東西。當然,請隨意指出我對這個過程的理解上的錯誤。

答案1

你檢查過masterfolder目錄的權限嗎?

權限應該是myuser:www-data.

您的 nginx 設定檔中也存在拼字錯誤。希望這是一個錯字:)

相關內容