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

приложение flask, обслуживаемое nginx uwsgi, возвращает 502

Я не могу подключиться к приложению Flask (поисковой системе SearchEx), обслуживаемому nginx и uwsgi.

Мой веб-сервер показывает "502 Bad Gateway nginx"

Вот моя ошибка nginx: журнал ошибок: /var/log/nginx/error.log

[crit] 2688#2688: *4 connect() to unix:/run/uwsgi/app/searx/socket.sock failed 
(2: No such file or directory) while connecting to upstream,
client: 216.186.XXX.XXX, server searx.mysite.com, 
request: "GET / HTTP/1.1", 
upstream: "uwsgi://unix:/run/uwsgi/app/searx/socket.sock:", 
host: "searx.mysite.com"

Итак, я вижу, что socket.sock - это не то же самое, что и восходящий поток.

вот мой nginx.conf

user http;
worker_processes auto;
worker_cpu_affinity auto;

events {
    multi_accept on;
    worker_connections 1024;
}

http {
    charset utf-8;
    sendfile on;
    tcp-nopush on;
    tcp_nodelay on;
    server_tokens off;
    log_not_found off;
    types_hash_max_size 4096;
    client_max_body_size 16M;

    include mime.types;
    default_type application/octet-stream;

    keepalive_timeout 65;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log warn;

    include /etc/nginx/sites-enabled/*;
}

вот мой searchx.conf, единственное место, где я указал, где находится файл .sock:

/etc/nginx/sites-enabled/searx.conf

server {
    listen 80;
    server_name searx.mysite.com;
    
    location / {
        include uwsgi_params;
        uwsgi_pass unix:/run/uwsgi/app/searx/socket.sock;
    }
    
    root /usr/local/searx/searx-src/searx;
    location /static { }
}

Когда я смотрю в свою папку сокетов, там нет файла ...

ls -alh /run/uwsgi/app/searx/
total 0
drwxr-xr-x 2 searx searx 40 Jul 22 05:02 .
drwxr-xr-x 3 root  root  60 Jul 22 05:02 ..

Команда, которую я использую для запуска uwsgi:

exec chpst -u http env LC_ALL=en_US.UTF-8 /usr/bin/uwsgi --master --die-on-term --emperor /etc/uwsgi/sites

команда, которую я использую для запуска nginx:

exec chpst -u root /usr/bin/nginx -c /etc/nginx/nginx.conf -g "daemon off;"

вот мой файл searchx uwsgi

/etc/uwsgi/sites/searx.ini

[uwsgi]
project = searx
uid = searx
gid = searx
base = /usr/local/searx/searx-src

chdir = %(base)/%(project)
env = SEARX_SETTINGS_PATH=/etc/searx/settings.yml

disable-logging = false
workers = 2

chmod-socket = 666
vacuum = true

single-interpreter = true
master = true
plugin = python
lazy-apps = true
enable-threads = true

module = searx.webapp

route-run = fixpathinfo:

virtualenv = /usr/local/searx/searx-pyenv
pythonpath = %(base)

# NOTE: if I add or delete the next line there is no difference in output
socket = /run/uwsgi/app/searx/socket.sock

еще копаю: в searchx.ini я установил disable-logging = false и нашел это в /var/log/uwsgi/current журнал:

thunder lock: disabled (you can enable it with --thunder-lock
bind(): Permission denied [core/socket.c line 230]
Wed July 22 15:05:31 2020 - [emperor] curse the uwsgi instance searx.ini (pid: 3320)
Wed July 22 15:05:31 2020 - [emperor] removed uwsgi instance searx.ini

Значит, проблема с моим searchx.ini или как я его называю?

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

Нашел проблему. Ответ для потомков гугла ...

Конечно, это были права доступа к файлам:

  1. Я добавил пользователя searchx в группу http: usermod -a -G http searx
  2. Я изменил каталог поиска, чтобы в качестве группы был http: chgrp -R http /usr/local/searx
  3. Я сделал каталог searchx доступным для записи для группы: chmod -R g+w user/local/searx
  4. То же самое и с моей папкой socket.sock: chgrp -R http /run/uwsgi/app/searx
  5. и сделал эту папку доступной для записи для группы: chmod -R g+w /run/uwsgi/app/searx
  6. Перезапустите nginx и uwsgi.