Назад | Перейти на главную страницу

Nginx не видит сокет unix

ОБНОВИТЬ: Я видел вопросы, связанные с каталогом / tmp, а также в комментарии упоминалось перемещение сокета из / home. Это не устранило проблему.

(Дополнительные обновления внизу сообщения)

у меня есть Ubuntu 16.04 ВМ на лазурном я использую для размещения фляга приложение с использованием uwsgi как сервер и nginx в качестве обратного прокси, следуя этому руководству ...

https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-16-04

Проблема в том, что я получаю 502 Неверный шлюз когда я пытаюсь подключиться к серверу по его IP-адресу с помощью веб-браузера на порту 80. Когда я проверяю журналы, он говорит, что nginx не может найти сокет unix, который я указал в файле конфигурации.

Ошибка ...

2016/08/29 23:23:20 [crit] 2792#2792: *120 connect() to unix:///home/me/appname/appname/appname.sock failed (2: No such file or directory) while connecting to upstream, client: ip.goes.in.here, server: here.goes.the.ip, request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://unix:///home/me/appname/appname/appname.sock:", host: "the.ip.goes.here", referrer: "http://all.of.teh.ips/"

Мой серверный блок выглядит так ...

server {
  listen 80;
  server_name ip.address.goes.here;

  location / {
    include uwsgi_params;
    uwsgi_pass unix:/etc/appname.sock;
  }
}

мой app.ini файл выглядит так ...

[uwsgi]

module:wsgi:app

master = true
processes = 5

socket = /etc/appname.sock
chmod-socket = 660
vacuum = true

die-on-term = true

мой .служба файл выглядит так ...

[Unit]

Description=UWSGI instance to serve app
After=network.target


[Service]

User=me
Group=www-data
WorkingDirectory=/home/me/appname
ExecStart=/home/me/appnam/uwsgi --ini appname.ini


[Install]

WantedBy=multi-user.target

У меня также есть сценарий установки это делает следующее (потенциально может вызвать проблемы с дублированием журналов?)

sudo ufw allow 'Nginx Full'

export FLASK_APP=appname.py
export APPNAME_SETTINGS=app_settings.cfg

sudo cp service/appname.service /etc/systemd/system/appname.service

sudo cp nginxServerBlock/appname /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/appname /etc/nginx/sites-enabled
sudo nginx -t #this tests for syntax errors

sudo systemctl start appname
sudo systemctl enable appname

Я изменил количество слэшей после unix и перед домом (теперь и т. д., каталог был изменен), среди множества других вещей, которые я видел, были разными в разных руководствах.

Я пытался переместить розетку изменив расположение, указанное в файле .ini и в блоке сервера, но ошибка полностью не изменилась, поэтому похоже, что nginx ищет сокет в тот же каталог.

Каталог, который nginx ищет для поиска сокета, нигде не входит в мою конфигурацию.

[ОБНОВИТЬ] Я обнаружил, что есть повторяющиеся журналы в каталоге var / log / nginx, 8 копий access.log и 8 копий error.log. Я запускал сценарий установки после каждого изменения (для перемещения файлов в соответствующие места после извлечения изменений с помощью git) и использовал перезагрузку демона (я не могу вспомнить точное имя) в соответствии с инструкциями, которые появляются в терминале после запуска сценарий установки ... может что-то в моем сценарии вызывать дублирование? Возможно ли, что я случайно произвел какую-то странную повторяющуюся настройку с разными службами, каждая из которых использует разные пары файлов журнала?

User=me
Group=www-data
WorkingDirectory=/home/me/appname
ExecStart=/home/me/appnam/uwsgi --ini appname.ini

Похоже на опечатку (аппнам).

Вы уверены, что сервер работает? Вы можете подключиться к socat?

ngnix работает как отдельный процесс, поэтому перед запуском приложения вам необходимо остановить ngnix.

sudo service ngnix stop. В противном случае сокет myapp.socket не будет виден ngnix. Хотя когда ты это делаешь ls /var/www/myapp/myapp.socket действительно отображался в результатах терминала для ls команда. Так как ngnix был запущен до того, как вы запустите приложение, используя uwsgi myapp.ini команда ngnixпроцесс не знает, что это за сокет myapp.socket является . Так что уловка, позволяющая избежать этой проблемы.

  1. Прекратите использование ngnix sudo service ngnix stop
  2. Запустите ваше приложение uwsgi myapp.ini
  3. Запустите ngnix sudo service ngnix start

Как насчет изменения как

uwsgi_pass unix:/home/me/appname/appname/appname.sock;