2016/01/31 追記
Vagrant を使って、自前でごにょごにょ作るよりも、「ScotchBox」が便利だと思うので、他の方が書いた記事を追記。
ラクして環境構築するためのScotch-Boxが2.0になってかなり進化してた。
最初に
FuelPHP を利用した開発をするのに、Vagrant + VirtualBox で PHP の開発環境をローカル環境に作ってみたときのメモ。
必要なアプリケーションをインストール
アプリケーションをダウンロードして、インストール。特に設定は変えませんでした。
- vagrant(1.7.2) / https://www.vagrantup.com/
- VirtuaBox(4.3.26 r98988) / https://www.virtualbox.org/
インストールが終わったら次の作業に入ります。
vagrant 準備
Windows のコマンドプロンプトから操作します。
1.vagrant を利用するフォルダを用意
C:\ の下に、vagrant/lamp フォルダを作成して移動。
c:\
mkdir c:\vagrant/lamp
cd c:\vagrant/lamp
2.vagrant の初期化
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のどのポートにルーティングするかを書きます。
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.起動
vagrant up
最初に起動するとき、OS イメージがダウンロードされるのに時間がかかるので、お茶でも飲んで待ちましょう。2回目以後は、最初よりは早く起動するようになります。(それでも、数分待つかも)
5.終了
vagrant の設定は、これで終了。
VirtualBox に、新しい仮想サーバーが作成され、実行中になっているのを確認できます。
WinSCP で接続
vagrant による仮想サーバー作成後、WinSCP から作成した仮想サーバーの中をのぞいてみます。
1.ssh の接続情報を確認します
vagrant ssh-config
仮想サーバーへの接続情報が表示されます。
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.インストール、起動、起動設定
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 を有効にします。
sudo vi /etc/httpd/conf/httpd.conf
AllowOverride None を AllowOverride All に変更します。何か所があるので、間違えないように書き換えましょう。書き換えたら再起動。
sudo service httpd restart
共有フォルダの設定
1.最初に
ホストOS側のフォルダを、ゲストOS の /var/html にリンクします。ホストOS のエディッタでファイルを編集すれば、ゲストOS で実行されるようにします。
2.ホストOS に、環境を用意します
c:\vagrant/lamp/documentroot
3.FuelPHP を展開します。
c:\vagrant/documentroot の中に FuelPHP を解凍します。
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 作成後、貼り付けてください。
php oil refine install
php composer.phar self-update
php composer.phar update
4.ゲストOS に、ホストOS のフォルダをリンクします
まず、/var/www/html フォルダを削除して、リンクします。
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 の場所は、以下のコマンドで知ることができます。
php --ini
Loaded Configuration File: /etc/php.ini
php.ini を編集します。
sudo vi /etc/php.ini
php.ini を編集して、timezone を変更します。
date.timezone = "Asia/Tokyo"
php.の設定を変更したら、サービスの再起動して設定を読み込ませます。
sudo service httpd restart
再び、ブラウザで開いて、FuelPHP のホーム画面が表示されれば完了です。
最後に
もうちょっと、楽に構築する方法があるんじゃないかと思いつつ、作業完了です。