Symfony2 on Heroku

記事タイトルとURLをコピーする
開発部の新坂です。
Herokuでは、Ruby on RailsやJavaが正式にサポートされています。(PaaSに関する参考記事)
PHPは動かないの?どうなの?という声が当然にあるのですが、Buldpackを使うことで(正式サポートではないものの)PHPも動作します。
小さなアプリケーションの動作させるにはお手軽ですね。
現実的にアプリケーションをデプロイするとなると、素のPHPではなく、フレームワークを使用する場面が多いと思います。今回はHerokuへのSymfony2フレームワークデプロイを試してみました。

手元(ローカル)の環境

各コマンドについては準備してあるものとします。
また、Herokuのアカウント、gitコマンドも必要です。
Ruby
$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
 
Heroku Toolbelt
$ heroku version
heroku-toolbelt/2.40.1 (x86_64-linux) ruby/2.0.0
 
Composer
$ composer
(logo snip)
Composer version 9b70b89b8f8d60b56b5900ea232109427604c748
 

Symfony2プロジェクトをローカルに作成

Composerを使い、ローカル環境にSymfony2プロジェクトをインストールします。
最後にDBやメールの設定を尋ねられますので、テキトー(or適切)に入力します。
$ composer create-project symfony/framework-standard-edition sample-prj 2.3.4
 
Symfonyプロジェクトの動作確認
$ cd sample-prj
$ php app/console server:run
Server running on localhost:8000
 
ブラウザで確認できます。
 

必要なファイルを作成

使用するBuildpackにもよるのかもしれませんが、下記2つのファイルを作成することでデプロイ可能となります。
ファイル位置はプロジェクトディレクトリからのパス(今回であれば、sample-prj/からのパス)となります。
index.php
空のファイルを作成します。
$ touch index.php
 
app/config/parameters_prod.yml.erb
空のファイルを作成します。
$ touch app/config/parameters_prod.yml.erb
 

gitで管理

プロジェクトディレクトリ(今回は sample-prj)で下記コマンドを実行します。
$ git init
$ git add .
$ git commit -m 'first commit'
 

アプリケーションを実装

なんか作りましょう。
$ php app/console generate:bundle
(snip)
Bundle namespace: Sample/TestBundle
(snip)
Configuration format (yml, xml, php, or annotation):yml
(snip)
  You can now start using the generated code!
 
Webサーバー動作
$ php app/console server:run
Server running on localhost:8000
 
ブラウザで確認
コミットします
$ git add .
$ git commit -m 'created sample application'
 

Herokuにアプリケーション作成(with Buildpack)

Herokuにアプリケーションを作成します。 ここで、ビルドパック(https://github.com/sumkincpp/)を利用させていただきます。
プロジェクトディレクトリ(今回は sample-prj)で下記コマンドを実行します。
$ heroku apps:create symfony2-sample-project -s cedar -b git://github.com/sumkincpp/heroku-buildpack-symfony2.git
 

Herokuにデプロイ

gitコマンドでHerokuへpushします。簡単ですね。
$ git push heroku master
 

アプリケーションの動作を確認

公開アプリケーションが動作することが確認できます。  

まとめ

もう少し使い込んでみる必要はありますが、PHPでも、簡単にHerokuにデプロイして公開アプリケーションが作成できることがわかりました。