PaasであるHerokuでLaravelをDeployする方法。
#Heroku
- PHPが利用可能なPaaSサービス
- サーバーの知識がなくてもデプロイあk脳
##PaaS
- クラウドサービスの1つ
- サービス側がめんどくさいところをやってくれる
- VPSとかにくらべるとインフラの管理・構築は劇的にラクになる
Heroku以外のPaaSではPHPが使えないものもある。
他のクラウドサービスとしてIaaS(例:Amazone EC2)、SaaS(例:Google Apps)などがある。
##補足:レンタルサーバー / VPS のデメリット
###レンタルサーバー
細かい設定、セキュリティとかちゃんとできない
###VPS
一からできるけど大変、セキュリティやパッチ(プログラムの修正や更新のこと)が大変
#準備
- Herokuアカウントの作成
- Herokuの管理画面からアプリケーションを作成(名前がアドレスになる)
- Heroku toolbeltをインストール(ターミナルでherokuを打っていろいろ出てきたら入ってる)
#Heroku Procfileの作成
- Heroku上でサーバーを立ち上げるために必要なファイル
- サーバーのほか、ワーカーを立てることも可能
-
$git push
したときにどんなファイルを立ち上げるかを書く
web: vendor/bin/heroku-php-apache2 public/
と中に記述する。
ワーカー(サーバーと違ってずっと動き続けるようにする)にしたい場合はweb
以外の名前でProcfile中に記述する。
#アプリケーションキーの設定
.env
のAPP_KEY
を管理画面 Settings > Config Variables に書く。
##Config Variablesの中身をコンソールに表示する
heroku config
heroku config -s
にすると.envファイルにそのまま貼れる形になる。
#Herokuにデプロイ
{appname}
は準備の2.で決めた名前。
# git のリモートを追加
heroku git:remote -a {appname}
# deploy
git push heroku master
# 確認
heroku open
##エラーになりがちなこと
キーの設定し忘れ。
管理画面の Settings > Config Variables でAPP_KEYを設定。
#Heroku Buildpackの設定について
作成されるインフラのベースとなるもの。
勝手に設定してくれていることもあるが、.package.json
の構成からNode.jsになってることもあるらしい。
その場合はCLI経由で
heroku buildpacks:set heroku/php
とするか、管理画面の Settings > Buildpacks で設定する。
#GitHubと連携
管理画面の Deploy で
- Deployment method をGitHubにする
- App connected to GitHub / Automatic deploys も設定する
Automatic deploys を設定しておくことで、GitHubにpushすると同時にherokuにもpushされるようになる。
##エラーになりがちなこと
GitHubにProcfileをpushし忘れる。
#Logを見る
heroku logs
監視(tail mode)する場合は
heroku logs -t
#アドオン
Herokuの拡張機能とか。
「メール系」「監視系」「ログ系」「キャッシュ用」などがある。
##Heroku Postgres
アドオンの1つ。
検索して追加すれば、自動的に設定のConfig Variablesにurl(Heroku PostgresのDBアドレス)が入る。
postgres://{username}:{password}@host:port/{dbname}
LaravelのDBnameとかをConfig VariablesにいれたらOK。
#その他メモとか
##pushするたびに前のサーバーは捨てられる
前にpushしたときの状態に戻したいときは管理画面の Activity > Roll back から。
##Resourcesからプランを追加できたりする
アカウントの設定からクレジットカードも登録すればそれだけで拡張機能も使えるようになる。
##HerokuのDBとHerokuの上のLaravelは別物
Heroku Postgresを使うのであればConfig valueをかきかえる。
#参考サイトとか