ОБНОВИТЬ: Я видел вопросы, связанные с каталогом / tmp, а также в комментарии упоминалось перемещение сокета из / home. Это не устранило проблему.
(Дополнительные обновления внизу сообщения)
у меня есть Ubuntu 16.04 ВМ на лазурном я использую для размещения фляга приложение с использованием uwsgi как сервер и nginx в качестве обратного прокси, следуя этому руководству ...
Проблема в том, что я получаю 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
является . Так что уловка, позволяющая избежать этой проблемы.
sudo service ngnix stop
uwsgi myapp.ini
sudo service ngnix start
Как насчет изменения как
uwsgi_pass unix:/home/me/appname/appname/appname.sock;