CodeIgniterの開発環境をvagrant-centos6-phpを使い構築する

今日は、VirtualBoxとVagrantを使って、軽量高速なPHPフレームワークCodeIgniterのための開発環境を作成してみます。

CodeIgniter公式サイト

CodeIgniterの速度については、2014年の最新PHPフレームワークをベンチマークしてみたを参照してください。

Vagrantを使えば簡単に他の開発者と同じ仮想マシンを構築できます。

VirtualBoxとVagrantのインストール

フリーな仮想化ソフトウェアであるVirtualBoxを、以下からダウンロードしインストールします(執筆時の動作確認バージョンはVirtualBox 4.3.18)。

VirtualBoxの仮想イメージを操作するツールであるVagrantを、以下からダウンロードしインストールします(執筆時の動作確認バージョンはVagrant 1.6.5)。

これで準備は完了です。

CodeIgniterのダウンロード

http://www.codeigniter.com/downloadより、開発中のCodeIgniter 3.x(CodeIgniter-develop.zip)をダウンロードします。

なお、CodeIgniter 3.xはMITライセンスになりました。CodeIgniter 2.x以前はCodeIgniterライセンスのままです。

Zipファイルを解凍するとCodeIgniter-developフォルダが作成されます。

CodeIgniter-develop
├── application
├── system
├── tests
└── user_guide_src

vagrant-centos6-phpのダウンロード

https://github.com/kenjis/vagrant-centos6-phpの右コラムの一番下の「Download ZIP」ボタンを押してダウンロードします。

ダウンロードしたvagrant-centos6-php-master.zipを解凍し、CodeIgniterのフォルダ(CodeIgniter-develop)の中に移動します。

CodeIgniter-develop
├── application
├── system
├── tests
├── user_guide_src
└── vagrant-centos6-php-master ←これ

仮想マシンの作成

CodeIgniterが使えるようにvagrant-centos6-php-masterフォルダの中のVagrantfileの設定を変更します。「codeigniter」の行の先頭のコメント記号#を削除します。

     # Framework of your choice
     #chef.add_recipe "codeigniter"

     # Framework of your choice
     chef.add_recipe "codeigniter"

それでは、仮想マシンを構築します。

$ cd CodeIgniter-develop/vagrant-centos6-php-master/
$ vagrant up

初回はCentOS6の仮想イメージをダウンロードなどをするため、かなり時間がかかりますので気長に待ちます。

これで、仮想マシンが作成され、開発に必要なサーバなどもインストール設定されます。

ディレクトリ構成

ホスト(手許のPC)側

CodeIgniter-develop/(CodeIgniterプロジェクトのトップ)
├── public/(Web公開領域)
└── vagrant-centos6-php-master/

ゲスト(仮想マシン)側

/mnt/project/
├── public/
└── vagrant-centos6-php-master/

仮想マシンから、ホスト側のCodeIgniter-developフォルダを共有しているので、ホスト側から好きなエディタでソースを変更すれば、仮想マシンに自動的に反映されます。

ホームディレクトリにシンボリックリンクが張ってあるので、仮想マシンの中では/mnt/projectフォルダには~/codeigniterでアクセスできます。

CodeIgniter-develop
├── application
│   ├── cache
│   ├── config
│   ├── controllers
│   ├── core
│   ├── helpers
│   ├── hooks
│   ├── language
│   ├── libraries
│   ├── logs
│   ├── models
│   ├── third_party
│   └── views
├── system
│   ├── core
│   ├── database
│   ├── fonts
│   ├── helpers
│   ├── language
│   └── libraries
├── tests
│   ├── codeigniter
│   ├── mocks
│   └── travis
├── user_guide_src
│   ├── cilexer
│   └── source
└── vagrant-centos6-php-master
    └── cookbooks

ホストOSからhttp://localhost:8000/にアクセスすると、CodeIgniterの「Welcome」ページが表示されます。

CodeIgniter「Welcome」ページ

CodeIgniter本体のテストの実行

CodeIgniter本体のテストを実行してみましょう。

まず、仮想マシンにSSHでログインします。

$ cd CodeIgniter-develop/vagrant-centos6-php-master/
$ vagrant ssh
Last login: Tue Dec  2 01:21:42 2014 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.

以下は仮想マシンの中です。

テストに必要なパッケージをComposerでインストールします。

[vagrant@localhost ~]$ cd codeigniter/
[vagrant@localhost codeigniter]$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing mikey179/vfsstream (v1.1.0)
    Downloading: 100%         

Writing lock file
Generating autoload files

テストを実行します。

[vagrant@localhost codeigniter]$ cd tests/
[vagrant@localhost tests]$ phpunit 
PHPUnit 3.7.38 by Sebastian Bergmann.

Configuration read from /mnt/project/tests/phpunit.xml

