2015年10月4日日曜日

Herokuでexpressのwebアプリケーションを動かす。

expressアプリ作成及び動作確認の記事に続いて、今度はexpressのwebアプリケーションをHeroku上で動作させた時のメモです。
Herokuへwebアプリケーションを設置する方法は、HerokuのNode環境作成のメモの記事とほとんど同じ内容です。
が、全く同じ方法だと、expressのwebアプリケーションは正常に動作しませんでした。
その時の、解決方法もメモしておきます。

まず、Webアプリケーションのディレクトリに移動して、次のコマンドを入力します。
expressアプリ作成及び動作確認の記事で作成した[xxxxx]ディレクトリに移動します。

    heroku create --stack cedar

そしたら、webアプリケーションサイトのURLとGitのURLが表示されるので、メモしておく。(メモしておいたほうがいいでしょう。)

次のコマンドを順番に入力して、Gitへの登録とwebアプリケーションのデプロイをします。
※[yyyyy]は任意のコメント。[zzzzz]は、前の操作で、表示されるWebアプリケーションサイトのURLの"https://" と ".herokuapp.com/" の間の文字列)

git init
git add .
git commit -m "[yyyyy]"
heroku git:remote -a [zzzzz]
git push heroku master

そして、webアプリケーションサイトのURLにアクセスすると、作成したWebアプリケーションが表示される。はずですが、次のエラー画面が表示されてしまいました。

どのエラーになっているのかを確認するために、ターミナルで次のコマンドを
入力して、ログを確認します。


heroku logs -t

すると、次のようなエラーログが出力されていました。

2015-09-27T00:40:38.142003+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=[zzzzz].herokuapp.com request_id=a4dc2cec-8bdd-4be5-b1fe-0caaf311de15 fwd="223.133.135.59" dyno= connect= service= status=503 bytes=
2015-09-27T00:40:39.245105+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=[zzzzz].herokuapp.com request_id=4ec20557-a3a4-4e84-8fd6-db35ad8ee197 fwd="223.133.135.59" dyno= connect= service= status=503 bytes=

そして、at=error code=H10 desc="App crashed" をググっても
何が原因で、エラーになっているかがわかりませんでした。

ローカルのMac上で正常に動作するのに、Heroku上ではエラーになるんだろうと考えます。
そして、Heroku上でエラーになるのは、やはり環境の設定に誤りがあるはずだ。と思いました。

しばらく、今までの環境作成の手順や作成したexpressのwebアプリケーションのプログラムソースなどを、見てみます。
すると、package.jsonに次のような記述があるのです。

  "scripts": {
    "start": "node ./bin/www"
  },

ということは、ローカルのMac上では、./bin/wwwのプログラムがまず
動作しているのでは?と。であるならば、Procfileの内容が間違っているはずだ。と
思い、Procfileの内容を確認します。
Procfileの内容は、次のようになっています。

web: node app.js

これは、app.jsでなく、./bin/wwwにすれば、Heroku上で、expressのwebアプリケーションが動くかもしれない。と思い、Procfileを次のように、書き換えます。

web: node ./bin/www

そして、ターミナルで、次のコマンドを順番に実行して、expressのwebアプリケーションをデプロイします。

git add .
git commit -m "[yyyyy]"
git push heroku master

そして、WebアプリケーションサイトのURLにアクセスすると、Mac上でexpressのwebアプリケーションを動作させた時と同じ画面が表示されました。








0 件のコメント :

コメントを投稿