EC-CUBEをHerokuに5分で立ち上げられるようにしましたを書くためにやったこと、ハマったことを書いておきます
Herokuにアカウントを登録
HerokuToolbeltのインストール
アカウント作るとツールのダウンロードが出来ますが、MacならHomebrewのほうが早そうなのでbrewを使って導入します
heroku login には秘密鍵、公開鍵が必要なので事前に作っておくこと
~~~
$ brew install heroku-toolbelt
$ heroku login
~~~
Herokuへのデプロイ
gitで管理しているとこでコマンドを叩けばOK
~~~
$ heroku create
$ git push heroku master
~~~
ハマリポイント①
pushするリポジトリは master じゃないと Pushed to non-master branch, skipping build. を言われてbuildしてくれない
ハマリポイント②
ルートに composer.json を置いておいても、package.json があるとPHPのアプリと思ってくれずにNode.jsとしてbuildしようとしてコケる。
なにか回避方法があるのでしょうか?
~~~
—–> Node.js app detected
PRO TIP: Specify a node version in package.json
See https://devcenter.heroku.com/articles/nodejs-support
—–> Defaulting to latest stable node: 0.10.30
—–> Downloading and installing node
—–> Exporting config vars to environment
—–> Installing dependencies
npm WARN package.json [email protected] No description
npm WARN package.json [email protected] No README data
—–> Cleaning up node-gyp and npm artifacts
—–> Procfile not found and npm start script is undefined
PRO TIP: Create a Procfile or specify a start script in package.json
See https://devcenter.heroku.com/articles/nodejs-support
—–> Building runtime environment
—–> Discovering process types
Procfile declares types -> (none)
—–> Compressing… done, 15.5MB
~~~
Herokuでかくにん!
~~~
$ heroku open
~~~
ハマリポイント③
こんなログが出てエラー画面しか出ない
~~~
$ heroku logs –tail
2014-08-10T06:08:42.959681+00:00 heroku[router]: at=error code=H14 desc=”No web processes running” method=GET path=”/favicon.ico” host=ancient-peak-****.herokuapp.com request_id=**** fwd=”****” dyno= connect= service= status=503 bytes=
~~~
heroku scale web=0
heroku scale web=1
とする事により、起動するようになった。
起動しなくなった原因は不明
よくわかんないけど、これで動いた
ハマリポイント④
PHPのエラーログや、アプリで出力しているエラーログファイルはHerokuの特性上見ることが出来ません
display_errorsをOnに最初はしておくほうが懸命です
~~~
display_errors = On
~~~
ドキュメントルートの変更
Procfile をリポジトリのルートに設置すると変更できる
nginxを使いたい場合なんかもこのファイルで設定する
~~~
web: vendor/bin/heroku-php-apache2 html/
~~~
PostgreSQL
Herokuでは無料でPostgreSQLが使える
~~~
$ heroku addons:add heroku-postgresql
~~~
~~~
$ heroku config | grep DATABASE_URL
DATABASE_URL: postgres://[username]:[password]@[hostname]:[port]/[database]
~~~
DATABASE_URLという環境変数に接続情報が入っているので、これを使えばアレコレ出来る
もちろん、ダッシュボードからも確認できる
概ね、Getting Started with PHP on Heroku | Heroku Dev Centerを見ればわかるとは思います
コメント