vagrantでCentOS5 + php5.3 + mysql5.5の開発環境構築 その１

すでに古いシステムですが、現在進行形で動いている実機と同等の仮想環境を作って開発環境を構築しろってお仕事がありましたので、忘備録です。  
php5.3やCentOS5なんてもう古いので、Google先生で見つけた通りやってもうまくいかなかったです　はい。  
ちなみに仮想環境のホストはWindowsとなります。  

# vagrantでCentOS5 + php5.3 + mysql5.5の開発環境構築

## １．要件
- CentOS5.11で最少インストールで
- apache（バージョン特に指定なし）
- mysql 5.5系
- php 5.3（実機はphp53uなのでiusのリポジトリーで）
- phpのモジュールたくさん
- memcachedも必要
- phpMyAdminも必要
- vagrantでboxファイルにして起動すると開発環境に勝手にマウント

要件はこんな感じです。

## ２．必要なソフトを揃える

### VirtualBoxのインストール
vagrant boxを作るのに必要
https://www.virtualbox.org/wiki/Downloads
こちらからダウンロード＆特に何も考え無しでインストールいけます

### vagrantのインストール
Virtual Boxで作成した仮想環境をboxファイルにします。
https://www.vagrantup.com/downloads.html
こちらからダウンロードでいけます。
（1.7系を使いました）  

## ３．CentOS5のダウンロード
http://ftp.riken.jp/Linux/centos/5/isos/x86_64/
こちらからISOファイルをダウンロード  
ダウンロードを行ったファイルは【CentOS-5.11-x86_64-bin-DVD-1of2.iso】です。  
。。。でかいです。。。  

## ４．Virtual boxにCentOS 5.11をインストール

【新規】で新しい仮想マシンの作成

