504 Ошибка подключения Nginx UWSGI Ubuntu - PullRequest
0 голосов
/ 13 мая 2019

Привет всем, на что я надеялся получить какое-то руководство по этому вопросу.У меня есть приложение фляги, которое установлено на сервере Ubuntu.Он использует ssh для создания туннеля к серверу Centos 7, который имеет свою базу данных mysql.После запуска этого приложения с python на сервере Ubuntu я могу без проблем войти в свое приложение и просматривать данные из базы данных с домена ip.Теперь, после попытки запустить приложение на nginx и uWSGI, я могу получить доступ к странице входа с моего доменного имени.Но после ввода моих учетных данных и попытки входа в систему страница загружается в течение минуты, и я получаю 504 Ошибка истечения времени ожидания соединения

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

блок сервера

server {
    listen 80;
    server_name itinareport.tk www.itinareport.tk;

    location / {
        uwsgi_read_timeout 600;
        include uwsgi_params;
        uwsgi_pass unix:/home/pinchrep2/itinarep/itinarep.sock;
    }
}

INI-файл

[uwsgi]
module = wsgi:app

master = true
processes = 5

socket = itinarep.sock
chmod-socket = 660
vacuum = true

die-on-term=true

wsgi.py

from main import  app


if __name__ == "__main__":
    app.run()

служебный файл

[Unit]
Description=uWSGI instance to serve itinarep
After=network.target

[Service]
User=pinchrep2
Group=www-data
WorkingDirectory=/home/pinchrep2/itinarep
Environment="PATH=/home/pinchrep2/itinarep/it_venv/bin"
ExecStart=/home/pinchrep2/itinarep/it_venv/bin/uwsgi --ini itinarep.ini

[Install]
WantedBy=multi-user.target

Вот где я ssh из основного файла py main.py

sshforward = SSHTunnelForwarder(
    ("public ip", 22),
   ssh_username = 'user',
   ssh_password = 'pass',
   remote_bind_address = ('127.0.0.1', 3306)
)
sshforward.start()
local_port = sshforward.local_bind_port

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret_key'
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://root@localhost:{local_port}/asteriskcdrdb"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

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

1 Ответ

0 голосов
/ 13 мая 2019

Когда ваш URL-адрес соединения с базой данных ссылается на "localhost", он действительно соединяется через сокет unix.

Вы можете подключиться, используя local_bind_address, содержащий сокет unix, добавив ?unix_socket=/path/to/mysql.sock к SQLALCHEMY_DATABASE_URI, как этот ответ .

Похоже, подключение к удаленному unix-сокету ожидает выполнения этой восходящей проблемы .

...