Gunicorn с unix сокетом не работает, дает 502 плохих шлюза

Я слежу за http://www.obeythetestinggoat.com/book/chapter_08.html книгой, в которой говорится, что нужно добавить сокет unix для запуска сервера nginx с gunicorn, что я и сделал. Это мой файл nginx

server {
listen 80;
server_name mydjsuperlist-staging.tk;

location /static {
alias /home/elspeth/sites/mydjsuperlist-staging.tk/static;
}

location / {
proxy_set_header Host $host;
    proxy_pass http://unix:/tmp/mydjsuperlist-staging.tk.socket;
}
} 

Nginx перезагружается без сбоев и проверяет его с помощью nginx -t

Когда я бегу:

gunicorn --bind unix:/tmp/mydjsuperlist-staging.tk.socket superlists.wsgi:application

Он успешно создает файл mydjsuperlist-staging.tk.socket в папке tmp, и я получаю это на своем терминале

2016-09-01 18:56:01 [15449] [INFO] Starting gunicorn 18.0
2016-09-01 18:56:01 [15449] [INFO] Listening at: unix:/tmp/mydjsuperlist-staging.tk.socket (15449)
2016-09-01 18:56:01 [15449] [INFO] Using worker: sync
2016-09-01 18:56:01 [15452] [INFO] Booting worker with pid: 15452

Все выглядит хорошо, но когда я захожу на мой сайт mydjsuperlist-staging.tk, он выдает (502) ошибку шлюза. Когда я использовал порт, мой сайт работал отлично. Что я делаю не так здесь?

4 ответа

Поместите файл сокета в /var/run вместо /tmp

И пожалуйста.

Этот ответ стоил мне два часа, FML...

Я нахожу это в https://serverfault.com/questions/463993/nginx-unix-domain-socket-error/464025

У меня возникла та же проблема, и я делал то же учебное пособие, поэтому вот мое решение, следующее: http://docs.gunicorn.org/en/stable/deploy.html

Примечание: вместо этого я не использую Upstart, я использую сервис SystemD

1) Сделать услугу в /etc/systemd/system/nginx.service

[Unit]
Description=Gunicorn server for {SITENAME}
After=network.target

[Service]
User={user}
Group=www-data
WorkingDirectory=/home/{user}/sites/{SITENAME}/source
ExecStart=/home/{user}/sites/{SITENAME}/virtualenv/bin/gunicorn --workers 3 --bind unix:/tmp/{SITENAME}.socket superlists.wsgi:application
Restart=always

[Install]
WantedBy=multi-user.target

2) я выполнил следующие шаги из http://docs.gunicorn.org/en/stable/deploy.html сделав gunicorn.socket и gunicorn.conf, но я просто заметил, что мой статус сокета неактивен, поэтому я думаю, это необязательно.

файл gunicorn.conf в /usr/lib/tmpfiles.d/gunicorn.conf

d /run/gunicorn 0755 someuser someuser -

Далее включите сервисы, чтобы они автоматически запускались при загрузке:

$ systemctl enable nginx.service $ systemctl enable gunicorn.socket

Либо перезагрузите, либо запустите службы вручную:

$ systemctl start nginx.service $ systemctl start gunicorn.socket

Некоторые подсказки, которые помогают:

  • убедитесь, что ваш сервис запущен и работает

    $ systemctl status gunicorn.service

  • Проверьте правильность конфигурации Nginx

    $ sudo nginx -t

  • Проверить письмо неуместно
  • Убедитесь, что ваш домен указан в строке ALLOWED_HOSTS как Строка, потребовалось около 1 часа, чтобы понять, что я скучаю по ' '

ALLOWED_HOSTS = [**'**{SITENAME}**'**]

мне потребовалось около 6 часов, чтобы запустить его, но в первый раз, когда я это делал, и нулевых знаний в Unix, я думаю, что все в порядке.

Надеюсь, это поможет, продолжайте пытаться, пока это не работает!!

Попробуйте добавить своего пользователя в группу nginx, например:

      sudo usermod -a -G user nginx

В моем случае я перезагрузил свой сервер, и он снова заработал.

Никаких объяснений.

Другие вопросы по тегам