Закрытие восходящих соединений для стека uwsgi, Flask и Nginx - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь запустить базовое c Flask приложение, используя Nginx 1.14.0 на Ubuntu Server 18.04.

Само приложение работает нормально в тестовой среде, но я пытаюсь развернуть его сейчас с помощью uwsgi и nginx, и я получаю либо целевую страницу по умолчанию nginx, либо 502 Bad Gateway.

Я удалил конфигурацию по умолчанию nginx из /etc/nginx/sites-available и удалил символическую ссылку из /etc/nginx/sites-enabled ,

Я устанавливаю замены для своего сайта, как показано ниже в /etc/nginx/sites-available.

Чего мне не хватает с точки зрения конфигурации, чтобы nginx перенаправлял на мой сайт?

server {
            listen 80;
            server_name www.myserver.com myserver.com;
            root /srv/server/myserver/;
            index index.html;

            location /static {
                alias /srv/server/myserver/static;
            }

            location / {
                include uwsgi_params;
                uwsgi_pass unix:/srv/server/myserver/myserver.sock;
                uwsgi_read_timeout 30;
                uwsgi_connect_timeout 30;
            }

        }

Я создал символическую ссылку sudo ln -s /etc/nginx/sites-available/myserver/etc/nginx/sites-enabled

/srv/server принадлежит www-data с использованием sudo shown -R www-data:www-data /srv/server

, и это myserver.ini

[uwsgi]
http = 0.0.0.0:80
harakiri = 30
module = wsgi:app

master = true
processes = 5

binary-path = /srv/server/myserver/venv/bin/uwsgi
virtualenv = /srv/server/myserver/myserverenv
module = myserver:app

uid = www-data
gid = www-data

socket = myserver.sock
chmod-socket = 0775
vacuum = true

die-on-term = true

myserver.service

[Unit]
Description=uWSGI instance for myserver

[Service]
User=www-data
Group=www-data
After=network.target
WorkingDirectory=/srv/server/myserver
Environment="PATH=/srv/server/myserver/myserverenv/bin"
ExecStart=/srv/server/myserver/myserverenv/bin/uwsgi --ini myserver.ini

[Install]
WantedBy=multi-user.target

Поскольку это на моем локальном компьютере, я добавил ниже к /etc/hosts, чтобы получить доступ через FQDN в браузере, пока я тестирую, и я разрешил для http и https с ufw.

127.0.0.1 www.myserver.com myserver.com

Я остановился, запустился, перезапустился и т. Д. c через sudo systemctl restart nginx

Журналы ошибок от /etc/nginx/error.log

2020/04/17 15:42:24 [error] 26747#26747: *1 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: www.myserver.com, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/srv/server/myserver/myserver.sock:", host: "www.myserver.com"

РЕДАКТИРОВАНИЕ:

Я попытался перезапустить uwsgi и получил ошибку ниже, когда работал как www-data и через sudo:

3therk1ll@3therk1ll:/var/log/nginx$ sudo -u www-data systemctl status uwsgi
● uwsgi.service - uWSGI instance for myserver
   Loaded: loaded (/etc/systemd/system/uwsgi.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2020-04-17 16:30:42 BST; 5s ago
  Process: 27147 ExecStart=/srv/server/myserver/myserverenv/bin/uwsgi --ini myserver.ini (code=exited, status=1/FAILURE)
 Main PID: 27147 (code=exited, status=1/FAILURE)

3therk1ll@3therk1ll:/var/log/nginx$ sudo systemctl status uwsgi
● uwsgi.service - uWSGI instance for myserver
   Loaded: loaded (/etc/systemd/system/uwsgi.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2020-04-17 16:30:42 BST; 1min 10s ago
  Process: 27147 ExecStart=/srv/server/myserver/myserverenv/bin/uwsgi --ini myserver.ini (code=exited, status=1/FAILURE)
 Main PID: 27147 (code=exited, status=1/FAILURE)

Apr 17 16:30:42 3therk1ll uwsgi[27147]: dropping root privileges as early as possible
Apr 17 16:30:42 3therk1ll uwsgi[27147]: your processes number limit is 7645
Apr 17 16:30:42 3therk1ll uwsgi[27147]: your memory page size is 4096 bytes
Apr 17 16:30:42 3therk1ll uwsgi[27147]: detected max file descriptor number: 1024
Apr 17 16:30:42 3therk1ll uwsgi[27147]: lock engine: pthread robust mutexes
Apr 17 16:30:42 3therk1ll uwsgi[27147]: thunder lock: disabled (you can enable it with --thunder-lock)
Apr 17 16:30:42 3therk1ll uwsgi[27147]: error removing unix socket, unlink(): Permission denied [core/socket.c line 198]
Apr 17 16:30:42 3therk1ll uwsgi[27147]: bind(): Address already in use [core/socket.c line 230]
Apr 17 16:30:42 3therk1ll systemd[1]: uwsgi.service: Main process exited, code=exited, status=1/FAILURE
Apr 17 16:30:42 3therk1ll systemd[1]: uwsgi.service: Failed with result 'exit-code'.

1 Ответ

0 голосов
/ 17 апреля 2020

И nginx, и uwsgi пытаются связать порт 80, поэтому попробуйте изменить порт uwsgi на другое значение или просто удалите строку http = 0.0.0.0:80 из конфигурации uwsgi, поскольку nginx общается с uwsgi через unix socket

...