Laravel5をpostgresqlでHerokuにデプロイ
Laravel5をherokuに入れてみました。
ブラウザやディレクトリでの操作は一切なしで、黒い画面のみで作成してみました。
mcrypt
ローカルにてインストールしようとするとないと怒られたので導入。
また、PHPのバージョンが古い場合は、アップデートが必要。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
laravelの導入
インストール
1 2 3 |
|
ドキュメントルートの設定
1 2 |
|
Gitを作成
1 2 3 |
|
herokuアプリの作成
1 2 3 4 |
|
このままデプロイすると、package.json
がルートディレクトリにあるため、nodejs
のアプリになってしまう。
なので、phpのビルドパックを追加。
https://github.com/heroku/heroku-buildpack-php
1 2 3 |
|
アプリの作成と同時にするには、
create
の後に、--buildpack URL
を追加してやると一回で設定できる。
$ heroku create laravel-sample-on-heroku —buildpack URL xxx
すでにリモートリポジトリに追加されているので、pushしてデプロイ。
$ git push heroku master
ページを開くとすでに動作する状態。
$ heroku open
完了!
DBの設定
アドオンを追加(無料)
$ heroku addons:add heroku-postgresql:dev
DBの情報を取得
$ heroku config | grep HEROKU_POSTGRESQL
HEROKU_POSTGRESQL_CRIMSON_URL: postgres://UserName:Password@Host.compute-1.amazonaws.com:Port/DatabaseName
生成したDBをプライマリーに設定
$ heroku pg:promote HEROKU_POSTGRESQL_CRIMSON_URL
Promoting HEROKU_POSTGRESQL_CRIMSON_URL (DATABASE_URL) to DATABASE_URL... done
ここからはファイル編集
$ vi config/database.php
---
//29行目
'default' => 'mysql',
↓
'default' => 'pgsql',
---
//冒頭に追加
$url = parse_url(getenv("DATABASE_URL"));
$host = $url["host"];
$username = $url["user"];
$password = $url["pass"];
$database = substr($url["path"], 1);
---
//67行目から
'pgsql' => [
'driver' => 'pgsql',
'host' => $host,
'database' => $database,
'username' => $username,
'password' => $password,
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
],
pushしてデプロイ
$ git add .
$ git commit -m 'setup Heroku PostgreSQL'
$ git push heroku master
最後にマイグレーションを実行
1 2 3 4 5 6 7 8 9 10 |
|
/auth/register
で、ユーザー登録画面。
/auth/login
でログイン。
/password/email
でパスワードリセットになる。
(メール送信は設定していないので出来ない)
一通りの設定はこれで完了!
あとはセッション保持にMemCachierかRedis To Goの設定や、
メール送信用にSendGridなどが必要になると思う。
サンプル
作成したアプリは以下。
http://laravel-sample-on-heroku.herokuapp.com
参考
macosxのphpにmcryptをインストール – Qiita
Deploy Laravel on Heroku
Laravel on Heroku – Using a PostgreSQL database – MattStauffer.co