![image](https://qiita-image-store.s3.amazonaws.com/0/79067/e51989f6-183d-ea79-c637-182572759c26.png)

名前は適当に
タイプはLinuxでバージョンは【Red Hat(64-bit)】となります。
次にメモリーサイズが聞かれますので適当にメモリーを割り当てます
（私は1024MBにしました）
ハードディスクは【仮想ハードディスクを作成する】を選択し
ハードディスクのファイルタイプを【VDI】、可変サイズに指定
ファイルサイズはお好みに合わせて作成してください。

仮想マシンが出来ましたら、作成した仮想マシンの設定で、
【オーディオ】オーディオの有効化のチェックを外す
【USB】USBコントローラの有効化のチェックを外す
【ストレージ】空って書いてあるCDのアイコンをクリックして属性のところにあるCDのアイコンをクリックして、ダウンロードしたCentOS5.11のISOファイルを指定

そしてOKを押して起動するとCentOSのインストーラーが立ち上がります。

色々とハマる場所、何点か

- 【CD Found】のところはSkip

![image](https://qiita-image-store.s3.amazonaws.com/0/79067/089cb00d-371a-05e7-8072-c7e5b168aa7c.png)

- ネットワークデバイスは開発環境でipv6は使わないのでチェックを外す

![image](https://qiita-image-store.s3.amazonaws.com/0/79067/698dae04-d0ec-57bc-88c7-3fde1ea2a0f9.png)

- 最小構成という要件なので、追加タスクは一切行わない

これでインストールが開始されます

## ５．インストール後の設定

sshで作業を行うのですが、仮想環境端末上だと作業しずらいので、ポートフォワードのルールを作って、慣れた端末環境からログインできるようにします。
【設定】→【ネットワーク】→【高度】→【ポートフォワーディング】でルールを作成
![image](https://qiita-image-store.s3.amazonaws.com/0/79067/2c0b5229-811d-e699-1a71-e701e3c9b9a5.png)

- 2222ポートでアクセスを行ったら22ポート(ssh）で接続

これで、こんな感じで接続可能です。
![image](https://qiita-image-store.s3.amazonaws.com/0/79067/e6efbe9e-da54-7585-8a19-fc0f421bd99b.png)

ユーザ名をroot、パスワードはインストール時に設定したものです。
※これでコピペが使えるのでらくちん！

### 5-1.Vagrantユーザの作成と設定
vagrant用のアカウントを作成します。  

```shell-session
[root@localhost ~]# useradd -m vagrant
[root@localhost ~]# passwd vagrant
Changing password for user vagrant.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
```
※パスワードは【vagrant】と設定

### 5-2.vagrantユーザのsshの設定
以下の通りコマンドを打ち込みます。

```shell-session
[root@localhost ~]# mkdir /home/vagrant/.ssh
[root@localhost ~]# chmod 700 /home/vagrant/.ssh
[root@localhost ~]# cd /home/vagrant/.ssh
[root@localhost .ssh]# curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   409  100   409    0     0    311      0  0:00:01  0:00:01 --:--:--   311
[root@localhost .ssh]# chmod 600 /home/vagrant/.ssh/authorized_keys
[root@localhost .ssh]# chown -R vagrant.vagrant /home/vagrant/.ssh
[root@localhost .ssh]#
```

### 5-3.vagrantユーザのsudoの設定
Windows環境へのマウントを行う時に必要

```shell-session
# visudo

※sudoのファイルが開きます

Defaults    requiretty
　　　↓（コメントアウト）
#Defaults    requiretty

※一番最後の行に下の一行を追加
vagrant ALL=(ALL)       NOPASSWD: ALL
```

### 5-4.yumのアップデート
とりあえず、yumのアップデート

```shell-session
[root@localhost .ssh]# yum update
```

### 5-5.kernel-dev関連のインストール
vbxsfを使うのに必要（忘れるとマウントできない）

```shell-session
[root@localhost .ssh]# yum update kernel
[root@localhost .ssh]# yum install kernel-devel kernel-headers gcc gcc-c++
```

### 5-6.余計なサービスの停止
開発環境なので必要のないサービスをすべて停止する。
（開発環境じゃなくても停止した方がいいものも多数）

```shell-session
※開発環境なのでセキュリティは考慮しないのでFirewallは停止

service iptables stop
service ip6tables stop
chkconfig iptables off
chkconfig ip6tables off

※bluetoothは使わないのでOFF

service bluetooth stop
chkconfig bluetooth off

※その他使わなさそうなサービスをOFF

service acpid stop
service cpuspeed stop
service isdn stop
service mcstrans stop
service pcscd stop
service restorecond stop
service firstboot stop
service xfs stop

chkconfig acpid off
chkconfig cpuspeed off
chkconfig isdn off
chkconfig mcstrans off
chkconfig pcscd off
chkconfig restorecond off
chkconfig firstboot off
chkconfig xfs off

```

### 5-7.一度再起動
Kernel周りのパッケージを入れたので反映させるため一度再起動

```shell-session
[root@localhost .ssh]# shutdown -r now
```

### 5-8.VirtualBox Guest Additionsのインストール
vboxsfでマウントするのに必要

1.仮想マシンのウインドウから【デバイス】→　VirtualBox Additions CDの挿入

その後、以下のコマンドでインストールを行う

```shell-session
[root@localhost ~]# mount -r /dev/cdrom /mnt
[root@localhost ~]# sh /mnt/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.0.10 Guest Additions for Linux............
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module                   [  OK  ]
Building the shared folder support module                  [  OK  ]
Not building the VirtualBox advanced graphics driver as this Linux version is
too old to use it.
Doing non-kernel setup of the Guest Additions              [  OK  ]
Starting the VirtualBox Guest Additions                    [  OK  ]
Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping
[root@localhost ~]# umount /mnt
```
※だいたいOKがでれば良いと思います。

2.仮想マシンのウインドウから【設定】からディスクを除去

### 5-9.selinuxの無効化

```shell-session
# vi /etc/sysconfig/selinux

# disabledに変更
SELINUX=disabled

```

### 5-10.udevのルールの削除

```shell-session
rm -f /etc/udev/rules.d/70-persistent-net.rules
rm -rf /dev/.udev/
rm -f /lib/udev/rules.d/75-persistent-net-generator.rules
```

### 5-11.yum cleanを行う

```shell-session
yum clean all

``` 

これで再起動して立ち上がれば、綺麗なVagrantBox用の仮想環境の出来上がりです。
長くなりましたので、boxファイル作成は次の回ということで。。。