VirtualBox+VagrantでCentOS7のWordPress環境を構築する

現行のリビジョン（投稿時点）でWordPress立ち上げまでまとめてみました。さくっと構築できる、便利な時代ですね。ホストOSはWindows10(64bit)です。

# VirtualBoxとVagrantのインストールと設定
事前にCPUの仮想化機能が有効になっているか、タスクマネージャー（詳細表示）->パフォーマンスタブの「仮想化」が「有効」になっていればOK。「無効」の場合、BIOSで設定。

### VirtualBoxのインストール
https://www.virtualbox.org/ で、「Download VirtualBox 5.1」（※バージョンは投稿時）-> 次画面の「Windows hosts」でインストーラーをダウンロード。インストールは既定の設定で。

### Vagrant（ベイグラント）のインストール
https://www.vagrantup.com/ で、「Download」 -> 次画面の「Windows(Universal (32 and 64-bit)」でインストーラーをダウンロード。インストールは既定の設定で。最後にOS再起動。再起動後、コマンドプロンプトで「vagrant version」と入力し、バージョンが表示されたらインストール完了。

### Vagrantの設定
適当なフォルダを作り、コマンドプロンプトでそこに降り、以下のコマンドを入力

```
vagrant add centos/7
vagrant init centos/7
```

同フォルダに「Vagrantfile」ファイルが作成されるので、以下のように変更、追記（メモリ1024は要求に合わせて適宜設定）

```
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.synced_folder ".", "/vagrant", disabled: true #共有フォルダ設定を無効
config.vm.provider "virtualbox" do |vb|
   vb.memory = "1024"
  end
```

CentOSの起動。画面はでません。気になるときはVirtualBoxから確認可能。

```
vagrant up
# 停止は vagrant halt
# また、 vagrant ssh でSSH用キーのパスを表示しておく
```

# TeraTermでSSH接続
https://ja.osdn.net/projects/ttssh2/ で、「ダウンロード」メニューからインストーラーをダウンロードしてインストール。完了したらTera Termを起動し、以下の値を入力し、OKを押す。と、キーの場所を聞かれるので、「vagrant ssh」で表示したパスを入力。

```
ホスト　127.0.0.1
TCPポート　2222
SSHバージョン SSH2
ユーザ vagrant
パスワード vagrant
```

なお、以下のようなショートカットを作っておくと便利

```
ttermpro.exe 127.0.0.1:2222 /ssh2 /auth=publickey /user=vagrant /passwd=vagrant /keyfile="キーファイルのパス"
```

# 環境構築
ここからは、TeraTerm上での作業です。

```
su
# パスワードは「vagrant」
```

## 準備

日本語化

```
localectl set-locale LANG=ja_JP.UTF8
localectl set-keymap jp106
```

再起動（コマンドプロンプトで）

```
vagrant reload
```

（再びTeraTermで）パッケージのアップデート

```
yum update
```

## httpd、phpのインストール

```
yum install httpd php wget php-mbstring
```

httpd開始、自動起動設定

```
systemctl start httpd
systemctl enable httpd
```

ホストOSのブラウザから、httpdの動作確認

```
http://http://127.0.0.1:8080/
```

## phpをhttpdで動かす設定

php.iniの修正

```
cp /etc/php.ini /etc/php.ini.org
vi /etc/php.ini
```

```
# 以下のように変更（変更箇所のみ抜粋）
default_charset = "UTF-8" 
date.timezone = "Asia/Tokyo" 
mbstring.language = Japanese 
mbstring.internal_encoding = UTF-8 
mbstring.http_input = pass 
mbstring.http_output = pass 
mbstring.encoding_translation = Off 
mbstring.detect_order = auto 
mbstring.substitute_character = none; 
mbstring.func_overload = 0 
mbstring.strict_detection = Off 
mbstring.http_output_conv_mimetype=
```

ついでにCGIが動くよう、httpd.confの修正

```
vi /etc/httpd/conf/httpd.conf
```

```
# 変更前 #Options Indexes FollowSymLinks
Options Includes ExecCGI FollowSymLinks

# 変更前 AllowOverride None
AllowOverride All

# 以下のようにコメントアウトする
# AddDefaultCharset UTF-8

# 以下を追記
AddType text/css .css
AddType text/javascript .js
```

httpd再起動

```
systemctl restart httpd
```

php動作確認用ページ作成

```
touch /var/www/html/phpinfo.php
vi /var/www/html/phpinfo.php
# 以下を入力、保存
<?php phpinfo(); ?>
```

ホストOSのブラウザから、phpの動作確認

```
http://http://127.0.0.1:8080/phpinfo.php
```

## MariaDB(MySQL)のインストールと設定

CentOS7から、データベースサーバがMySQLからMariaDBになる。機能は同じ（多分）。

```
yum install mariadb mariadb-server mariadb-devel php-mysql
```

mariadb開始、自動起動設定

```
systemctl start mariadb
systemctl enable mariadb
```

初期設定

```
mysql_secure_installation
# インストール直後はrootパスワード空白なのでそのままenter
# 新しいパスワードを入力
# その後の質問(anonymousユーザ削除など)は全て「y」
```

my.cnfの修正

```
vi /etc/my.cnf
```

```
# 以下を追記
character-set-server = utf8
default_password_lifetime = 0
```

データベースの作成

```
mysql -u root -p
```

```
create database wp;
grant all privileges on wp.* to wp@localhost identified by 'wp';
```

## WordPressのインストール

```
cd /tmp
# 最新版をダウンロード、解凍
wget http://ja.wordpress.org/latest-ja.tar.gz
tar zxvf latest-ja.tar.gz
# コピーしてapacheユーザとグループに権限設定
cp -r wordpress /var/www/
chown -R apache.apache /var/www/wordpress
```

httpd.confの修正

```
# ドキュメントルートをWordPressにする
# 変更前 DocumentRoot "/var/www/html
DocumentRoot "/var/www/wordpress
# 変更前 <Directory "/var/www/html">
<Directory "/var/www/wordpress">
```

httpd再起動

```
systemctl restart httpd
```

ホストOSのブラウザから動作確認

```
http://http://127.0.0.1:8080/
```

![image](https://qiita-image-store.s3.amazonaws.com/0/125752/bc98eb42-854c-4fc8-0444-c659d94428e3.png)

## WordPressの初期設定

あと少し

MariaDBで作成したデータベース、ユーザを入力。当例では全て「wp」

![image](https://qiita-image-store.s3.amazonaws.com/0/125752/7c921150-f45a-1490-0ebc-203163fe220a.png)

wp-config.phpに書き込めないと来た（chownでapacheにしてるんだけどユーザ違うのかな？）。

![image](https://qiita-image-store.s3.amazonaws.com/0/125752/9ac78e96-70f2-5b0c-e582-3303a65fa64b.png)

しょうがないので指示通りに

```
touch /var/www/wordpress/wp-config.php
vi /var/www/wordpress/wp-config.php
# 画面の内容を貼付け、保存
# apacheユーザに権限設定を忘れずに
chown apache.apache /var/www/wordpress/wp-config.php
```

再びWordPress設定画面へ。５分間インストールプロセスを進ぬ
![image](https://qiita-image-store.s3.amazonaws.com/0/125752/f6bdd5d3-5ba0-25b2-1f1e-e6e186223385.png)

５分後
![image](https://qiita-image-store.s3.amazonaws.com/0/125752/d44dc722-2804-cf03-0e4c-53dafa709a58.png)

WordPressだけ考えると、InstantWPという手もありますが(多分Windows限定)、本番環境に近い環境が欲しい時、その他実験したい時など、素敵だと思います☆ミ