Mac
CentOS
Apache
shell
vagrant

Mac 上で Vagrant を使って CentOS + Apache をセットアップ

More than 1 year has passed since last update.

MacBookAir にて仮想環境を構築したく、またプロビジョニングにて常に必要な Apache などを入れられたらなと思いました。

Vagrant の使い方は素敵な方法がありましたので下記を参考にさせていただきました。とてもスムーズな導入ができました。本当にありがとうございます。

参考

Vagrant体験入門ハンズオン手順 - 2014/04/24 DevLove関西

事前準備

  • 上記の参考より、VirtualBox と Vagrant をインストールしてください。

Vagrant 基本セットアップ

自分の環境でのメモ踏まえて記載してまいります。
OS は CentOS6.5を採用します。まずはディレクトリを作成して、対象の box を追加します。

$ mkdir CentOS65
$ cd centOS65
$ vagrant box add CentOS65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box

ここで box の list を確認します。「CentOS65」あります。

$ vagrant box list
CentOS65 (virtualbox, 0)

次に初期設定にて Vagrantfile を生成します。

$ vagrant init CentOS65
$ ls
Vagrantfile

ここで Vagrantfile を編集します。

  • config.vm.box
  • config.vm.network
  • config.vm.provider

network は ssh でアクセスするために設定します。provider は GUI モードを有効にしているだけなので、設定しなくても問題ありません。

-*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "CentOS65"

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

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
  end
end

設定後、仮想環境を起動します。

$ vagrant up

仮想環境にログインします。

$ vagrant ssh

ログインできればこれで基本設定は終了です。

Shell を使って Apache をインストール

Vagrantfile を編集して shell で iptables と apache インストールを provision にて設定する

  • Shell でプロビジョニング実施
  • タイムゾーン設定
  • ローカルな VM のため iptables を停止
  • httpd を yum でインストール
-*- mode: ruby -*-

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "CentOS65"

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

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
  end

  config.vm.provision "shell", inline: <<-EOT
        # timezone
        cp -p /usr/share/zoneinfo/Japan /etc/localtime
        # iptables off
        /sbin/iptables -F
        /sbin/service iptables stop
        /sbin/chkconfig iptables off
        # Apache
        yum -y install httpd
        /sbin/service httpd restart
        /sbin/chkconfig httpd on
  EOT
end

仮想環境を再起動します。

$ vagrant reload

プロビジョニングを実施します。

$ vagrant provision

ブラウザで http://192.168.33.10にアクセスし、Apache の Welcome ページが表示されれば成功です。

$ open http://192.168.33.10

HTML ファイルを作成し DocumentRoot を変更する

表示する HTML を作成する

$ echo "Hello!" >> index.html
$ ls
Vagrantfile index.html

httpd.conf を変更します。
DocumentRoot は synced_folder の /vargrant に変更します。

  • 仮想マシンにログイン
  • httpd.conf をコピー
[vagrant]$ cp -a /etc/httpd/conf/httpd.conf /vagrant/
[vagrant]$ exit
$ ls
Vagrantfile httpd.conf index.html

httpd.conf に VirtualHost を追記して DocumentRoot を /vagrant にします。

$ vim httpd.conf

<VirtualHost *:80>
    DocumentRoot /vagrant
</VirtualHost>

次に Vagrantfile を編集し、httpd.conf を /etc/httpd/conf/ へコピーします。

-*- mode: ruby -*-

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "CentOS65"

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

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
  end

  config.vm.provision "shell", inline: <<-EOT
        # timezone
        cp -p /usr/share/zoneinfo/Japan /etc/localtime
        # iptables off
        /sbin/iptatbles -F
        /sbin/service iptables stop
        /sbin/chkconfig iptables off
        # Apache
        yum -y install httpd
        cp -a /vagrant/httpd.conf /etc/httpd/conf/  # --- ここを追加
        /sbin/service httpd restart
        /sbin/chkconfig httpd on
  EOT
end

再度プロビジョニングを実行します。

$ vagrant provision

ブラウザで http://192.168.33.10にアクセスし、index.html の内容が表示されれば成功です。

$ open http://192.168.33.10

これで環境設定ができました。自分は不慣れですのでかなり苦労しましたが、少しでも参考になれば幸いです。