.............................SS................................  63 / 296 ( 21%)
....................SSSSSSSSSSSSSSS..SS.S...................... 126 / 296 ( 42%)
.S.S........................................................... 189 / 296 ( 63%)
........................................S...................... 252 / 296 ( 85%)
.............S............................

Time: 11.98 seconds, Memory: 17.25Mb

OK, but incomplete or skipped tests!
Tests: 284, Assertions: 991, Skipped: 24.

24個がスキップされましたが、他は通りました。

サーバ環境

vagrant-centos6-phpで作成される仮想マシンのサーバ環境は以下のようになっています(執筆時点)。

  • メモリ 480MB
  • HDD 200GB
  • OS CentOS 6.5 (64bit)
  • Apache 2.2.15-39.el6.centos.x86_64
  • MySQL 5.1.73-3.el6_5.x86_64
  • PHP 5.5.19-2.el6.remi.x86_64
  • phpMyAdmin 4.0.10.6-1.el6.noarch
  • PHPUnit 3.7.38

ホスト側のポート8000が仮想マシンのポート80に転送されるようになっています。仮想マシンに直接アクセスする場合は、http://192.168.33.33/にアクセスします。

ホストのCodeIgniterのプロジェクトのフォルダが仮想マシンの/mnt/projectにマウントされるようになっています。

MySQLデータベースは、php_devphp_testが作成されており、rootのパスワードはrootです。

また、http://localhost:8000/phpmyadmin/から、phpMyAdminにアクセスできます。

仮想マシンの起動と停止

仮想マシンの停止は、vagrant-centos6-php-masterフォルダに移動して、

$ vagrant halt

とします。vagrant suspendコマンドを実行すれば、仮想マシンをシャットダウンせずに状態を保存したまま停止できます。

仮想マシンの起動は、

$ vagrant up

仮想マシンを破棄するには、

$ vagrant destroy

とします。

関連

Tags: codeigniter, vagrant, php

Phalconの開発環境をvagrant-centos6-phpを使い構築する

今日は、VirtualBoxとVagrantを使って、最速PHPフレームワークPhalconのための開発環境を作成してみます。

Phalcon公式サイト

Phalconの速度については、2014年の最新PHPフレームワークをベンチマークしてみたを参照してください。

Vagrantを使うと簡単に他の開発者と同じ仮想マシンを構築できます。

なお、この方法のデメリットは、仮想マシンを維持するためのリソースが余計に必要となることです。OSからまるごとインストールするわけですから、ハードディクスの容量もその分多く必要になりますし、仮想マシン実行のオーバーヘッドがありますので、実効速度もネイティブで動作しているWebサーバ/PHPより、多くの場合、多少遅くなるでしょう。

VirtualBoxとVagrantのインストール

フリーな仮想化ソフトウェアであるVirtualBoxを、以下からダウンロードしインストールします(執筆時の動作確認バージョンはVirtualBox 4.3.18)。

VirtualBoxの仮想イメージを操作するツールであるVagrantを、以下からダウンロードしインストールします(執筆時の動作確認バージョンはVagrant 1.6.5)。

これで準備は完了です。

仮想マシンの作成

Phalconのプロジェクト用のフォルダを作成し、その中にVagrantでPHP開発環境を構築するための「vagrant-centos6-php」を配置します。

$ mkdir phalcon
$ cd phalcon/
$ git clone https://github.com/kenjis/vagrant-centos6-php.git
$ cd vagrant-centos6-php

PhalconをインストールするようにVagrantfileの設定を変更します。

--- a/Vagrantfile
+++ b/Vagrantfile
@@ -88,7 +88,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

      # Framework of your choice
      #chef.add_recipe "fuelphp"
-     #chef.add_recipe "phalcon"
+     chef.add_recipe "phalcon"

      #chef.add_recipe "yum-update"

それでは、仮想マシンを構築します。

$ vagrant up

初回はCentOS6の仮想イメージをダウンロードなどするため、かなり時間がかかりますので気長に待ちます。

これで、仮想マシンが作成され、Phalconがコンパイルされ、また、開発に必要なサーバなどとともにインストール設定されます。

ディレクトリ構成

ホスト(手許のPC)側

phalcon/(Phalconプロジェクトのトップ)
├── public/(Web公開領域。まだ存在しない)
└── vagrant-centos6-php/

ゲスト(仮想マシン)側

/mnt/project/
├── public/
└── vagrant-centos6-php/

仮想マシンから、ホスト側のphalconフォルダを共有しているので、ホスト側から好きなエディタでソースを変更すれば、仮想マシンに自動的に反映されます。

Phalconプロジェクトの作成

vagrant-centos6-phpフォルダから、vagrant sshコマンドで仮想マシンにSSHで接続できます(Windowsを除く)。

$ cd phalcon/vagrant-centos6-php/
$ vagrant ssh
Last login: Mon Dec  1 10:02:45 2014 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.

