VagrantにCentOS6.5 + Apache2.2.15 + MySQL5.6.17 + PHP5.5 + phpMyAdmin4.1.13の構築方法



CentOSのboxをadd & init
---

**CentOS 6.5 x86_64をaddする。**
※boxの名前はcentos6.5_64にしている。

```
vagrant box add centos6.5_64 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
```

boxは以下のページにある。
http://www.vagrantbox.es/

http://nrel.github.io/vagrant-boxes/


**VM用ディレクトリを作成し、移動**
※ディレクトリ名は好きな名前を指定。

```
mkdir local_server
cd local_server
```

**初期化**

※boxの名前はcentos6.5_64にしている。

```
vagrant init centos6.5_64
```


Vagrantfile編集
---
vagrant initで出来たVagrantfileを下記の内容に差し替える。
※boxの名前はcentos6.5_64にしている。
※privateなipは192.168.33.50にしている。
※Vagrantfileのあるディレクトリにrootというディレクトリを作り、
　　　　　そのrootディレクトリをローカルサーバのルートディレクトリにしている。

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


# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"


Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos6.5_64"
  config.vm.network "private_network", ip: "192.168.33.50"
  config.vm.synced_folder "root", "/var/www/html", :create => "true"



  $script = <<SCRIPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
service iptables save
service iptables restart
yum -y update
yum -y install httpd vim git wget ntp
touch /etc/httpd/conf.d/vhosts.conf
chown vagrant: /etc/httpd/conf.d/vhosts.conf
echo "NameVirtualHost *:80" >> /etc/httpd/conf.d/vhosts.conf
echo "<VirtualHost *:80>" >> /etc/httpd/conf.d/vhosts.conf
echo "  DocumentRoot /var/www/html" >> /etc/httpd/conf.d/vhosts.conf
echo "</VirtualHost>" >> /etc/httpd/conf.d/vhosts.conf
chkconfig httpd on
service httpd start
service iptables stop
chkconfig iptables off
echo ----------------------------------------------------------------------------
echo FINISH
echo ----------------------------------------------------------------------------
SCRIPT
  config.vm.provision :shell, :inline => $script
