HTML-шаблон приложения Flask не обновляется после добавления версии Dev на сервер - PullRequest
0 голосов
/ 22 февраля 2019

У меня была установка, которая работала нормально, используя git для отправки локальных изменений разработки в репозиторий в Digital Ocean, который затем использует ловушку post-receive для отправки главной ветви в / var / www / MYAPPNAME /.Я также использую gunicorn через supervisor для запуска сайта вместе с nginx - теперь, когда я добавил ветку git development, которая отправляется в /var/www/dev.MYAPPNAME/ У меня, похоже, проблемы (возможно, совпадение, возможно, возникла проблема при обновлении конфигурации supervisor / nginx).

Если я сделаю небольшое обновление HTML в моем шаблоне приложения Flask /app/templates/index.html или /base.html для dev версия моего приложения / сайта, я не могу заставить сайт отображать изменения.Субдомен dev, кажется, указывает на производственное приложение, а не на отдельную ветку dev и связанную папку кода.Я могу сказать, что изменения кода попадают в нужную папку (/var/www/dev.MYAPPNAME), но когда я запускаю «sudo supervisorctl reload», как я делаю, чтобы получить изменения кода в рабочей папке для обновления на живом производственном сайте,обновленный текст в моем HTML не отображается.

Я пытался:

  • Удаление вручную файлов / папок pycache на сервере
  • Перезагрузка супервизора с помощью sudo supervisorctl reload
  • Добавление TEMPLATES_AUTO_RELOAD = True и DEBUG = True для моего файла .env, чтобы попытаться заставить Jinja перезагрузить шаблоны
  • Перезагрузка Nginx
  • Перезагрузка сервера

Файл MYAPPNAME.py (одинаковый для dev и рабочей версии сайта):

from app import app

/ app / init .py (также одинаков для обоих):

from flask import Flask
app = Flask(__name__)
from app import routes

/ app / rout.py (одинаково для обоих сайтов):

from flask import render_template
from app import app
@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html', title='MYAPPNAME')

/ app / static просто содержит bootstrap.css и bootstrap.js

/ app / templates содержит base.html и index.html, который расширяет base.html - изменения, которые оба работали нормально до того, как я ввел второй / dev-сайт на сервер, но теперь не распознаются на сайте dev для разработки.

.env file (который я также скопировал.файл flaskenv):

FLASK_APP=MYAPPNAME.py
TEMPLATES_AUTO_RELOAD=True
DEBUG=True

Вот мой /etc/supervisor/conf.d/dev.MYAPPNAME.conf (не будет шокирован, если здесь что-то не так):

[program:dev.MYAPPNAME]
command=/var/www/dev.MYAPPNAME/venv/bin/gunicorn -b localhost:8001 -w 4 MYAPPNAME:app
directory=/var/www/dev.MYAPPNAME
user=MYUSERNAME
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

И мой не-dev /etc/supervisor/conf.d/MYAPPNAME.conf:

[program:MYAPPNAME]
command=/var/www/MYAPPNAME/venv/bin/gunicorn -b localhost:8000 -w 4 MYAPPNAME:app
directory=/var/www/MYAPPNAME
user=MYUSERNAME
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

Конфигурация Nginx для сайта разработчика: /etc/nginx/sites-available/dev.MYAPPNAME (также не будетбудьте шокированы, если что-то не так с этими двумя файлами):

server {
    listen 80;
    server_name dev.MYAPPNAME;
    root /var/www/dev.MYAPPNAME;
    access_log /var/log/dev.MYAPPNAME_access.log;
    error_log /var/log/dev.MYAPPNAME_error.log;
    location / {
        proxy_pass http://localhost:8001;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location /static {
        alias /var/www/dev.MYAPPNAME/app/static;
        expires 30d;
    }

}

Конфигурация Nginx для сайта не-dev: / etc / nginx / sites-available / MYAPPNAME:

server {
    listen 80;
    server_name MYAPPNAME;
    root /var/www/MYAPPNAME;
    access_log /var/log/MYAPPNAME_access.log;
    error_log /var/log/MYAPPNAME_error.log;
    location / {
        proxy_pass http://localhost:8000;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location /static {
        alias /var/www/MYAPPNAME/app/static;
        expires 30d;
    }

}

Я ценю любое направление, которое я могу дать, другие вещи, которые я могу проверить, очевидные ошибки и т. Д. Спасибо!

1 Ответ

0 голосов
/ 22 февраля 2019

Оказалось, что это была проблема Nginx, когда я не включил суффикс домена в имя_сервера, поэтому он вообще не видел сайт dev и перенаправлял трафик с URL-адреса dev.MYAPPNAME.MYDOMAINSUFFIX на MYAPPNAME.MYDOMAINSUFFIX.Я обновил файлы конфигурации следующим образом, перезапустил Nginx и Supervisor, и теперь он работает:

server_name dev.MYAPPNAME.MYDOMAINSUFFIX; 

server_name MYAPPNAME.MYDOMAINSUFFIX;
...