話題のPHPフレームワークLaravelアプリをHerokuにデプロイしてみる


普段は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アプリのデフォルトの.gitignorecomposer.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

403! これはapacheのルートディレクトリが間違っているからです。Herokuは Procfile でwebプロセスをコンフィグレーションすることができるようになっています。カレントディレクトリにこのProcfileを作成します。

$ vi Procfile
web: vendor/bin/heroku-php-apache2 public

これでルートがLaravelプロジェクト直下のpublicになります。では最後のpushを実行した後、ブラウザで確認してみてください。

デプロイ完了

無事ロゴが表示されました! デプロイ完了です。

関連する記事