end 
```

**/var/www/htmlに移動。**

```
cd /var/www/html
```


**index.htmlを作成する。**
※中身はなんでも良い。

```
sudo vim index.html
```


**下記アドレスにアクセスし、先ほど作成したindex.htmlが表示されるか確認。**
http://192.168.33.50/


時刻をNTPで合わせる。ついでに日本時間にする。
---
**タイムゾーンの確認**

```
date "+%Y/%m/%d %H:%M:%S %Z"
```
※上記で表示される時間の末尾がJSTでなければ日本標準時にする

```
sudo cp /usr/share/zoneinfo/Japan /etc/localtime
```
**再度、タイムゾーンの確認**

```
date "+%Y/%m/%d %H:%M:%S %Z"
```
※表示される時間の末尾がJSTなら完了。

**時刻合わせの対象を NICT の NTP サーバに変更する。**

```
sudo sed -i.bak -e "s:^server:#server:g" /etc/ntp.conf
cat << EOS | sudo tee -a /etc/ntp.conf > /dev/null
server ntp.nict.jp iburst
EOS
```

**NTP デーモンを開始する。**

```
sudo chkconfig ntpd onsudo service ntpd start
```
**時刻を合わせる。**
※しばらくすれば同期するが、下記コマンドを実行するとすぐに同期する。

```
sudo ntpdate -s ntp.nict.jp
```

**動作状況の確認。**
※下記コマンドを実行後、サーバ(remote)の横に*がついていれば同期できている。
※下記コマンドを実行してもサーバ(remote)の横に*がつかなければ、VMを再起動して、再度下記コマンドを実行して確認してみる。

```
ntpq -p
```

参照
     CentOS 6.5 の時刻を NTP で合わせる
     http://momijiame.tumblr.com/post/71824818067/centos-6-5-ntp


MySQLのインストール
---
**以下のページから最新版のRPMファイルをダウンロードする**
※CentOS6.5を使っているので、Red Hat Enterprise Linux 6のRPMをダウンロードする。
http://dev.mysql.com/downloads/repo/


※使用したrpmファイルのURLは以下。
http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm


**ダウンロードしたRPMを/var/www/htmlに置いておく。**
※/var/www/htmlは上記Synced Folderの設定で
Vagrantfileの置いてあるディレクトリになっているはずなので、
Finderでファイルの移動を行っても良い。


**/var/www/htmlに移動。**

```
cd /var/www/html
```

**RPMパッケージのインストール。**

```
sudo rpm -i mysql-community-release-el6-5.noarch.rpm
```
※上記コマンドはダウンロードしたrpmファイルを使用しているが、
下記を実行することにより、ダウンロードせずにRPMパッケージをインストールできる。

```
sudo rpm -i http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
```


**MySQLのインストール。**

```
sudo yum install -y mysql-community-server mysql-community-client mysql-community-devel
```


**インストールを確認する。**

```
mysql --version
```

※mysql Ver 14.14 Distrib 5.6.17, for Linux (x86_64) using  EditLine wrapperが表示される。

```
mysqld --version
```
※mysqld  Ver 5.6.17 for Linux on x86_64 (MySQL Community Server (GPL))が表示される



**MySQLを自動起動に登録する**

```
sudo chkconfig mysqld on
```


**自動起動に登録されたか確認する**

```
sudo chkconfig --list mysqld
```
※runlevel 2, 3, 4, 5でonになっていればOK



**MySQLを起動する**

```
sudo service mysqld start
```


※上記、sudo service mysqld startを実行しても「MySQL Daemon failed to start.」と表示され
MySQLが起動しない場合は以下のコマンドを実行してログを確認する。

```
sudo cat /var/log/mysqld.log
```
上記で表示したログに
「InnoDB: Using atomics to ref count buffer pool pages」が含まれている場合、
バッファが足りていないので、以下の手順に従いSwap領域を設定する。


**メモリ確認**

```
free
```

**スワップ用ファイルの作成**

```
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
```
※デフォルトではSwapのtotal、used、freeとも0になっている。



**スワップ領域の作成**

```
sudo mkswap /swapfile
```


**スワップ領域を有効にする**

```
sudo swapon /swapfile
```


**再度メモリを確認**

```
free
```

※Swapのtotalとfreeは1048572になっている。



これでMySQLが起動できるので、再度コマンドを実行する。

```
sudo service mysqld start
```


**MySQLのプロセス確認**

```
sudo ps auxwf | grep mysql
```
※mysqlのプロセスがリストアップされていればOK



**MySQLの初期設定**

```
sudo mysql_secure_installation
```
※上記コマンドで以下の操作を行う。
     ・rootユーザのパスワード設定(Enter current password for root (enter for none)) => Enter
               (Set root password? [Y/n]) => Y入力後、新しいパスワードを登録。
     ・アノニマスユーザの削除(Remove anonymous users? [Y/n]) => Y
     ・rootユーザのリモートログイン禁止(Disallow root login remotely? [Y/n]) => Y
     ・テスト用データーベースの削除(Remove test database and access to it? [Y/n]) => Y
     ・変更した情報の再読み込み(Reload privilege tables now? [Y/n]) => Y


**動作確認**

```
sudo mysql -u root -p -e "select user, password, host from mysql.user;"
```
※パスワードの入力を求められたら、先ほど登録したrootユーザのパスワードを入力する。


PHPインストール
---
**epelレポジトリ追加。**

```
sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
```


**remiレポジトリ追加。**

```
sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
```


**インストール。**

```
sudo yum install -y --enablerepo=remi,remi-php55 httpd-devel php php-devel php-common libxml2-devel openssl-devel gd-devel curl-devel libmcrypt-devel re2c
```


```
sudo yum install -y --enablerepo=remi,remi-php55 php-pecl-apc php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
```


**PHPがインストールされているか確認。**

```
rpm -qa | grep php
```

```
php -v
```


**php.iniを/var/www/htmlにコピー。**
※viやvimで直接php.iniを編集してもいいが、使い慣れていないので
Sublimetextで編集するために一度/var/www/htmlにコピーする。

```
sudo cp -a /etc/php.ini /var/www/html
```

※php.iniの場所は下記のコマンドで確認できる。

```
php --ini
```


**php.ini編集**
>;date.timezone =

上記の行を検索して、下記に変更。
>date.timezone = Asia/Tokyo

#

>;mbstring.internal_encoding = UTF-8

上記の行を検索して、下記に変更。

>mbstring.internal_encoding = UTF-8


編集したphp.iniでリプレイスする。

```
sudo cp -a /var/www/html/php.ini /etc
```




**php.confを/var/www/htmlにコピー。**
※viやvimで直接php.confを編集してもいいが、使い慣れていないので
Sublimetextで編集するために一度/var/www/htmlにコピーする。

```
sudo cp -a /etc/httpd/conf.d/php.conf /var/www/html
```



**php.conf編集**
※下記の内容が記述されているか確認し、記述されていなければ追加する。

```
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
```


**編集したphp.confでリプレイスする。**
```
sudo cp -a /var/www/html/php.conf /etc/httpd/conf.d
```



**Apache再起動**

```
sudo service httpd restart
```


**動作確認用PHPファイル作成。**
※下記の内容を記述したファイルを/var/www/html/info.phpとして保存。<?php phpinfo(); ?>



**動作確認**
※下記URLにアクセスしてPHPInfoが表示されればインストール成功。
※IPはVagrantfileの「config.vm.network "private_network", ip:」の値によって変わる。
http://192.168.33.50/info.php



参照
【シンプル】CentOS6にPHP5.5をyumで簡単にインストールする手順
   http://blog.ybbo.net/2014/01/22/%E3%80%90%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%80%91centos6%E3%81%ABphp5-5%E3%82%92yum%E3%81%A7%E7%B0%A1%E5%8D%98%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/


CentOS6.5 に PHP5.5.7 を入れる
http://d.hatena.ne.jp/yoya/20131217/centos



phpMyAdminインストール
---
**phpMyAdminダウンロード**


```
sudo wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.1.13/phpMyAdmin-4.1.13-all-languages.tar.gz
```


**gzファイル解凍**

```
sudo tar zxvf phpMyAdmin-4.1.13-all-languages.tar.gz
```


**解凍してできたディレクトリの移動&リネーム**

```
sudo mv phpMyAdmin-4.1.13-all-languages /var/www/html/phpMyAdmin
```


**gzファイル削除**

```
sudo rm phpMyAdmin-4.1.13-all-languages.tar.gz
```


**動作確認**
※下記URLにアクセスしてログインしてみる。
※ユーザ名、パスワードはMySQLのユーザ名、パスワードを入力する。
http://192.168.33.50/phpMyAdmin/

画面下に以下のエラーメッセージが表示されているのが確認できる。

>「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」


**config.sample.inc.phpからconfig.inc.phpファイル作成**

```
sudo cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php
```


**config.inc.php編集**

下記の行を見つけ出し、値を変更する。
>$cfg['blowfish_secret'] = 'a8b7c6d';
　　　　　↓
$cfg['blowfish_secret'] = 'hove'; 


**動作確認**
※再度、下記URLにアクセスする。
今度はエラーメッセージが消えているのが確認できるはず。
http://192.168.33.50/phpMyAdmin/




参照
     phpMyAdminインストール
     http://www.dbonline.jp/phpmyadmin/install/