【一話完結】VCCWに頼らずVirtualBoxでWordpress開発環境を整えようとする件

VCCWでデザイナーさんにWordpress開発環境を整えて差し上げようと思ったんですけど、
何故かWordpressを移植したらめっちゃレイアウト崩れたりDBからちゃんと読めなかったりいろいろ謎なことになったんで、

「ならぬなら　作ってしまえ　VirtualBox」

というわけでUbuntuってのも気に食わなかったんで
CentOS7で開発環境構築しちゃうことにしましたよっと。
※大長編注意

##前提条件
・Vagrant、VirtualBox各最新版インストール済み
・既存のWordpress環境が正常に動作すること
・ホストのWindows10側と共有フォルダを有すること（ここにWordpressを設置する）
・DBに本番環境と同じ「MySQL」(MariaDBではなく)を利用すること
・VirtualBoxはホストに最新版が入っている状態

##手順
###1.CentOS7のisoファイル最新版をダウンロードしてくる。
　個人的にはインストール時にいろいろ設定しやすいのでフル版をダウンロードしておりますが
　そこはそれ好き好きで。
###2.仮想マシンを作成する。
　VirtualBox Managerを起動し、「新規」ボタンを押して仮想マシンを作成。
　タイプ：Linux
　バージョン：Red Hat(64-bit)
　ハードディスク：新規作成
　あとはデフォルトで大丈夫。
###3.ネットワークアダプターを追加する。
　作成した仮想マシンを右クリックし、「設定」を開いて「ネットワーク」を選択。
　アダプター2タブを開いて有効化。
　割り当てを「ホストオンリーアダプター」とする。
　名前に「VirtualBox Host-Only Ethernet Adapter」が出てればOK。
###4.CentOSのインストール
　仮想マシンにCentOS7のイメージをマウントして起動、CentOS7をインストール。
　インストール内容は最小インストールに開発ツールだけ足しておく。
　できればこの時点でホストオンリーアダプターの方に固定IPを振る。
###5.Guest Additionsのインストール
　コンソール画面の上にあるメニュー＞「デバイス」＞「Guest Additions CDイメージの挿入」を選択。
マウントして、中にあるVBoxLinuxAdditions.runを実行。

```bash:command
mount /dev/cdrom /mnt
/mnt/VBoxLinuxAdditions.run
```
###6.SSHから接続
　VirtualBoxの画面で設定をやりたくないので、SSHからの接続を行う。
　これ以降、SSHでの設定となる。
###7.モジュールのupdateとnet-tools・wgetのインストール
まあ、ついifconfigとかやっちゃうので。

```bash:command
yum -y update
yum -y install net-tools wget
```
###8.SELINUXの無効化
仮想マシンに接続しようとすると阻害してくることがあるらしい。
ちゃんと設定すれば良いんだろうけど開発用なのでdisabledでも良いかと安直に。

```bash:/etc/selinux/config
#SELINUX=enforce //コメントアウト
SELINUX=disabled
```
練習になるから本当はちゃんと設定した方が良いんだよ本当は…
###9.ApacheとPHPのインストール
PHPは7を入れるので、EPELとRemiリポジトリもインストール。

```bash:command
yum -y install httpd
yum -y install epel-release
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd php-mysqli
```
Wordpressでパーマリンク設定を変えるなどするので、
httpd.confのWordpressルートディレクトリのAllowOverride設定は「All」にしておく。
設定が完了したらApacheを起動、自動起動設定を行っておく。

```bash:command
systemctl start httpd
systemctl enable httpd
```

###10.firewallのhttp,httpsポートを開ける
Apacheが起動したら、ルートディレクトリに`<?php phpinfo(); ?>`を記述したPHPファイルを放り込んでブラウザから固定IPに接続し、PHPの動作確認をする。
必要なのがこちら↓

```bash:command
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --add-service=https --zone=public --permanent
```
###11.MySQL(MariaDBではない)のインストール
MySQL互換DBであるMariaDBのライブラリがインストールされているので、
それを削除してからMySQLを入れる。

```bash:command
yum -y remove mariadb-libs
rm -rf /var/lib/mysql/
```
MySQL用のリポジトリをインストールし、MySQLをインストール。
(この時点で最新安定版は5.7）
インストールしたら起動。

```bash:command
yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum -y install mysql-community-server
systemctl start mysqld
systemctl enable mysqld
```
###12.MySQLにWordpress用のDBを作成
/var/log/mysqld.logにroot用のテンポラリPASSWDが記述されているので、
それを元にMySQLへログイン、
Wordpress用のDBとユーザを作成し、
rootのパスワードを変更する。

```bash:command
mysql -u root -p
```

```mysql:SQL
#パスワード変更を最初にしないと先に進めない
set password for root@localhost=password('パスワード');
# Wordpress用のデータベース作成
CREATE DATABASE データベース名;
# Wordpress用ユーザと権限を設定
CREATE USER ユーザ名 IDENTIFIED BY 'パスワード';
GRANT ALL ON *.* TO ユーザ名;
```
###13.vagrantユーザにパスワード無しsudoの設定
visudoでvagrantユーザにパスワード無しsudoの権限を与える。
（vagrant upの際に必要となるため）

```bash:visudo
vagrant ALL=(ALL)       NOPASSWD:ALL
```
###14.SSL公開鍵の設定
vagrant ssh用のSSL公開鍵を取って来る。
（近年、共通の公開鍵を配布する方式になったとかどっかで見かけた）
無論、鍵は所有者をvagrantユーザに変更し、
パーミッションも本人のみ許可にする。

```bash:command
mkdir /home/vagrant/.ssh
chmod 700 /home/vagrant/.ssh
cd /home/vagrant/.ssh
curl -kLo authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
chmod 600 authorized_keys
chown -R vagrant.vagrant /home/vagrant/.ssh
```
これで己のUserフォルダに作成される.vagrant.dフォルダの中に
ホスト用の秘密鍵が生成される。

---
ここまでで仮想マシンの設定自体はとりあえず終了。
vagrant化のために一旦shutdown。

```bash:command
shutdown -h now
```
---
###15.vagrant boxの作成
適当なフォルダを作り、その中に移動して

```prompt:cmd
cd C:\Users\kuragen\Documents\フォルダ名
vagrant package --base 仮想マシン名
```
これでフォルダ内にpackage.boxというvagrant化された仮想マシンができる。

###16.Vagrantfileの作成
公開しても良いboxなら公開した方が楽なんだけど、
プロジェクト用とかの公開しちゃいけないboxの場合は共有フォルダにでも置けば良い。
initしてVagrantfileを生成する。
以下のパスはWindowsで共有フォルダに置いた場合の書き方例。

```prompt:cmd
vagrant init 仮想マシン名 file:///z:/public/vagrant/box名.box
```
###17.Vagrantfileの修正
プライベートipアドレスを修正したい場合は34行目付近、
ホストと共有フォルダを作りたい場合は45行目付近にあるので修正。

```Editor:Vagrantfile
34行目付近:　config.vm.network "private_network", ip: "192.168.33.10"
45行目付近:  config.vm.synced_folder "./html", "/var/www/html"
```
45行目付近は「ホスト側のフォルダパス」,「仮想マシン側のディレクトリパス」の順。

---
###18.試しにvagrant up
起動してSSH接続し、設定を確認してOKならVagrantfileを配布すれば良い。