この記事は Symfony Advent Calendar 2012 4日目の記事です。
Symfony はバージョン 2.1 からパッケージの管理に Composer を使用するようになりました。2.0 時代の deps ファイルは削除され、autoload まわりが大きく変わりました。Symfony2.1 の勉強を進めていたところ、日本語でインストール方法を解説している記事が少ないと感じたので、今回整理してみました。
この記事では、Composer を使った Symfony2.1 のインストール方法、更新方法、サードパーティ製のバンドルを追加インストールする方法などを紹介します。おまけで PHPUnit を Composer からインストールする方法も紹介します。
動作確認環境
- Symfony 2.1.3
- PHP 5.4.8
目次
- 事前準備
- Composerをインストールする
- Symfony2.1をインストールする
- Symfony2.1をアップデートする
- サードパーティ製バンドルを追加インストールする
- PHPUnitをインストールする
- AcmeDemoBundle の Test を実行してみる
- Symfony本体のリリースをすばやく確認する
事前準備
事前準備として、git をインストールして Github から clone できるようにしておきます。Symfony2 のライブラリは、多くが Github で管理されています。また、PHP は 5.3.3 以降である必要があります。
Composerをインストールする
インストール
Composer は 下記コマンドでインストールできます。
$ curl -s http://getcomposer.org/installer | php
動作確認
完了したら、下記コマンドで動作確認します。バージョン情報が表示されればOKです。
$ php composer.phar --version
以降、Symfony2 のパッケージの管理は、ダウンロードした composer.phar を使用します。
PATH を通す
composer.phar はよく使用しますので、PATHが通っているディレクトリに置いておくと便利です。私はホームディレクトリ直下に bin というフォルダを作成してPATHを通し、そこに composer.phar を置いています。
$ mkdir ~/bin
$ mv composer.phar ~/bin/
PATH=/home/ユーザー名/bin:$PATH
export PATH
アップデート
Composer 自身を更新するには下記コマンドを実行します。
$ php composer.phar self-update
参考にさせていただいたサイト
Symfony2.1をインストールする
インストール
先ほどダウンロードした composer.phar を使用して Symfony2.1 をインストールします。composer.phar には PATH が通っているものとします。
$ ce /var/www/
$ composer.phar create-project symfony/framework-standard-edition ./Symfony21/ 2.1.3
上記のコマンドを入力すると、カレントディレクトリに Symfony21 というディレクトリが作成され、そこに Symfony2.1.3 がインストールされます。インストール先のディレクトリとバージョン番号は適宜置き換えてください。上記の例では、/var/www/Symfony21 にインストールされます。
参考にさせていただいたサイト
Symfony2.1 の動作環境を整える
ファイルをダウンロードしてから Symfony2.1 を動作させる手順は、Symfony2.0 とほとんど同じです。必要なPHPモジュールを入れて、logs ディレクトリと cache ディレクトリに書き込み権限を与えます。詳細は、Symfony のインストールと設定 | Symfony2日本語ドキュメント が参考になります。
Symfony2.1をアップデートする
Symfony2.1 のバージョンが上がったら、下記の手順でアップデートを行います。バージョン 2.1.3 から 2.1.4 への更新を例に紹介します。
Packagist の Requires を確認
symfony/framework-standard-edition - Packagist にアクセスし、最新バージョンの Requires を確認します。
composer.json の requre を確認
Symfony2.1 のルートディレクトリ直下にある composer.json の require を参照し、Packagist との差分を確認します。
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.1.*",
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.0.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.1.*",
"symfony/monolog-bundle": "2.1.*",
"sensio/distribution-bundle": "2.1.*",
"sensio/framework-extra-bundle": "2.1.*",
"sensio/generator-bundle": "2.1.*",
"jms/security-extra-bundle": "1.2.*",
"jms/di-extra-bundle": "1.1.*"
},
Packagist が更新されていたら composer.json を書き換える
Packagist の Requires が更新されていたら、composer.json の require を Packagist の Requires の内容で書き換えます。今回の 2.1.3 から 2.1.4 へのバージョンアップでは、twig/extensions と kriswallsmith/assetic に更新があります。
"require": {
...
"twig/extensions": "1.0.*@dev",
...
"kriswallsmith/assetic": "1.1.*@dev",
...
}
composer update
composer.json のあるディレクトリに移動し、下記コマンドを実行して Symfony を更新します。
$ composer.phar update
サードパーティ製バンドルを追加インストールする
Symfony Standard Edition に同梱されていないライブラリは、Composer で追加インストールします。今回は試しに、DoctrineFixturesBundle をインストールします。
composer.json を編集する
composer.json の require に下記を追記します。
...
"require": {
...
"doctrine/doctrine-fixtures-bundle": "dev-master",
...
},
...
バンドルをダウンロード
Composer update コマンドを実行します。
$ composer.phar update
vendor/doctrine/doctrine-fixtures-bundle にダウンロードされます。
AppKernel.php を編集する
app/AppKernel.php にダウンロードしたバンドルを追加します。
// ...
public function registerBundles()
{
$bundles = array(
// ...
new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),
// ...
);
// ...
}
以上で DoctrineFixturesBundle のインストールは完了です。
参考にさせていただいたサイト
PHPUnitをインストールする
Composer には慣れてきましたか。
ここからはおまけです。PHPUnit を Composer からインストールしてみます。Composer から PHPUnit をインストールすると、PEAR をインストールしたり、アップデートしたり、チャンネルを登録したりする面倒な作業から開放されます。
composer.json に追記
composer.json の require に下記を追記します。末尾に追加するときはカンマの有無に気をつけてください。
...
"require": {
...
"phpunit/phpunit": "3.7.*",
...
},
...
composer update
Composer update コマンドを実行します。
$ composer.phar update
PHPUnit は vendor/phpunit にダウンロードされます。
phpunit 実行ファイルにPATHを通す
phpunit の実行ファイルは vendor/phpunit/phpunit/composer/bin/phpunit にあります。PATH の通ったディレクトリにシンボリックリンクを貼って使うと良いでしょう。私は、~/bin ディレクトリにシンボリックリンクを張っています。
$ ln -s /var/www/Symfony21/vendor/phpunit/phpunit/composer/bin/phpunit /home/ユーザー名/bin/phpunit
シンボリックリンクを貼ったら下記コマンドで動作確認します。バージョン情報が表示されればOKです。
$ phpunit --version
AcmeDemoBundle の Test を実行してみる
PHPUnit がインストールできたら、Symfony2.1 に標準で付属している AcmeDemoBundle のテストを実行してみましょう。
$ cd /var/www/Symfony21/
$ phpunit -c ./app ./src/Acme/DemoBundle/Tests/
PHPUnit 3.7.9 by Sebastian Bergmann.
Configuration read from /var/www/Symfony21/app/phpunit.xml.dist
.
Time: 0 seconds, Memory: 13.50Mb
OK (1 test, 1 assertion)
無事 OK の文字が表示されましたか。
Symfony本体のリリースをすばやく確認する
Symfony 本体の最新情報をキャッチするには、Blog - Symfony を RSS 登録してウォッチすると良いです。コミットログの書き方も参考になりますし、英語の勉強にもなります。
まとめ
Symfony2.1 のインストール方法を例に Composer の使い方を紹介しました。これから Symfony2 を勉強してみようと思っている方の参考になれば幸いです。