普段はRailsばかり使っているんですが、ちょっとPHPも思い出してみようということで、話題(?)のフレームワーク『Laravel』に手を伸ばしてみました。また、最近PHPをベータサポートしたということなので、herokuにデプロイしてみることにします。
環境
- Mac OS X 10.8
- PHP 5.5
- composer 1.0.0-alpha8
Laravelアプリの作成
composerがインストールされていることが前提です。まだインストールしていない方は公式ページを参考にしてみてください。コマンド1行で済みます。
https://getcomposer.org/doc/00-intro.md#installation-nix
composerコマンドでプロジェクトを作成します。
📄.gitignore
$ composer create-project laravel/laravel <プロジェクト名> --prefer-dist
<プロジェクト名>にはお好きな名前をどうぞ。カレントディレクトリに同名のディレクトリが生成されるはずです。ここでは便宜上brownbearというプロジェクト名で説明します。
[ Mcrypt PHP extension required.というエラーが出る方 ]
mcryptがインストールされていませんのでインストールしてください。ググると色々出てくると思います。以下はhomebrewでphpをインストールした場合のインストール例です。
$ brew install php55-mcrypt
無事Laravelプロジェクトが作成できたら、プロジェクトディレクトリに移り動作を確認しておきます。
$ cd brownbear
$ php artisan serve
artisan(フランス語で「職人」という意味)コマンドにserveオプションを渡すと、PHPのビルトインWebサーバが起動します。http://localhost:8000 をブラウザで開いてみます。
無事シンプルかつエレガントな画面が表示されました。
Herokuにデプロイする
まずは、gitレポジトリを作成します。
$ git init .
$ git add .
$ git commit -m "initial commit"
次に、heroku上にレポジトリを作成します。
$ heroku create
さっそくheroku上にプッシュしてみましょう。
$ git push heroku master
...
! ERROR: Your composer.json specifies dependencies, but no composer.lock
was found, please check it into your repository along with composer.json!
...
早々にエラーが出てしまった・・・。composer.lockがねえぞコラ的な、あたたかいメッセージですね。従いましょう。
Laravelアプリのデフォルトの.gitignoreにcomposer.lockが登録されているのが原因です。この行を削除してください。
/bootstrap/compiled.php
/vendor
composer.phar
composer.lock ←この行を削除
.env.*.php
.env.php
.DS_Store
Thumbs.db
git add, commit して、再度git push heroku masterします。正常にデプロイが完了するはずです。ブラウザを開いて確認してみましょう。
📄Procfile
$ heroku open
403! これはapacheのルートディレクトリが間違っているからです。Herokuは Procfile でwebプロセスをコンフィグレーションすることができるようになっています。カレントディレクトリにこのProcfileを作成します。
$ vi Procfile
web: vendor/bin/heroku-php-apache2 public
これでルートがLaravelプロジェクト直下のpublicになります。では最後のpushを実行した後、ブラウザで確認してみてください。
無事ロゴが表示されました! デプロイ完了です。