Herokuアプリが動かなくなった -> HerokuのWEBプロセスが止まってた -> その解決方法
昨日(2012.1.7)、herokuにホスティングしてる、
Python / Django製のWEBアプリ、2chまとめ番付をマイナーアップデートしたら、
何故かこんなメッセージの画面が出て動かなくなった。
An error occurred in the application and your page could not be served. Please try again in a few moments. If you are the application owner, check your logs for details.
文言をちょこっと修正しただけで、プログラム自体に改変は加えてないのに、
何故。。。と思って、Twitterアカウント(bot)を調べてみると、
こちらは動いている様子。
補足 :
2chまとめ番付は、1時間に一度、2chまとめサイトのRSSを読み込んで来て、
各記事のはてブ数を取得、その時間の新着ランキング1位、
最も最新の記事などをツイートしているんです。
なので、裏側のワーカープロセスはちゃんと動いてて、
WEBプロセスが死んでるって状況。
Heroku のAPP管理で見ても、普段立ち上がってるはずの
WEBプロセスが表示されていない。。
コマンドで、
heroku ps:scale web=1
ってやっても
Scaling web processes... failed
! No such type as web
って表示される。。
解決方法
色々調べた結果、以下の処理で再稼働できました。
1. Procfile作成
Procfile という名前のファイルを作って以下の内容を入れて保存
-> アプリケーションフォルダのルートに入れる。
web: python manage.py runserver 0.0.0.0:$PORT --noreload
2. herokuにpush
いつも通りですが一応。
git add .
git commit -"メッセージ"
git push heroku master
これだけでも動きません。
もう一度手動でWEBワーカーを起動してやる必要があります。
heroku ps:scale web=1
これで正常動作に戻りました。(ホッ
これまで、Procfileというファイルを作成した覚えが無いですし、 別の正常に動いているHerokuアプリのディレクトリを見ても、Procfileなんてなかったんですが、 どういうことなんでしょうか。。。
原因はわかっておりませんが、ご存知の方いらっしゃったら
お教え願えますと幸いです。
ともあれ、戻ってよかったです!