ホームディレクトリにシンボリックリンクが張ってあるので、/mnt/projectフォルダには~/phalconでアクセスできます。

phalconコマンド(Phalcon Developer Tools)もインストール済みなのですぐに実行できます。

既存のフォルダにはプロジェクトを作成できないので、ひとまず、ホームディレクトリにtestというフォルダでプロジェクトを作成します。

[vagrant@localhost ~]$ cd
[vagrant@localhost ~]$ phalcon project test simple

そして、testフォルダの中身を~/phalconフォルダに移動します。

[vagrant@localhost ~]$ shopt -s dotglob
[vagrant@localhost ~]$ mv test/* phalcon/
[vagrant@localhost ~]$ rmdir test/

これでPhalconプロジェクトのスケルトンが作成されました。

phalcon
├── app
│   ├── cache
│   ├── config
│   ├── controllers
│   ├── models
│   └── views
├── public
│   ├── css
│   ├── files
│   ├── img
│   ├── js
│   └── temp
└── vagrant-centos6-php
    └── cookbooks

ホストOSからhttp://localhost:8000/にアクセスすると、Phalconの「Congratulations!」ページが表示されます。

Phalconの「Congratulations!」ページ

サーバ環境

vagrant-centos6-phpで作成される仮想マシンのサーバ環境は以下のようになっています(執筆時点)。

  • メモリ 480MB
  • HDD 200GB
  • OS CentOS 6.5 (64bit)
  • Apache 2.2.15-39.el6.centos.x86_64
  • MySQL 5.1.73-3.el6_5.x86_64
  • PHP 5.5.19-2.el6.remi.x86_64
  • phpMyAdmin 4.0.10.6-1.el6.noarch
  • PHPUnit 3.7.38
  • Phalcon 1.3.4

ホスト側のポート8000が仮想マシンのポート80に転送されるようになっています。仮想マシンに直接アクセスする場合は、http://192.168.33.33/にアクセスします。

ホストのPhalconのプロジェクトのフォルダが仮想マシンの/mnt/projectにマウントされるようになっています。

MySQLデータベースは、php_devphp_testが作成されており、rootのパスワードはrootです。

また、http://localhost:8000/phpmyadmin/から、phpMyAdminにアクセスできます。

仮想マシンの起動と停止

仮想マシンの停止は、vagrant-centos6-phpフォルダに移動して、

$ vagrant halt

とします。vagrant suspendコマンドを実行すれば、仮想マシンをシャットダウンせずに状態を保存したまま停止できます。

仮想マシンの起動は、

$ vagrant up

仮想マシンを破棄するには、

$ vagrant destroy

とします。

関連

Tags: phalcon, vagrant, php

2014年の最新PHPフレームワークをベンチマークしてみた

以下の7つの最新PHPフレームワークをベンチマークしてみました。

  • Phalcon 1.3.4
  • CodeIgniter 3.0-dev
  • Yii 2.0.0
  • FuelPHP 1.8-dev
  • CakePHP 3.0.0-beta3
  • Symfony 2.5.7
  • Laravel 4.2.11

(2015-03-26 追記) 9つのフレームワークをベンチマークした「2015年最新PHPフレームワーク(9つ)のベンチマーク」をアップしました。

ベンチマーク環境

  • CentOS 6.5 64bit (VM)
    • PHP 5.5.19
      • Zend OPcache v7.0.4-dev
    • Apache 2.2

ベンチマーク方法

いわゆる「Hello World」ベンチマークです。フレームワークの最小のオーバーヘッドを計測するためのものになります。詳細はソースコード(後述)をご覧ください。

以下のようなコマンドで計測しました。

$ ab -c 10 -t 3 http://localhost/codeigniter-3.0-dev/index.php/hello/index

ベンチマーク結果

スループット

1秒間に処理できたリクエスト数です。多い方がよい値です。

メモリ使用量

memory_get_peak_usage(true)で取得したピーク時のメモリ使用量です。

結果の数値

framework requests per second peak memory
phalcon-1.3 1209.39 0.5
codeigniter-3.0-dev 475.88 0.5
yii-2.0 271.12 1.5
fuel-1.8-dev 186.39 0.75
cake-3.0-dev 135.34 1.25
symfony-2.5 84.9 2
laravel-4.2 78.09 2

コメント

今回、最速と言われるPhalconを入れてみました。ご覧のように圧倒的に速かったです。やはりレベルが違います。

Cで実装されているPhalconを除くと、CodeIgniter3がやはり速く軽量です。Yii2もメモリ消費は多い割に、かなり速いですね。

前回は、CakePHP3がFuelPHP 1.xよりも少しだけ速かったのですが、CakePHP3の開発が進み逆転しました。

ソースコード

関連

Tags: php, yii, symfony, phalcon, fuelphp, codeigniter, cakephp, laravel, benchmark