添加开发版本后,Flask应用程序HTML模板未更新

2024-05-29 04:07:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个运行良好的设置,使用git将本地开发更改推送到Digital Ocean上的repo,然后使用post receive钩子将主分支发送到/var/www/MYAPPNAME/。我还通过supervisor使用gunicorn与nginx一起运行站点——现在我添加了一个git开发分支,它被发送到/var/www/我的名字/appdev我似乎有问题(可能是巧合,也可能是更新supervisor/nginx配置时引入的问题)。在

如果我对Flask app template/app/templates中的HTML做一个小的更新/索引.html或者/基本.html对于我的应用程序/站点的dev版本,我无法让站点显示更改。dev子域似乎指向生产应用程序,而不是单独的dev分支和相关的代码文件夹。我可以判断代码更改会进入正确的文件夹(/var/www/开发人员MYAPPNAME)但是,当我像运行“sudo supervisorctl reload”那样运行“sudo supervisorctl reload”以获取生产文件夹中的代码更改以在实时生产站点上刷新时,HTML中更新的文本不会显示。在

我试过了:

  • 手动删除服务器上的pycache文件/文件夹
  • 用sudo supervisorctl重新加载主管
  • 将TEMPLATES_AUTO_RELOAD=True和DEBUG=True添加到my.env文件中,以尝试强制Jinja重新加载模板
  • 重新启动Nginx
  • 重新启动服务器

在我的应用程序名.py文件(站点的开发和生产版本都相同):

from app import app

/app/init.py文件(两者都相同):

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

/应用程序/routes.py(两个站点相同):

^{pr2}$

只包含/staticbootstrap.css以及引导程序.js在

/app/templates包含基本.html以及索引.html延伸基本.html-在我将第二个/dev站点引入服务器之前,对这两个站点的更改都运行得很好,但是现在在developbranchdev站点上没有被识别出来。在

.env文件(我也将其复制到.flaskenv文件):

FLASK_APP=MYAPPNAME.py
TEMPLATES_AUTO_RELOAD=True
DEBUG=True

这是我的/etc/supervisor/conf.d/开发人员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/我的appname.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/开发人员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配置:/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;
    }

}

我很感激能给我的任何指示,我可以检查的其他事情,明显的错误等等。谢谢!在


Tags: 文件devlogtrueapp站点varhtml
1条回答
网友
1楼 · 发布于 2024-05-29 04:07:11

结果发现这是Nginx的问题,我没有在服务器名称中包含域后缀,因此它根本看不到dev站点,而是从dev.MYAPPNAME.MYDOMAINSUFFIX指向的URLMYAPPNAME.MYDOMAINSUFFIX. 我更新了配置文件如下,重新启动了Nginx和Supervisor,现在它开始工作了:

server_name dev.MYAPPNAME.MYDOMAINSUFFIX; 

server_name MYAPPNAME.MYDOMAINSUFFIX;

相关问题 更多 >

    热门问题