带有Heroku和Godaddy的Flask子域(SERVER_NAME发布)

时间:2015-02-17 21:34:57

标签: python heroku flask subdomain

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

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的页面。我相信这证明我的子域设置已正确设置,至少在烧瓶内。

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

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

我遇到的第一个问题是我只能在he​​roku 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上的自定义域上托管?提前谢谢!

2 个答案:

答案 0 :(得分:2)

我怀疑你对Flask Blueprints和Heroku应用程序感到困惑。一个烧瓶 app (在这种情况下,它包含git存储库)是一个且只有一个Heroku app (一个域名,或者是一个子域名......但至关重要的是,只有一个他们)。

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

要在awesome.darrellsilver.comsauce.darrellsilver.com创建Heroku应用,您应该在两个独立的Git回购中设置两个独立的Flask应用。

答案 1 :(得分:0)

对于它的价值,当我在Heroku上使用Flask切换到SSL端点时,我遇到了404问题。我所要做的就是将app.config“SERVER_NAME”更改为之前的“CUSTOMENDPOINTNAME.herokuapp.com”中的新“www.CUSTOMENDPOINTNAME.com”地址。