普段は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を実行した後、ブラウザで確認してみてください。
無事ロゴが表示されました! デプロイ完了です。
関連する記事
- rubocop + pre-commitで規約違反のコードをコミットできないようにする
- AngularJS + Railsで国際化(i18n)
- Railsアプリを『浅く』パフォーマンス・チューニングしてみる(その1)
- 【tubetop】YouTubeの国別人気動画を自動集約するサイトを作ってみた
- 久しぶりにRailsで開発して感じたこと