Edited at

Windows で、vagrant を利用した FuelPHP 用 LAMP 環境構築

More than 1 year has passed since last update.

2016/01/31 追記

Vagrant を使って、自前でごにょごにょ作るよりも、「ScotchBox」が便利だと思うので、他の方が書いた記事を追記。

ラクして環境構築するためのScotch-Boxが2.0になってかなり進化してた。


最初に

FuelPHP を利用した開発をするのに、Vagrant + VirtualBox で PHP の開発環境をローカル環境に作ってみたときのメモ。


必要なアプリケーションをインストール

アプリケーションをダウンロードして、インストール。特に設定は変えませんでした。

インストールが終わったら次の作業に入ります。


vagrant 準備

Windows のコマンドプロンプトから操作します。

1.vagrant を利用するフォルダを用意

C:\ の下に、vagrant/lamp フォルダを作成して移動。


ホストOS

c:\

mkdir c:\vagrant/lamp
cd c:\vagrant/lamp

2.vagrant の初期化


ホストOS

vagrant init --minimal chef/centos-6.6


フォルダ内に、Vagrantfile が作成されます。

3.Vagrantfile の編集

Vagrantfile を編集します。

まず、起動に利用する BOX を指定します。

VirtualBOX で利用する場合、指定した BOX に Guest Additions がインストールされていないと、起動に失敗することがあります。ホストの Windows とフォルダを同期するために、Vagrant が rsync を利用しようとするのですが、Windows が rsync に対応しないので、起動に失敗します。そんな時は、フォルダの同期を無効化してください。

インストールされたゲストOSを、画面から操作できるように VirtualBox の画面が表示されるようにする設定を書きます。

標準では、VirtualBox のネットワーク設定が NAT になっているため、ゲストOSのポートが、ホストOSのどのポートにルーティングするかを書きます。


ホストOS

Vagrant.configure(2) do |config|

config.vm.box = "chef/centos-6.6"
# config.vm.synced_folder ".", "/home/vagrant/sync", disabled: true
config.vm.provider "virtualbox" do |vb|
vb.gui = true
end
config.vm.network "forwarded_port", guest: 22, host: 22
config.vm.network "forwarded_port", guest: 80, host: 80
config.vm.network "forwarded_port", guest: 443, host: 443
end

この設定で、ssh / http / https の通信が通るようになります。ホストOS がポート 22/80/443 を既に利用済みの場合は、別のポートを指定してください。

4.起動


ホストOS

vagrant up


最初に起動するとき、OS イメージがダウンロードされるのに時間がかかるので、お茶でも飲んで待ちましょう。2回目以後は、最初よりは早く起動するようになります。(それでも、数分待つかも)

5.終了

vagrant の設定は、これで終了。

VirtualBox に、新しい仮想サーバーが作成され、実行中になっているのを確認できます。


WinSCP で接続

vagrant による仮想サーバー作成後、WinSCP から作成した仮想サーバーの中をのぞいてみます。

1.ssh の接続情報を確認します


ホストOS

vagrant ssh-config


仮想サーバーへの接続情報が表示されます。


ホストOS

  Host default

HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile c:/vagrant/fuelphp/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL

表示ではポート番号が 2222 となっていますが、先に行った Vagrantfile の設定で 22 での接続も可能になっています。

2.鍵の形式を変換

WinSCP で接続するには、ssh 鍵の形式を変換する必要があります。変換するには、WinSCP を起動して、左下メニューにあるツールから、PuTTYgen 実行します。

[load] で private_key を読み込み

[save private key] で、[private_key.ppk] として保存

これで、鍵の形式が変換されて保存されます。

3.最後に

先ほど作成したキーを利用して WinSCP から接続して、ファイルの一覧が表示されたら成功です。


TeraTerm で接続

ゲストOS を設定するために、TeraTerm で接続できるようにしておきます。

1.接続

WinSCP から PuTTYgen 変換したキーを利用して接続してください。

2.最後に

コマンドプロンプトが操作できたら接続完了です。


CentOS を設定します

1.最初に

インストールしたイメージには、起動直後 Apache / MySQL / PHP / git が入っていないのでインストールします。ちなみに、root アカウントではログインできないので、sudo を利用して実行してください。

2.インストール、起動、起動設定


ゲストOS

sudo yum -y install httpd

sudo yum -y install mysql-server
sudo yum -y install php
sudo yum -y install php-mysql
sudo yum -y install git

sudo service httpd start
sudo service mysqld start

sudo chkconfig httpd on
sudo chkconfig mysqld on


php-mbstring など、必要に応じて足りないライブラリもインストールしてください。


.htaccess が無効になっているので、有効にします。

FuelPHP の router を正常に動作させるために、Apache の設定ファイルを開いて .htaccess を有効にします。


ゲストOS

sudo vi /etc/httpd/conf/httpd.conf


AllowOverride None を AllowOverride All に変更します。何か所があるので、間違えないように書き換えましょう。書き換えたら再起動。


ゲストOS

sudo service httpd restart



共有フォルダの設定

1.最初に

ホストOS側のフォルダを、ゲストOS の /var/html にリンクします。ホストOS のエディッタでファイルを編集すれば、ゲストOS で実行されるようにします。

2.ホストOS に、環境を用意します


ホストOS

c:\vagrant/lamp/documentroot


3.FuelPHP を展開します。

c:\vagrant/documentroot の中に FuelPHP を解凍します。


ホストOS

c:\vagrant/lamp/documentroot/docs

c:\vagrant/lamp/documentroot/fuel
c:\vagrant/lamp/documentroot/public

のように配置されていることを前提としてます。実際のインストールは、インストールマニュアルの Zip ファイルをダウンロードする に従いましょう。

ちなみに、マニュアルによると以下のコマンドの実行が必要ですが、実行前に、c:\vagrant/lamp/documentroot/fuel/vendor フォルダを削除しておかないと、php composer.phar update に失敗するようえす。削除しても、php composer.phar update を実行することで、再構築されるようです。ここの挙動は、正直よくわかりません。

また、実行中にtokenを聞かれることがありますが、これは、GitHub の API 利用制限にひっかかった場合に出るようなので、https://github.com/settings/tokens にアクセスして、token 作成後、貼り付けてください。


ホストOS

php oil refine install

php composer.phar self-update
php composer.phar update

4.ゲストOS に、ホストOS のフォルダをリンクします

まず、/var/www/html フォルダを削除して、リンクします。


ゲストOS

sudo rmdir -r /var/www/html

sudo ln -s /vagrant/documentroot/public/ /var/www/html

インストール直後は、ホストOS の c:\vagrant が、ゲストOS の /vagrant にマウントされています。

5.PHP の timezone の設定

インストールは完了したので、ホストOS から 172.0.0.1 へブラウザでアクセスすると、エラーになります。これは、php.ini の timezone が設定されていないため、以下のコマンドを実行して、php.ini の場所を探して、timezone を "Asia/Tokyo" に変更してください。

php.ini の場所は、以下のコマンドで知ることができます。


ゲストOS

php --ini

Loaded Configuration File: /etc/php.ini

php.ini を編集します。


php.ini

sudo vi /etc/php.ini


php.ini を編集して、timezone を変更します。


php.ini

date.timezone = "Asia/Tokyo"


php.の設定を変更したら、サービスの再起動して設定を読み込ませます。


ゲストOS

sudo service httpd restart


再び、ブラウザで開いて、FuelPHP のホーム画面が表示されれば完了です。


最後に

もうちょっと、楽に構築する方法があるんじゃないかと思いつつ、作業完了です。