Help us understand the problem. What is going on with this article?

VagrantでLAMP環境(FreeBSD8.4)を作る

More than 5 years have passed since last update.

仮想の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を作成したい場所にディレクトリを作成し

bash
vagrant init freebsd8_4(←boxファイルの名前)

これでそのディレクトリにVagrantfileが作成され、VMが利用できるようになります。

VMを起動してsshログインします。

bash
vagrant up
vagrant ssh

vagrant statusでVMの状況確認が可能。

bash
$vagrant status
Current machine states:
default                   running (virtualbox)

◆ゲストOSでの作業

・wheelグループへ追加

Vagrantで起動したサーバにはユーザvagrantがデフォルトで作成されていて、上記コマンドでログインするのはvagrantユーザです。ノーパスでsudoできますが、FreeBSDの場合一般ユーザはwheelに入っていないとsuできない模様なので、

bash
$sudo vi /etc/group

(変更前)
wheel:*:0:root

(変更後)
wheel:*:0:root,vagrant

とし、suでrootになっておきます。

・FreeBSD update

パッケージのセキュリティアップデートを行なうため、以下のコマンドを実行します。

bash
freebsd-update fetch
freebsd-update install

これが行われていないと、この後行うpkgを使ってのinstallがうまくいかないため、必要な工程です。

・パッケージ管理ツールのインストール

CentOSでいうyumにあたるのがpkgというもので、それをインストールします。これはPorts Collectionという機能を使ってソースからコンパイルする必要があります。まずPorts Collectionの利用準備を行います。

bash
portsnap fetch
portsnap extract
portsnap update

上記を実行すると、/usr/ports/以下にいろんなソフトのMakefileが生成されます。

pkgは/usr/ports/ports-mgmt/pkgにあるので、移動して、makeすると

bash
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

というメッセージが出るのでその通り

bash
make UPGRADEPKG=1 install clean
pkg2ng

を実行します。これでpkgのインストールは完了です。

bash
pkg update

で更新しておきます。

以上でインストールの基本的な準備ができたので、Apache/MySQL/PHPを入れていきます。

■Apacheを入れる

・インストール

bash
pkg install apache24-2.4.12

OS起動時にapacheも起動するよう、/etc/rc.confに以下の記述を追加します。

/etc/rc.conf
apache24_enable="yes"

・起動

/usr/local/etc/rc.d/apache24 start

で起動しようとすると"libiconv.so.2"がないという旨のエラーが出るので、

bash
pkg install libiconv

でインストールします。
どうやら1.14_1 -> 1.14_6へのupdateの模様。updateを終えると無事apacheが立ち上がるようになりました。

・動作確認

apache動作確認のためcurlを入れます。

bash
pkg install curl

ローカルホストにアクセスしてみます。

bash
curl http://localhost

無事レスポンスが返ってきました。

<html><body><h1>It works!</h1></body></html>

・ホストOSからの接続確認

ホストOSからもアクセスして確認したいのでやってみます。

↓↓↓ホストOSでの作業↓↓↓


Vagrantfileに下記を追加。

Vagrantfile
config.vm.network "private_network", ip: "192.168.33.10"

vagrant reloadでVMを再起動し、http://192.168.33.10 にアクセスすれば確認が可能です。


↑↑↑ホストOSでの作業↑↑↑

ちなみに上記の結果ゲストOSの/etc/rc.confに以下の記述が自動で追加されるようです。

/etc/rc.conf
#VAGRANT-BEGIN
ifconfig_em1="inet 192.168.33.10 netmask 255.255.255.0"
#VAGRANT-END

■MySQLを入れる

・インストール

bash
mysql56-server-5.6.22

mysql56-client: 5.6.22も一緒に入れてくれるようです。

apacheと同様、起動時に実行されるよう/etc/rc.confに以下の記述を追加。

/etc/rc.conf
mysql_enable="yes"  

・起動

起動コマンドは以下。

bash
/usr/local/etc/rc.d/mysql-server start          

・動作確認

mysqlでコンソールに入って確認が可能です。

■PHPを入れる

・インストール

bash
pkg install php56-5.6.5

バージョン確認。

bash
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の作成

bash
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

でphp.iniを作成。

・Apache用モジュールのインストールと設定

FreeBSDのpkgではアパッチのPHPモジュールが別で配布されているらしく、それを別途インストールします。

bash
pkg install mod_php56-5.6.5

この際、/usr/local/etc/apache24/httpd.confのモジュール追加の箇所は勝手に記述してくれる模様です。apacheを後で追加した場合は、手書きしなければならないと思われます。また、下記については手動で追加しなければなりません。

httpd.conf
AddType application/x-httpd-php .php

・動作確認

これでApacheとPHPの連携ができました。確認するためphpinfo()を含んだファイルを作成します。

bash
echo "<?php phpinfo();?>" > /usr/local/www/apache24/data/info.php

以上全て完了したら、Apacheを再起動し、上記で生成されたファイルへアクセスしてみます。

bash
/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とすることで、現状をコピーして残すといったこともできます。

bash
vagrant package 作成するvm名 作成先ディレクトリ
vagrant box add 作成するbox名 作成したvmの場所

あとは本記事の最初と同様に

bash
vagrant init freebsd84_custom(←生成したboxファイルの名前)

とすれば、切り出した状態のVMをまた弄っていくことができます。便利です!これさえ作っておけば環境壊れてもまたやり直せます。
満足いくVMができたり、これは手戻りしたくないなと思ったら、その時点でVMをpackage化して保存しておくのが良いと思います。

◆まとめ

CentOS等と比べると、パッケージ管理ツールのインストール、ApacheのPHPモジュールのインストール等が少し面倒なようです。

ChefやらDockerやらを使ってもっとお手軽に♪自動化♪云々はまたいつか・・

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away