はじめに
本ブログでは、これまで仮想化ソフトウエアを使用した仮想インフラの構築方法について、数多く解説してきましたが、構築した仮想環境を、開発者の方が利用できる環境にセットアップする方法については取り上げていません。本記事では、仮想環境を構築し、LAMP環境を構築する方法について2回に分けて解説します。第1回は、仮想環境の構築方法および、仮想マシンの設定変更について解説します。
構築前の準備
本記事では、LAMP開発環境を作成するにあたって、下記のソフトウエアを使用します。また、全ての構築作業はCygwinターミナル上で行います。
ソフトウエア | バージョン |
---|---|
OS | Windows 7 Ultimate 32bit |
Cygwin | Setup Version 2.831 |
Vagrant | 1.4.3 |
VirtualBox | VirtualBox 4.3.6 r91406 |
上記のソフトウエアをインストールしていない方は、下記の記事を参考にしてインストールして下さい。
- VirtualBoxの導入からOSインストールまでのチュートリアル解説
- Cygwin + rbenv環境でプロビジョニングサーバーを構築する方法(第1回)~Cygwinを用いて、rbenv環境を構築する
- Cygwin + rbenv環境でプロビジョニングサーバーを構築する方法(第2回)~仮想化ソフトウエアを導入し、Chef環境を構築する
仮想マシンの起動
構築前の準備が終了したら、仮想マシンを作成して起動します。
今回は、GitHubで公開されているCentOS-6.5-minimalのVagrant用仮想マシンイメージ(Box)を使用して仮想マシンを起動します。
なお、ネットワーク上のBoxイメージでは無く、自分で仮想マシンイメージを作成したい方は、
Veeweeを使ってVagrant用仮想マシンイメージを作成するを参考にして、カスタムBoxを作成して下さい。
- Box追加
任意のフォルダを作成し、Vagrantの初期化とBoxイメージを追加します。
コマンドを実行すると、Vagrantfileが作成され指定したBoxイメージがダウンロードされます。$ mkdir -p ~/vagrant/lamp && cd ~/vagrant/lamp $ vagrant init lamp $ vagrant box add lamp http://files.brianbirkinbine.com/vagrant-centos-65-i386-minimal.box
$ mkdir -p ~/vagrant/lamp && cd ~/vagrant/lamp $ vagrant init lamp A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. $ vagrant box add lamp http://files.brianbirkinbine.com/vagrant-centos-65-i386-minimal.box Downloading box from URL: http://files.brianbirkinbine.com/vagrant-centos-65-i386-minimal.box Extracting box...ate: 2381k/s, Estimated time remaining: --:--:--) Successfully added box 'lamp' with provider 'virtualbox'!
- Box起動
Boxの初期化が終了したら、Boxを起動します。
$ vagrant up
$ vagrant up Bringing machine 'default' up with 'virtualbox' provider... [default] Importing base box 'lamp'... [default] Matching MAC address for NAT networking... [default] Setting the name of the VM... [default] Clearing any previously set forwarded ports... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] Booting VM... [default] Waiting for machine to boot. This may take a few minutes... DL is deprecated, please use Fiddle [default] Machine booted and ready! [default] Mounting shared folders... [default] -- /vagrant
- Box接続
Boxが起動したら、接続します。
$ vagrant ssh
- Box停止
Boxに接続後、Boxを停止します。
$ sudo shutdown -h now
$ vagrant ssh [vagrant@localhost ~]$ sudo shutdown -h now Broadcast message from vagrant@localhost.localdomain (/dev/pts/0) at 0:30 ... The system is going down for halt NOW! [vagrant@localhost ~]$ Connection to 127.0.0.1 closed by remote host. Connection to 127.0.0.1 closed.
Boxからログアウトした状態でも、Boxを停止することができます。
$ vagrant halt
以上の手順で、仮想マシンを追加し、起動、停止できます。ただし、起動したBoxは、OSインストール直後の何も入っていない状態ですので、用途に合わせてカスタマイズする必要があります。
仮想マシンの初期設定
作成したBoxを起動し、Boxの初期設定を行います。
- ネットワーク設定
ホスト名を設定します。
$ cat /etc/sysconfig/network | sed -e "s|^NETWORKING.*|NETWORKING=yes|" -e "s|^HOSTNAME.*|HOSTNAME=lamp.vagrantup.com|" > /tmp/network $ sudo cp -p /etc/sysconfig/network /etc/sysconfig/network.old $ sudo cp -p /tmp/network /etc/sysconfig/network $ sudo chown root:root /etc/sysconfig/network $ sudo hostname lamp.vagrantup.com $ rm -f /tmp/network
- Firewallの無効化
Firewallを無効にします。
$ sudo service iptables stop $ sudo service ip6tables stop $ sudo chkconfig iptables off $ sudo chkconfig ip6tables off
- SELinix Policyの無効化
SELinix Policyを無効にします。
$ cat /etc/sysconfig/selinux | sed 's/^SELINUX=.*$/SELINUX=disabled/' > /tmp/selinux $ sudo cp -p /etc/sysconfig/selinux /etc/sysconfig/selinux.old $ sudo cp -p /tmp/selinux /etc/sysconfig/selinux $ rm -f /tmp/selinux
- 起動時オプションの設定
OS起動時の起動オプションを設定します。
この設定を忘れると、Boxが起動しなくなりますので注意して下さい。$ sudo cat /etc/grub.conf | sed 's/quiet.*$/quiet enforcing=0/' > /tmp/grub.conf $ sudo cp -p /etc/grub.conf /etc/grub.conf.old $ sudo cp -p /tmp/grub.conf /etc/grub.conf $ rm -f /tmp/grub.conf
- MACアドレスの自動保存無効化
CentOSを含むDebian系Linuxでは、NICのMACアドレスとeth0などのネットワークデバイス名をファイルに記録して起動時にロードしています。このままでは、VagrantによるNIC再構成に問題が生じてしまうため、MACアドレスの自動保存機能を無効にします。
$ cd /etc/udev/rules.d $ sudo mv 70-persistent-net.rules .70-persistent-net.rules $ sudo ln -s /dev/null 70-persistent-net.rules
- fastestmirror.conf設定
デフォルトでインストールされるfastestmirrorプラグインは、yumコマンドによるパッケージの追加や、システムのアップデート時に、ネットワーク的に近いミラーサイトを探しますが、デフォルト設定のままだと、ミラーサイトにjpドメインが選択されることが殆どありません。このため、ダウンロードの高速化のために、選択するミラーサイトをjpドメインのみに限定します。
$ sudo cp -p /etc/yum/pluginconf.d/fastestmirror.conf /etc/yum/pluginconf.d/fastestmirror.conf.old $ echo "include_only=.jp" | sudo tee -a /etc/yum/pluginconf.d/fastestmirror.conf
- TimeZone設定
デフォルトのTimeZoneをGMTからJSTに変更します。
$ sudo rm -f /etc/localtime $ sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
- Box停止
ここまでの作業が終了したら、一旦Boxを停止します。
$ sudo shutdown -h now
[vagrant@localhost rules.d]$ sudo shutdown -h now Broadcast message from vagrant@lamp.vagrantup.com (/dev/pts/0) at 14:51 ... The system is going down for halt NOW! [vagrant@localhost rules.d]$ Connection to 127.0.0.1 closed by remote host. Connection to 127.0.0.1 closed.
- IPアドレス設定
Vagrantでは、NATインターフェースを使用して外部との通信を行いますが、このままでは、ホストOSからBoxに接続することができませんので、Vagrantfileを編集してブリッジネットワークを追加します。
$ vi Vagrantfie
下記の行を編集します。
なお、指定するプライベートIPアドレスは、マシン環境に合わせて変更する必要があります。config.vm.network :public_network, ip: "192.168.0.10"
- Box起動
Vagrantfleの編集が終了したら、Boxを起動し、接続します。
provisonオプションは、2回目以降のBox起動時にプロビジョニングを行わせたい場合に指定します。本オプションを指定しないでBoxを起動しても、問題はありません。$ vagrant up --provision $ vagrant ssh
$ vagrant up --provision Bringing machine 'default' up with 'virtualbox' provider... [default] Clearing any previously set forwarded ports... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] Booting VM... [default] Waiting for machine to boot. This may take a few minutes... DL is deprecated, please use Fiddle [default] Machine booted and ready! [default] Configuring and enabling network interfaces... [default] Mounting shared folders... [default] -- /vagrant punio@PAPA ~/vagrant/lamp $ vagrant ssh Last login: Wed Jan 15 14:38:36 2014 from 10.0.2.2
Boxに接続すると、Vagrantfileで指定したプライベートIPアドレスが割り当てられていることが、確認できます。
$ ifconfig -a
[vagrant@lamp ~]$ ifconfig -a eth0 Link encap:Ethernet HWaddr 08:00:27:71:D5:52 inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe71:d552/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:499 errors:0 dropped:0 overruns:0 frame:0 TX packets:320 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:51413 (50.2 KiB) TX bytes:41348 (40.3 KiB) eth1 Link encap:Ethernet HWaddr 08:00:27:03:D5:98 inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: 2408:52:6417:0:a00:27ff:fe03:d598/64 Scope:Global inet6 addr: fe80::a00:27ff:fe03:d598/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:200 (200.0 b) TX bytes:490 (490.0 b) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
ブリッジネットワークを追加しましたので、Windows上からPING応答も確認できます。
$ ping 192.168.0.10
$ ping 192.168.0.10 192.168.0.10 に ping を送信しています 32 バイトのデータ: 192.168.0.10 からの応答: バイト数 =32 時間 <1ms TTL=64 192.168.0.10 からの応答: バイト数 =32 時間 <1ms TTL=64 192.168.0.10 からの応答: バイト数 =32 時間 <1ms TTL=64 192.168.0.10 からの応答: バイト数 =32 時間 <1ms TTL=64 192.168.0.10 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms
- hosts設定
設定されたIPアドレスを/etc/hsotsファイルに追加します。
$ echo "192.168.0.10 lamp.vagrantup.com lamp" | sudo tee -a /etc/hosts $ ping -c 3 lamp
[vagrant@lamp ~]$ echo "192.168.0.10 lamp.vagrantup.com lamp" | sudo tee -a /etc/hosts 192.168.0.10 lamp.vagrantup.com lamp [vagrant@lamp ~]$ ping -c 3 lamp PING lamp.vagrantup.com (192.168.0.10) 56(84) bytes of data. 64 bytes from lamp.vagrantup.com (192.168.0.10): icmp_seq=1 ttl=64 time=0.018 ms 64 bytes from lamp.vagrantup.com (192.168.0.10): icmp_seq=2 ttl=64 time=0.024 ms 64 bytes from lamp.vagrantup.com (192.168.0.10): icmp_seq=3 ttl=64 time=0.025 ms --- lamp.vagrantup.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.018/0.022/0.025/0.005 ms [vagrant@lamp ~]$
以上で、Boxの初期設定が終了します。
まとめ
ここまで、仮想環境の構築方法について解説しました。第2回では、今回作成した仮想マシンにLAMP環境を構築する方法について解説します。