仮想のFreeBSDでLAMP環境を作って自由に作ったり壊したりしたかったので、Vagrantを使って環境を作りました。その際のメモです。
##■作業環境
Mac OS X 10.9.5
ただ仮想環境なのでWinでも大差ないと思います。
##■前提
・VagrantとVirtualBoxがインストールされていること
・FreeBSD用のboxファイルをダウンロードしていること
(http://www.vagrantbox.es/)
できるだけminimalなものを選びます。
このあたりまではこちら( http://qiita.com/y_arakawa/items/08ef7a4568ef1545313d )が参考になります。
#◆ホストOSでの作業
VMを作成したい場所にディレクトリを作成し
vagrant init freebsd8_4(←boxファイルの名前)
これでそのディレクトリにVagrantfileが作成され、VMが利用できるようになります。
VMを起動してsshログインします。
vagrant up
vagrant ssh
※vagrant status
でVMの状況確認が可能。
$vagrant status
Current machine states:
default running (virtualbox)
#◆ゲストOSでの作業
###・wheelグループへ追加
Vagrantで起動したサーバにはユーザvagrantがデフォルトで作成されていて、上記コマンドでログインするのはvagrantユーザです。ノーパスでsudoできますが、FreeBSDの場合一般ユーザはwheelに入っていないとsuできない模様なので、
$sudo vi /etc/group
(変更前)
wheel:*:0:root
(変更後)
wheel:*:0:root,vagrant
とし、suでrootになっておきます。
###・FreeBSD update
パッケージのセキュリティアップデートを行なうため、以下のコマンドを実行します。
freebsd-update fetch
freebsd-update install
これが行われていないと、この後行うpkgを使ってのinstallがうまくいかないため、必要な工程です。
###・パッケージ管理ツールのインストール
CentOSでいうyumにあたるのがpkgというもので、それをインストールします。これはPorts Collectionという機能を使ってソースからコンパイルする必要があります。まずPorts Collectionの利用準備を行います。
portsnap fetch
portsnap extract
portsnap update
上記を実行すると、/usr/ports/以下にいろんなソフトのMakefileが生成されます。
pkgは/usr/ports/ports-mgmt/pkgにあるので、移動して、makeすると
You are about to convert your system to pkg while you have ports/packages
installed with the old pkg_install tools.
To switch to pkg:
1) Install ports-mgmt/pkg
cd ports-mgmt/pkg && make UPGRADEPKG=1 install clean
2) Convert your package database by running pkg2ng
というメッセージが出るのでその通り
make UPGRADEPKG=1 install clean
pkg2ng
を実行します。これでpkgのインストールは完了です。
pkg update
で更新しておきます。
以上でインストールの基本的な準備ができたので、Apache/MySQL/PHPを入れていきます。
##■Apacheを入れる
###・インストール
pkg install apache24-2.4.12
OS起動時にapacheも起動するよう、/etc/rc.confに以下の記述を追加します。
apache24_enable="yes"
###・起動
/usr/local/etc/rc.d/apache24 start
で起動しようとすると"libiconv.so.2"がないという旨のエラーが出るので、
pkg install libiconv
でインストールします。
どうやら1.14_1 -> 1.14_6へのupdateの模様。updateを終えると無事apacheが立ち上がるようになりました。
###・動作確認
apache動作確認のためcurlを入れます。
pkg install curl
ローカルホストにアクセスしてみます。
curl http://localhost
無事レスポンスが返ってきました。
<html><body><h1>It works!</h1></body></html>
###・ホストOSからの接続確認
ホストOSからもアクセスして確認したいのでやってみます。
↓↓↓ホストOSでの作業↓↓↓
Vagrantfileに下記を追加。
config.vm.network "private_network", ip: "192.168.33.10"
vagrant reload
でVMを再起動し、http://192.168.33.10 にアクセスすれば確認が可能です。
↑↑↑ホストOSでの作業↑↑↑
ちなみに上記の結果ゲストOSの/etc/rc.confに以下の記述が自動で追加されるようです。
#VAGRANT-BEGIN
ifconfig_em1="inet 192.168.33.10 netmask 255.255.255.0"
#VAGRANT-END
##■MySQLを入れる
###・インストール
mysql56-server-5.6.22
mysql56-client: 5.6.22
も一緒に入れてくれるようです。
apacheと同様、起動時に実行されるよう/etc/rc.confに以下の記述を追加。
mysql_enable="yes"
###・起動
起動コマンドは以下。
/usr/local/etc/rc.d/mysql-server start
###・動作確認
mysql
でコンソールに入って確認が可能です。
##■PHPを入れる
###・インストール
pkg install php56-5.6.5
バージョン確認。
php -v
PHP 5.6.5 (cli) (built: Jan 30 2015 21:04:23)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
###・php.iniの作成
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
でphp.iniを作成。
###・Apache用モジュールのインストールと設定
FreeBSDのpkgではアパッチのPHPモジュールが別で配布されているらしく、それを別途インストールします。
pkg install mod_php56-5.6.5
この際、/usr/local/etc/apache24/httpd.confのモジュール追加の箇所は勝手に記述してくれる模様です。apacheを後で追加した場合は、手書きしなければならないと思われます。また、下記については手動で追加しなければなりません。
AddType application/x-httpd-php .php
###・動作確認
これでApacheとPHPの連携ができました。確認するためphpinfo()を含んだファイルを作成します。
echo "<?php phpinfo();?>" > /usr/local/www/apache24/data/info.php
以上全て完了したら、Apacheを再起動し、上記で生成されたファイルへアクセスしてみます。
/usr/local/etc/rc.d/apache24 restart
curl http://localhost/info.php
これでphp.iniの情報が取れればOKです。
ホストOSからも、ブラウザでhttp://192.168.33.10/info.php にアクセスして確認可能です。
#◆VMのpackage化
ちなみにVMの状態をとりあえずpackage化してboxとすることで、現状をコピーして残すといったこともできます。
vagrant package 作成するvm名 作成先ディレクトリ
vagrant box add 作成するbox名 作成したvmの場所
あとは本記事の最初と同様に
vagrant init freebsd84_custom(←生成したboxファイルの名前)
とすれば、切り出した状態のVMをまた弄っていくことができます。便利です!これさえ作っておけば環境壊れてもまたやり直せます。
満足いくVMができたり、これは手戻りしたくないなと思ったら、その時点でVMをpackage化して保存しておくのが良いと思います。
#◆まとめ
CentOS等と比べると、パッケージ管理ツールのインストール、ApacheのPHPモジュールのインストール等が少し面倒なようです。
ChefやらDockerやらを使ってもっとお手軽に♪自動化♪云々はまたいつか・・