CodeIgniter 3.0のモダンなインストール方法
CodeIgniter Advent Calendar 2015 の6日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。
今日は、CodeIgniter 3.0のモダンなインストール方法です。
ところで、モダンって何でしょうね?この用語もきちんと定義されていませんが、ここでは「何となく今っぽい」くらいの意味で使ってます。
ただ、PHPのバージョンとしては5.4以上とします。PHP 5.3でもCodeIgniter本体はインストールでき動作しますが、この記事に出てくるコンポーネントの中には動作しないものが含まれます。
なお、PHP 5.4も保守はすでに終了していますので、5.5、5.6または7.0へ移行した方がよいでしょう。
Composerのインストール
モダンPHPと言えば、Composerです。
Composerとは、PHPでの新しいパッケージ(ライブラリ)管理システムです。簡単に言うとPEARの後継みたいなものです。
Composerはパッケージ管理コマンドとしてのcomposer
コマンド、パッケージのリポジトリとしてのPackagist、そしてクラスファイルをオートロードするオートローダを提供します。
PAERが主にサーバにライブラリをインストールし、各プロジェクトはそのサーバの共有ライブラリを使ったのに対し、Composerでは主にパッケージを各プロジェクト配下にインストールして使います。
Linux/Mac OS XでのComposerのインストール
以下のコマンドでインストールできます。
$ curl -sS https://getcomposer.org/installer | php
$ sudo mkdir -p /usr/local/bin
$ sudo mv composer.phar /usr/local/bin/composer
WindowsでのComposerのインストール
https://getcomposer.org/Composer-Setup.exe にインストーラがあるので、ダウンロードして実行してください。
なお、Windowsでのコマンドの実行には、Git for Windows に含まれるGit Bashを使うことをお薦めします。
CodeIgniterのインストール
さて、Composerがインストールできましたので、ここからが本題のCodeIgniterのインストールです。
CodeIgniter 3.0をインストールするには、ターミナルまたはGit Bashから以下のコマンドを実行します。最後のcodeigniter
はフォルダ名なので必要なら変更してください。
$ composer create-project kenjis/codeigniter-composer-installer codeigniter
上記のコマンドは、以下を実行します。
- プロジェクトのフォルダを作成し、CodeIgniterをComposerで
vendor
フォルダ以下にインストールする application
フォルダをプロジェクトのトップにコピーするindex.php
をpublic/index.php
にコピーする- フォルダ構成の変更に伴うパスの調整とCodeIgniterからComposerのオートローダを使えるように設定する
ここで、インストールされるCodeIgniterは本家の3.0.*
です。
フォルダ構成は以下のようになります。
codeigniter/
├── application/
├── composer.json ... Composerの設定ファイル
├── composer.lock ... Composerのロックファイル
├── public/
│ └── index.php
└── vendor/
└── codeigniter/
└── framework/
└── system/
Composerのロックファイルは自動的に生成されるものでインストールされたパッケージのバージョンなどの情報が記録されます。さわってはいけません。また、vendor
フォルダ以下にパッケージのソースがインストールされます。vendor
フォルダの中もComposerがすべて管理しますので、中のファイルを編集などしてはいけません。
実際にコマンドを実行すると、以下のようにインストールされます。
$ composer create-project kenjis/codeigniter-composer-installer codeigniter
Installing kenjis/codeigniter-composer-installer (v0.4.0)
- Installing kenjis/codeigniter-composer-installer (v0.4.0)
Downloading: 100%
Created project in codeigniter
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing codeigniter/framework (3.0.3)
Loading from cache
Writing lock file
Generating autoload files
> Kenjis\CodeIgniter\Installer::postInstall
> composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing mikey179/vfsstream (v1.1.0)
Loading from cache
Writing lock file
Generating autoload files
> Kenjis\CodeIgniter\Installer::showMessage
==================================================
`public/.htaccess` was installed. If you don't need it, please remove it.
If you want to install translations for system messages or some third party libraries,
$ cd <codeigniter_project_folder>
$ php bin/install.php
Above command will show help message.
See <https://github.com/kenjis/codeigniter-composer-installer> for details
==================================================
はい、完了しました。
- Installing codeigniter/framework (3.0.3)
CodeIgniter 3.0.3がインストールされたことがわかります。
追加コンポーネントのインストール
CodeIgniter本体のインストールはできましたが、本体だけでいいというケースはほとんどないと思います。
もともとCodeIgniterは最小限のパーツしか提供しないので、自分でパーツを足して作り込んでいく感じのフレームワークです。また、日本語サイトには日本語のシステムメッセージが必要です。
ということでその他必要なものを追加でインストールします。
そのためのサンプルのシェルスクリプトがbin/my-codeigniter.sh
にインストールされています。以下のコマンドで実行できます。
$ cd codeigniter/
$ bin/my-codeigniter.sh
このコマンドは以下をインストールします。これらは、個人的にどんなプロジェクトにも必要そうなものです。
- CodeIgniterのシステムメッセージの翻訳(日本語含む)
- Roave Security Advisories ... 既知の脆弱性を含むComposerパッケージがインストールされないかのチェックツール
- CodeIgniter Simple and Secure Twig ... CodeIgniterでTwigを使うためのシンプルなライブラリ
- Codeigniter Matches CLI ... コントローラ、モデル、ビューを作成するためのシンプルなコマンドラインスクリプト
- Cli for CodeIgniter ... コマンドラインからマイグレーションを操作するツール
- ci-phpunit-test ... CodeIgniterとPHPUnitのブリッジツール
- CodeIgniter Deployer ... デプロイツール
むろん、これはサンプルなので、不要なものはインストールする必要はないですし、必要なコンポーネントなどがあれば、さらに追加することになります。
Roave Security Advisories
Roave Security Advisoriesは、FriendsOfPHP/security-advisories のデータを使い脆弱性のあるパッケージをチェックするものです。
ただし、データは日次更新のようでタイムラグがあり、リアルタイムではありません。
また、パッケージの追加および更新時にのみチェックするもので、composer.lock
ファイルによりcomposer installする場合にはチェックはされません。インストール後または更新後に脆弱性が報告されたパッケージはそのままデプロイされることになります。
つまり、既知の脆弱性を含むパッケージを確実にデプロイしたくない場合は、デプロイ時にsecurity-checker.phar
でチェックする必要があります。
ちなみに、Vulnerability Database - SensioLabs Security Advisories Checker にCodeIgnirer 3.0.2以前を登録しましたので、3.0.2以前を新規でインストールしようとすると、以下のように失敗します。
Your requirements could not be resolved to an installable set of packages.
Problem 1
- codeigniter/framework 3.0.2 conflicts with roave/security-advisories[dev-master].
- codeigniter/framework 3.0.2 conflicts with roave/security-advisories[dev-master].
- codeigniter/framework 3.0.2 conflicts with roave/security-advisories[dev-master].
- Installation request for codeigniter/framework 3.0.2 -> satisfiable by codeigniter/framework[3.0.2].
- Installation request for roave/security-advisories dev-master -> satisfiable by roave/security-advisories[dev-master].
Webサーバの起動
モダンPHPには、ビルトインWebサーバがあります(PHP 5.4以降)。以下のコマンドでWebサーバが起動します。
$ bin/server.sh
これで、http://127.0.0.1:8000/ にブラウザでアクセスすれば、お馴染みのCodeIgniterのWelcomeページが表示されます。
CodeIgniterのバージョンアップ
CodeIgniterのバージョンが上がっても、CodeIgniterプロジェクトのトップディレクトリに移動し、以下のコマンドを実行すれば更新できます。
$ composer update
例えば、こんな風に更新されます。
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Removing codeigniter/framework (3.0.2)
- Installing codeigniter/framework (3.0.3)
Loading from cache
Writing lock file
Generating autoload files
ただし、もし、application
フォルダ内のファイルやindex.php
が変更されている場合は、それらを手動で更新する必要があります。その場合は、ユーザガイドに従って作業してください。
- Upgrading From a Previous Version — CodeIgniter 3.0.3 documentation
- 以前のバージョンからのアップグレード — CodeIgniter 3.1.0-dev ドキュメント
system
フォルダ以下は完全に更新されますので、system
フォルダ以下のファイルを直接変更してはいけません。バージョンアップ時に変更が消えてなくなります。というか、vendor
フォルダ以下はComposerが管理するので、ファイルの変更や追加をしてはいけません。
まとめ
- Composerは、PHPの新しいパッケージ(ライブラリ)管理システムです。
- CodeIgniter 3.0はComposerでモダンにインストールすることもできます。
関連
Date: 2015/12/06