FuelPHPの開発環境を20分で構築する(Vagrant編)

FuelPHP Advent Calendar 2013の2日目です。昨日は、@sharkppさんの「FuelPHPをphar化してポータブルに!」でした。

従来は、FuelPHPの開発環境を構築する場合、XAMPPやMAMPを使う方法が一般的でした。この方法は簡単に手許のPCに開発環境を構築でき便利なのですが、開発環境と本番環境のPHPのバージョンが異なったり、開発環境はWindowsやMacだが本番環境はLinuxであったりと、ほとんどの場合、本番環境と開発環境が異なるという問題がありました。

PHPのポータビリティはかなり高いので、多くの場合、実際には問題は生じませんが、ファイル名の大文字小文字の違いやパーミッション、PHPのバグなど、本番環境だけで問題が発生するということも可能性としてはあります。

この問題を解消するには、開発環境と本番環境をできる限り一致させることが望ましいです。そこで、本番と同じような仮想マシンを作成し、そこで開発をすれば開発環境と本番環境をほとんど一致させることが可能になります。

本日は、VirtualBoxとVagrantを使って、FuelPHPのためのそのような開発環境を簡単に作成する方法を解説します。

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

VirtualBoxとVagrantのインストール

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

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

これで準備は完了です。

仮想マシンの作成

FuelPHPのプロジェクト用のフォルダを作成し、その中にVagrant用のファイルを配置します。

$ mkdir fuelphp
$ cd fuelphp/
$ git clone git@github.com:kenjis/vagrant-fuelphp-centos6.git
$ cd vagrant-fuelphp-centos6/
$ git submodule update --init --recursive

仮想マシンを構築します。

$ vagrant up

初回はCentOS6の仮想イメージをダウンロードするため、かなり時間がかかりますので気長に待ちます(このダウンロード時間を含めると20分で開発環境を構築するのは無理です)。

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

FuelPHPがインストールされていない場合は、oil createコマンドでインストールされます。

これで、http://localhost:8000/にアクセスすれば、おなじみのFuelPHPのWelcomeページが表示されます。

ディレクトリ構成

ホスト(手許のPC)側

fuelphp/(FuelPHPプロジェクトのトップ)
├── docs
├── fuel
├── public
└── vagrant-fuelphp-centos6

ゲスト(仮想マシン)側

/mnt/fuelphp/
├── docs
├── fuel
├── public
└── vagrant-fuelphp-centos6

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

テストの実行

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

$ cd fuelphp/vagrant-fuelphp-centos6/
$ vagrant ssh
Last login: Mon Dec  2 01:11:37 2013 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.

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

oilコマンドとphpunitもインストール済みなのですぐに実行できます。

[vagrant@localhost ~]$ cd fuelphp/
[vagrant@localhost fuelphp]$ oil test --group=Core
Tests Running...This may take a few moments.
PHPUnit 3.7.28 by Sebastian Bergmann.

Configuration read from /mnt/fuelphp/fuel/core/phpunit.xml

...............................................................  63 / 361 ( 17%)
............................................................... 126 / 361 ( 34%)
............................................................... 189 / 361 ( 52%)
............................................................... 252 / 361 ( 69%)
............................................................... 315 / 361 ( 87%)
..............................................

Time: 7.92 seconds, Memory: 19.25Mb

OK (361 tests, 413 assertions)

サーバ環境

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

  • メモリ 480MB
  • HDD 200GB
  • OS CentOS 6.4 (64bit)
  • Apache 2.2.15-29.el6.centos.x86_64
  • MySQL 5.1.69-1.el6_4.x86_64
  • PHP 5.4.21-2.ius.el6.x86_64
  • phpMyAdmin 3.5.8.2-1.el6.noarch
  • PHPUnit 3.7.28

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

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

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

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

仮想マシンの起動と停止

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

$ vagrant halt

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

仮想マシンの起動は、

$ vagrant up

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

$ vagrant destroy

とします。

その他のVagrant環境

今回の開発環境はCentOS 6.4を使ったものですが、Ubuntu 12.04(precise64)の場合は、以下のvagrant-fuelphpが公開されています。

また、PHPの開発環境として以下にまとめがあり、参考になります。

関連

最後に

FuelPHP Advent Calendar 2013はまだ参加者募集中です。参加希望の方は、以下のATNDより申し込み、Google Docsの空いた日付に、名前と記事タイトルをご記入ください。

