python - Flask 子域与 Heroku 和 Godaddy(SERVER_NAME 问题)

标签 python heroku flask subdomain

我正在尝试在 Flask 服务器上设置一个子域,该服务器有一个托管在 Heroku 上的服务器和一个托管在 GoDaddy 上的自定义域。我已验证我的子域在本地工作。子域是我应用程序中的单独蓝图。我在 flask 中的设置是:

blueprint = Blueprint('blueprint', __name__, template_folder="templates", subdomain="blueprint")

@blueprint.route('/')
def index():
    return "Hello Mate"

然后

app.config['SERVER_NAME'] = os.environ['MY_SERVER_NAME']
from blueprint.views import blueprint
    app.register_blueprint(blueprint)

在我的本地机器上,我在主机文件 (/etc/hosts) 中设置了一条自定义记录来测试子域。该文件包含以下条目:

127.0.0.1 virtual.local
127.0.0.1 blueprint.virtual.local

如果我导航到 blueprint.virtual.local:5000,我会看到预期的结果(一个只显示 Hello Mate 的页面。我相信这证明了我的子域设置设置正确,至少在 flask 内。

我将我的代码推送到我的 heroku 应用程序,这就是我开始遇到问题的地方。我的 heroku 站点以前有一个与之关联的自定义域。我首先为新子域添加一个条目。在终端中运行 heroku domains 给我:

=== myapp Domain Names
blueprint.mysite.com
www.mysite.com
myapp.herokuapp.com
mysite.com

我遇到的第一个问题是我只能在 heroku URL 或自定义域上查看我的站点。这是 app.config['SERVER_NAME'](我设置它以使我的子域工作)链接到 heroku URL 或我的自定义 URL 的结果。当它设置为 heroku URL 时,我只能在访问该 URL 时看到该站点,而当我转到我的自定义域时,我会收到 404 错误。当我切换 SERVER_NAME 的值时,情况相反。

第二个问题是我无法让我的子域在 Heroku 上与 GoDaddy 一起使用。在 GoDaddy 中,我创建了一个 CNAME 记录,将我的子域 (blueprint) 指向我的 heroku 站点 (myapp.herokuapp.com)。它是否正确?每当我访问自定义域 (blueprint.mysite.com) 上的子域时,我都会收到 404 错误。我相信这与第一个问题有关,但我不确定。我是否遗漏了任何步骤?

关于正确设置方法的任何建议,以便我可以在 Heroku 上使用 Flask 子域,托管在 GoDaddy 的自定义域上?提前致谢!

最佳答案

我怀疑您混淆了 Flask 蓝图和 Heroku 应用程序。一个 flask app(及其包含的 git 存储库,在这种情况下)是一个且只有一个 Heroku app(一个单一的域,或子域......但至关重要的是,只有一个其中)。

Flask 蓝图是一种组织单个 Flask 应用程序的各个部分以更加模块化的方式。

要在 awesome.darrellsilver.comsauce.darrellsilver.com 创建 Heroku 应用程序,您应该在两个独立的 Git 存储库中设置两个独立的 Flask 应用程序。

关于python - Flask 子域与 Heroku 和 Godaddy(SERVER_NAME 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28571515/

相关文章:

python - psycopg2 的构建轮失败

python - 写入磁带记录结束 linux

python - Gunicorn3 进入开发服务器

jquery - 如何从 ajax POST 表单提交中使用 Flask 的 render_template

python - 使用 python ctypes 和 libc 将 void 指针写入二进制文件

python - 如何在python中获取行基础行总计中每个值的百分比

postgresql - 在 Spring Boot 2、Hibernate、PostgreSQL 中通过 JDBC 语句执行 DDL 时出错

reactjs - 类型错误 : Cannot read property 'attach' of undefined makeStyles. js

javascript - Knex Heroku 错误 : self signed certificate

javascript - 从html代码调用python函数