Я запускаю приложение Flask на дроплете DigitalOcean, используя Gunicorn и Nginx на Ubuntu 18.04 VPS. Я выполнил этот урок для настройки.
У меня возникают две странные проблемы при доступе к приложению из моего домена -
- * JavaScript элементы либо не отвечают, либо реагируют слишком долго. Это в основном связано с кнопками, которые запускают JS, которые совершают вызовы Ajax и отображают результаты. Все остальные не Ajax JS работают нормально.
- На определенном маршруте приложение, кажется, вводит бесконечную перезагрузку l oop. Это связано с планом Я использую для отображения и просмотра тегов. Маршрут -
@tags_bp.route('/<language>/tags/<tag_search>', methods=['GET'])
- представляет шаблон с некоторыми ответами от сервера. Союзный маршрут - @tags_bp.route('/<language>/tags/<tag_search>/<variable>', methods=['GET'])
- возвращает только ответы сервера в виде JSON, которые отображаются на странице.
Интересно, что ни одна из этих проблем не появляется, когда я запускаю приложение на localhost (порт 5000 ) используя Gunicorn на <Droplet IP>:5000
. Проблемы возникают только тогда, когда я получаю доступ к <domain>
.
Мои файлы конфигурации в точности соответствуют предложенным в учебном пособии . Я использую отдельный блок сервера для своего домена вместо значения по умолчанию.
Я подозреваю, что проблема лежит где-то между Nginx и Gunicorn. Я попытался изменить headers
в Nginx на основе этой страницы в Flask документации , но это тоже не помогло.
Кроме того, на сайте есть сертификат SSL выпущено Let's Encrypt с использованием certbot.
Есть предложения, как отладить / исправить это?
Приветствия.
Редактировать: Конфигурационные файлы следующие -
системный файл systemmd в /etc/systemd/system/myproject.service
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target
[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/<USER>/myproject
Environment="PATH=/home/<USER>/myproject/myprojectenv/bin"
ExecStart=/home/<USER>/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target
Серверный блок на /etc/nginx/sites-available/myproject
server {
listen 80;
server_name your_domain www.your_domain;
location / {
include proxy_params;
proxy_pass http://unix:/home/<USER>/myproject/myproject.sock;
}
# Let's Encrypt credentials ...
}
nginx.conf
точно по умолчанию, за исключением того, что server_names_hash_bucket_size 64;
равно без комментариев .