2015-02-17 123 views
3

我想在燒瓶服務器上設置一個子域,其中有一個託管在Heroku上的服務器和一個託管在GoDaddy上的自定義域。我已驗證我的子域在本地工作。該子域是我的應用程序中的一個單獨的藍圖。我在瓶中的設置是:與Heroku和Godaddy燒瓶子域(SERVER_NAME問題)

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) 

在我的本地機器,我設置了一個自定義記錄在我的hosts文件(/etc/hosts)來測試的子域。該文件具有項:。

127.0.0.1 virtual.local 
127.0.0.1 blueprint.virtual.local 

如果我瀏覽到blueprint.virtual.local:5000,我看到預期的結果(一個頁面,只是說:​​我相信這證明了我的子域設置設置正確,至少在瓶中

我將我的代碼推送到我的heroku應用程序,這是我開始遇到問題的地方。我的heroku站點有一個與之前相關的自定義域。我開始爲新的子域添加一個條目。終端給我:

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

我遇到的第一個問題是,我只能在he​​roku網址或自定義域中查看我的網站。這是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

我懷疑你很困惑Flask Blueprints和Heroku應用程序。一個燒瓶應用程序(在這種情況下它的包含git倉庫)是唯一一個Heroku 應用程序(單個域或子範圍...但關鍵只有其中一個)。

Flask Blueprint是一種將單個Flask應用程序的各個部分組織爲更加模塊化的方法。

要在awesome.darrellsilver.comsauce.darrellsilver.com上創建Heroku應用程序,您應該在兩個獨立的Git倉庫中設置兩個獨立的Flask應用程序。

+0

有趣 - 內置Flask子域的用例是什麼,然後(如http://stackoverflow.com/questions/11021691/dynamic-subdomain-handling-in-a-web-app-flask)?它是否有用,但不是在Heroku上託管? – 2015-02-18 15:58:47

+0

試了一下,並部署成功。 – 2015-02-19 19:59:09

0

對於什麼值得,我在使用Heroku上的Flask切換到SSL端點時遇到了404個問題。我所要做的就是將app.config「SERVER_NAME」更改爲之前存在的「CUSTOMENDPOINTNAME.herokuapp.com」中新的「www.CUSTOMENDPOINTNAME.com」地址。