将 flask 应用程序部署到 cpanel,路由不正确,到处都是 500 错误

Deploying flask app to cpanel, not routing properly, 500 errors everywhere

我跟着一个 youtube 教程学习了如何创建 Flask 网站,它在我的本地机器上完美运行。

我在我的 cPanel 中创建了一个子域,并使用 'setup Python app' 向导创建了应用程序,它成功了。所以我将我制作的 Flask 应用程序上传到服务器并安装了所有要求。去了网站,这就是我得到的: Website

显示主页(不应该,它应该将您定向到登录页面)并且它似乎与导航栏重叠。导航栏中的所有链接 return 出现 500 错误,在 cPanel 上的错误报告中没有登录。

我已经尝试让它工作 3 天了,我无法让它工作。

文件树: File Tree

网站文件夹包含所有文件和模板

run.py:

from Website import create_app

app = create_app()

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

passenger_wsgi.py:

import imp
import os
import sys


sys.path.insert(0, os.path.dirname(__file__))

wsgi = imp.load_source('wsgi', 'run.py')
application = wsgi.app

网站.init.py:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager
from flask_mail import Mail
from Website.config import Config



db = SQLAlchemy()
bcrypt = Bcrypt()
login_manager = LoginManager()
login_manager.login_view = 'users.login'
login_manager.login_message_category = 'info'

mail = Mail()




def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(Config)

    db.init_app(app)
    bcrypt.init_app(app)
    login_manager.init_app(app)
    mail.init_app(app)

    from Website.users.routes import users
    from Website.posts.routes import posts
    from Website.main.routes import main
    from Website.errors.handlers import errors
    from Website.booking.routes import booking
    app.register_blueprint(users)
    app.register_blueprint(posts)
    app.register_blueprint(main)
    app.register_blueprint(errors)
    app.register_blueprint(booking)
    return app

任何人都可以帮助找出我做错了什么吗?

问题似乎出在 URL_for() 命令路由链接

  1. The home page is displayed (it shouldn't be, it should direct you to the login page) <

可能是因为您需要将登录装饰器添加到主页的路由 url。也可能是因为您已经登录(您登录是为了将文件上传到您的 cpanel/hosting 服务器并且尚未注销;您应该尝试在不同的浏览器或私人浏览器中打开您的应用程序 window 在同一浏览器中)

  1. it seems to be overlapping with the navbar. <

这通常是由于 path 问题造成的,即您的应用没有看到静态文件(任何样式表、图像等)的正确路径。要确认,请将完整的 url 复制到您的样式表并尝试在新的浏览器选项卡中打开它。如果您收到 404,则表示您的路径不正确

回答我自己的问题。

问题在于将页面路由到一起的 url_for() 命令。不确定问题是什么,但它没有在正确的地方寻找。我通过转到 .htaccess 文件并添加

来修复它
RewriteEngine On 
RewriteRule ^http://%{HTTP_HOST}%{REQUEST_URI} [END,NE]

不再有 500 个错误,它可以找到 css 文件。