明日は、@omoonさんの「FuelPHPのデータベースマイグレーションをPagoda Boxで使うときの注意」です。

Tags: fuelphp, vagrant

VagrantでVirtualBoxの仮想マシンのウィンドウを表示させる

vagrant upで仮想マシンを起動するとheadlessモードで起動されるため、通常のVirtualBoxでは表示される仮想マシンのウィンドウが表示されません。

仮想マシンのウィンドウがあった方が便利なこともたまにあります。そういう場合は、Vagrantfileを以下のように変更します。

--- a/Vagrantfile
+++ b/Vagrantfile
@@ -43,13 +43,13 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
   # backing providers for Vagrant. These expose provider-specific options.
   # Example for VirtualBox:
   #
-  # config.vm.provider :virtualbox do |vb|
-  #   # Don't boot with headless mode
-  #   vb.gui = true
+  config.vm.provider :virtualbox do |vb|
+     # Don't boot with headless mode
+     vb.gui = true
   #
   #   # Use VBoxManage to customize the VM. For example to change memory:
   #   vb.customize ["modifyvm", :id, "--memory", "1024"]
-  # end
+  end
   #
   # View the documentation for the provider you're using for more
   # information on available options.

ちなみに、Boxファイル(http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box)は、以下のアカウントでコンソールからログインできます。

  ユーザ名:vagrant
パスワード:vagrant

スクリーンショット

関連

Tags: vagrant, virtualbox

vagrant-fuelphp-centos6を使ってFuelPHPの開発用のCentOS 6.4を30分で構築する

GitHubにvagrant-fuelphp-centos6というのを公開しました。

既存のFuelPHPプロジェクトに追加することで、CentOS 6.4の開発(仮想)サーバを簡単に用意できるといういうものです。

準備

あらかじめ、VirutalBoxとVagrantをインストールしておきます(手許の環境はOSがMac OS X 10.8.5、VirtualBox 4.3.2、Vagrant 1.3.5)。詳細は、https://github.com/kenjis/vagrant-fuelphp-centos6/blob/master/README.ja.mdを参照してください。

なお、Windowsでも動作すると思いますが、実機がないので確認できていません。

インストール

まず、FuelPHP(執筆時のバージョンは1.7)を普通にインストールします。プロジェクト名はfuelphpとします。

$ oil create fuelphp

fuelphpプロジェクト内にvagrant-fuelphp-centos6をインストールします。

$ cd fuelphp
$ git submodule add git@github.com:kenjis/vagrant-fuelphp-centos6.git vagrant
$ git submodule update --init --recursive

サブモジュールを追加したくない場合は、以下でもいいですね。

$ cd fuelphp
$ git clone git@github.com:kenjis/vagrant-fuelphp-centos6.git vagrant
$ cd vagrant
$ git submodule update --init --recursive

フォルダ構成

フォルダ構成は以下のようになります。

fuelphp(FuelPHPプロジェクトのトップ)
├── docs
├── fuel
├── public
└── vagrant

仮想マシンの作成と起動

仮想マシンを起動します。初回はBoxファイル(http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box)をダウンロードするため時間がかなりかかります。

$ cd vagrant
$ vagrant up

これで、仮想マシンが作成され起動して、http://localhost:8000/にアクセスすれば、FuelPHPのWelcomeページが表示されます。

もし、すでに他のマシンでこのBoxファイルを取得済みの場合は、

$ cd ~/.vagrant.d/boxes/centos6.4_64/virtualbox
$ tar zcvf centos6.4_64.tar.gz *

として、保存されているBoxファイル(が展開されたもの)をtarで固めて、インストールしたいマシンにコピーし、以下のコマンドを実行すれば、別のマシンにインストールできます。

$ vagrant box add centos6.4_64 centos6.4_64.tar.gz 

Boxファイルをインストールしたら、vagrant upしてください。

サーバ環境

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

  • メモリ 480MB
  • HDD 200GB
  • OS CentOS 6.4 (64bit)
  • Apache 2.2.15-29.el6.centos.x86_64
  • MySQL 5.1.69-1.el6_4.x86_64
  • PHP 5.4.21-2.ius.el6.x86_64
  • phpMyAdmin 3.5.8.2-1.el6.noarch

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

ホストのFuelPHPのプロジェクトのフォルダが仮想マシンの/mnt/fuelphpにマウントされるようになっています。なので、ホスト側でソースファイルを変更すればそのまま仮想マシンにも反映されます。

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

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

関連

Tags: fuelphp, vagrant