2017-11-06 9 views
0

FlaskとPythonを使用して非常に単純なFlaskアプリケーションを作成しようとしています。データベースやその他のプラグインはありません。アプリケーションは私のローカルマシン上で正常に動作し、エラーなくナビゲートすることができますが、Herokuにデプロイすると、インデックスを含め、私が訪問しようとしているページで404 Not Foundエラーが発生します。 Site Layout404 HeraskでFlaskアプリケーションを実行するとエラーが発生する

mbtaCrTracker.pyは私のアプリのルートです:

は、ここに私のサイトのレイアウトです。ここでは、それが現在のようになります。

from mbtaCrTracker import app 
from mbtaCrTracker import views 
app.run(host='0.0.0.0', debug=True) 

ここに私の_のinit _.pyです:

from flask import Flask 
app = Flask(__name__) 

は、ここに私のviews.pyです:

from flask import render_template, request, redirect 
from mbtaCrTracker import app 
from getTrainInfo import getTrainInfo 

@app.route('/') 
@app.route('/index') 
def index(): 
    return render_template('index.html') 

@app.route('/map', methods=['GET']) 
def findTrain(): 
    line = request.args.get('line') 
    direction = request.args.get('direction') 
    coords = getTrainInfo(line, direction) 
    return render_template('map.html', coords=coords) 

は、ここに私のProcfileです:

web: gunicorn mbtaCrTracker:app --log-file=- 

私はすべてが正しく設定されていると思う私は何の問題もなくローカルでアプリを走らせることができるからです。私がHerokuにデプロイすると、サイトがクラッシュしていないUpであることがわかります。サーバーのエラーは表示されません。ただ見つからないエラーです。まるで私のルートがうまく動かないかのようなものです。

は、ここで私は自分のサイトのホームページにアクセスしようとしたとき、私は私のHerokuのログに見るものです:

2017-11-06T12:23:17.717474+00:00 heroku[web.1]: Starting process with command `gunicorn mbtaCrTracker:app --log-file=-` 
2017-11-06T12:23:19.795333+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [4] [INFO] Starting gunicorn 19.7.1 
2017-11-06T12:23:19.796263+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [4] [INFO] Listening at: http://0.0.0.0:43494 (4) 
2017-11-06T12:23:19.796405+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [4] [INFO] Using worker: sync 
2017-11-06T12:23:19.800312+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [8] [INFO] Booting worker with pid: 8 
2017-11-06T12:23:19.810431+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [9] [INFO] Booting worker with pid: 9 
2017-11-06T12:23:21.351354+00:00 heroku[web.1]: State changed from starting to up 
2017-11-06T12:23:29.564508+00:00 heroku[router]: at=info method=GET path="/" host=mbtacrtracker.herokuapp.com request_id=cdae33d9-9f9d-4568-b619-b6c10bb34e9b fwd="172.58.216.112" dyno=web.1 connect=1ms service=19ms status=404 bytes=386 protocol=https 

思考?ここで

+0

これは、アプリケーションがポート43494でリッスンしているようです。これはアクセスしようとしているポートですか?ルーティングが指定されていますか?すべてのポートを開く必要がありますか? –

+0

Herokuは、アプリケーションが停止して再起動するたびにランダムポートを選択するようです。たとえば、私はもう一度やり直しましたが、現在はポート16469を使用しています。そのポートでアプリケーションにアクセスしようとすると、「このサイトには到達できません」というメッセージが表示されます。私は私のアプリで特定のポートを必要としていません。したほうがいい? 私は元の投稿に含まれているいくつかのルートを持っています。 –

+0

私はそれが港を選ぶガンコーンだと思うが、私は完全にはわからない。ホストを指定するポートを指定するとどうなりますか? 'app.run(host = '0.0.0.0'、debug = True、port = 1337)' –

答えて

0

は、あなたが成功しHerokuのにデプロイするために従うことができるいくつかの手順は次のとおりです。

は、ルートディレクトリにmbtaCrTrackerの内容をカットmbtaCrTracker.py

app.pyに名前を変更します。 mbtaCrTrackerディレクトリを削除します。

app.pyが含まれている必要があります

from flask import Flask, render_template, request, url_for, redirect 
from getTrainInfo import getTrainInfo 

app = Flask(__name__) 

@app.route('/') 
@app.route('/index') 
def index(): 
    return render_template('index.html') 

@app.route('/map', methods=['GET']) 
def findTrain(): 
    line = request.args.get('line') 
    direction = request.args.get('direction') 
    coords = getTrainInfo(line, direction) 
    return render_template('map.html', coords=coords) 

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

Procfileが含まれています。これはgithubでこれをプッシュすることですし、その後herokuでアプリでgithubリポジトリをリンク展開する

web: gunicorn app:app 

そして、もう一つの簡単な方法を。

+0

アドバイスありがとうございました! セットアップチュートリアルを最初に実行していたとき、私は自分のアプリを「アプリ」と命名しましたが、すぐにmbtaCrTrackerに変更しました。 私のルート/ビューを他のものと組み合わせることなく、これをHeroku上で動作させる方法はありますか?それは、よりクリーンなデザインのためにすべて別々に保つことを好みますが、それができない場合は –

+0

最初にこれを試して、すべてのものが英雄でスムーズに動いていることを確認してください。[blueprints](http://flask.pocoo.org/docs/0.12/blueprints/)をチェックしてください。 – arsho

+0

さて、私は先に進み、あなたの提案に従ってプロジェクトの構造を変更しました。私はアプリを起動することができますが、私はそれにアクセスしようとすると、私はHerokuでやっているのと同じように404 Not Foundを取得します。エラーをローカルで正確に再現できるようになりました。 私は経路を持っているのですが、彼らが働いていないかのようです。 –

関連する問題