2014年最新版 LAMP 開発環境の構築 ~ 仮想環境構築編

2014年最新版 LAMP 開発環境の構築 ~ 仮想環境構築編

はじめに

本ブログでは、これまで仮想化ソフトウエアを使用した仮想インフラの構築方法について、数多く解説してきましたが、構築した仮想環境を、開発者の方が利用できる環境にセットアップする方法については取り上げていません。本記事では、仮想環境を構築し、LAMP環境を構築する方法について2回に分けて解説します。第1回は、仮想環境の構築方法および、仮想マシンの設定変更について解説します。

構築前の準備

本記事では、LAMP開発環境を作成するにあたって、下記のソフトウエアを使用します。また、全ての構築作業はCygwinターミナル上で行います。

ソフトウエアバージョン
OSWindows 7 Ultimate 32bit
CygwinSetup Version 2.831
Vagrant1.4.3
VirtualBoxVirtualBox 4.3.6 r91406

上記のソフトウエアをインストールしていない方は、下記の記事を参考にしてインストールして下さい。

仮想マシンの起動

構築前の準備が終了したら、仮想マシンを作成して起動します。
今回は、GitHubで公開されているCentOS-6.5-minimalのVagrant用仮想マシンイメージ(Box)を使用して仮想マシンを起動します。
なお、ネットワーク上のBoxイメージでは無く、自分で仮想マシンイメージを作成したい方は、 Veeweeを使ってVagrant用仮想マシンイメージを作成するを参考にして、カスタムBoxを作成して下さい。

  1. 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'!
    
  2. 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
    
  3. Box接続

    Boxが起動したら、接続します。

    $ vagrant ssh
    
    5000-03
  4. 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
    
    5000-05

以上の手順で、仮想マシンを追加し、起動、停止できます。ただし、起動したBoxは、OSインストール直後の何も入っていない状態ですので、用途に合わせてカスタマイズする必要があります。

仮想マシンの初期設定

作成したBoxを起動し、Boxの初期設定を行います。

  1. ネットワーク設定

    ホスト名を設定します。

    $ 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
    
    5000-06
  2. Firewallの無効化

    Firewallを無効にします。

    $ sudo service iptables stop
    $ sudo service ip6tables stop
    $ sudo chkconfig iptables off
    $ sudo chkconfig ip6tables off
    
    5000-07
  3. 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
    
    5000-08
  4. 起動時オプションの設定

    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
    
    5000-09
  5. 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
    
  6. 5000-10
  7. 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
    
    5000-11
  8. TimeZone設定

    デフォルトのTimeZoneをGMTからJSTに変更します。

    $ sudo rm -f /etc/localtime
    $ sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
    
    5000-12
  9. 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.
    
  10. IPアドレス設定

    Vagrantでは、NATインターフェースを使用して外部との通信を行いますが、このままでは、ホストOSからBoxに接続することができませんので、Vagrantfileを編集してブリッジネットワークを追加します。

    $ vi Vagrantfie
    

    下記の行を編集します。
    なお、指定するプライベートIPアドレスは、マシン環境に合わせて変更する必要があります。

    config.vm.network :public_network, ip: "192.168.0.10"
    
    5000-14
  11. 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
    
  12. 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環境を構築する方法について解説します。

コメントを残す

メールアドレスが公開されることはありません。