【さくらのVPS】DBサーバを外部に置いたWordpress構築（dbサーバのセットアップ）

#はじめに

[Webサーバのセットアップ](https://qiita.com/siba4848/private/b10c0504df369b45180a)が完了したのでDBサーバのセットアップを行います。
こちらも同様にsshクライアントや作業用ユーザの設定は[コチラ](https://qiita.com/siba4848/items/4061a9981a9791761ddb)のページを参照して下さい。
公開鍵認証は新たに鍵の生成をせずクライアントの公開鍵をscpで転送するなどしても使い回すのでもOKです。

#ローカルネットワークの設定
まずWebサーバと通信する為にローカルネットワークの設定を行います。

##eth1のアクティベート
下記コマンドを実行します。

```
$ sudo nmtui
```

以下のような画面が開きます。
"接続をアクティベートする"を選択してEnterを押下します。
**※ 任意で"システムのホスト名を設定する"からサーバのホスト名を設定してください。**
![image_9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391107/e0389096-cd47-a6be-ef40-638e5c985077.png)

eth1を選択してEnterを押下します。eth0と同様にeth1の左横に「*」が付けばOKです。
戻るを押下します。
![image_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391107/70659a66-6cdb-1962-dbf7-bc6cca4ea741.png)

##eth1のIPアドレスの設定
次に"接続の編集"を選択してEnterを押下します。
![image_9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391107/e0389096-cd47-a6be-ef40-638e5c985077.png)

"system eth1"を選択してEnterを押下します。
![image_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391107/69b108a1-7545-41cb-1a45-51189f20ad86.png)

"IPv4設定"の項で"無効"となっているところを選択しEnterを押下し、"手作業"を選択します。
その後、その右側にある"表示"を選択しEnterを押下します。
![image_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391107/517fd1f8-b4ce-1418-9a93-3c06c9308ee2.png)


下記のような画面が表示されますので、"アドレス"と"ゲートウェイ"にローカルIPアドレスとなる任意の値を入力し控えておきます。（ローカルIPについてよくわからなければ画像の通りに入力して下さい。）
"自動的に接続する"に[x]を入れて画面下部にある＜OK＞を選択しEnterを押下します。
![image_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391107/be33f5c5-2b2e-9038-2f06-43edd5dd0667.png)


##NetworkManagerの再起動
設定を反映させる為にNetworkManagerを再起動します。

```
$ systemctl restart NetworkManager
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: username
Password:  ⬅︎ユーザパスワードの入力
==== AUTHENTICATION COMPLETE ===
```

##設定されたIPアドレスの確認
設定を確認してみます。
eth1のIPアドレスが指定した値になっていればOKです。

```
$ ip addr show
///

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.3/24 brd 192.168.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever

///
```

以上でローカルネットワークの設定は完了です。

#疎通確認
webサーバ、dbサーバの両方のローカルネットワーク設定が完了したので疎通を確認してみます。
双方"0% packet loss"となっていればOKです。

###db ➡︎ web 
```
$ ping -c4 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=12.9 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.427 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=5.20 ms
64 bytes from 192.168.0.2: icmp_seq=4 ttl=64 time=5.38 ms

--- 192.168.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.427/5.995/12.967/4.489 ms
```

###web ➡︎ db
```
$ ping -c4 192.168.0.3
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.344 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.424 ms
64 bytes from 192.168.0.3: icmp_seq=3 ttl=64 time=0.421 ms
64 bytes from 192.168.0.3: icmp_seq=4 ttl=64 time=0.380 ms

--- 192.168.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.344/0.392/0.424/0.035 ms
```

# PHPのインストール
PHPでMySQLとMariaDBを扱う為のパッケージ等もまとめてインストールします。

```
$ sudo yum -y install php php-mbstring php-gb php-mysql
```

##PHPのバージョン確認

```
$ php -v
PHP 5.4.16 (cli) (built: Oct 30 2018 19:30:51) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
```

##PHPのバージョンアップ
5.4系ではWordpressのインストール時に「サーバーの PHP バージョンは 5.4.16 ですが WordPress 5.2 は 5.6.20 以上のみでご利用になれます。」と表示され使用出来ません。
5.6系にバージョンアップします。

まずインストールされているPHPのパッケージ等を確認します。

```
$ rpm -qa | grep php
php-mysql-5.4.16-46.el7.x86_64
php-pdo-5.4.16-46.el7.x86_64
php-mbstring-5.4.16-46.el7.x86_64
php-cli-5.4.16-46.el7.x86_64
php-5.4.16-46.el7.x86_64
php-common-5.4.16-46.el7.x86_64
```

##リポジトリの追加・更新
下記のコマンドを実行します。
「最新バージョンです」「何もしません」となった場合は対応不要です。

```
＄ sudo yum -y install epel-release
```

```
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```

##バージョンアップの実行
先ほど確認したインストール済みのパッケージ等を指定しyumでアップデートを実行します。

```
$ sudo yum -y update --enablerepo=remi,remi-php56 php php-pdo php-mbstring php-common php-cli php-mysql

///
完了しました！
```

##バージョン確認

```
$ php -v
PHP 5.6.40 (cli) (built: Apr 30 2019 11:35:35) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
```

##サーバの再起動

```
$ sudo systemctl reboot
```

#MariaDBのインストールとセットアップ

## MariaDBのインストール

```
$ sudo yum -y install mariadb-server mariadb
```

## mariaDBの起動と自動起動の有効化

```
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb
```

##dbの作成
wordpressの情報が保存されるdbを作成します。

尚、ここでは作業用ユーザの作成時に"WITH GRANT OPTION;"は付けていません。
**※ "WITH GRANT OPTION;"をつけると追加した作業用ユーザと、その作業用ユーザが権限を与えた作業用ユーザにもアクセス権を与えられるようになるので権限の管理が煩雑になる為です。**

```
$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE datebase_name;　⬅︎任意のdatebase_nameを入力
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON database_name.* TO "username"@"192.168.%" IDENTIFIED BY "db_password";　⬅︎先ほどのdatabase_nameと任意のdb用のusernameとそのdb_passwordを入力
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;　⬅︎リロード
Query OK, 0 rows affected (0.01 sec)
```

次に作成されたDBのuserとアクセス可能なホストの情報を確認します。
IPアドレス192.168.% （ローカルIPの振られたユーザ）を持つ作業用ユーザがmariadbにアクセスが可能である事が示されます。

```
MariaDB [(none)]> select user, host from mysql.user;
+----------+-----------+
| user　　　| host　　　 |
+----------+-----------+
| root　　　| 127.0.0.1 |
| username | 192.168.% |　⬅︎追加したやつ
| root　　　| ::1       |
| root　　　| localhost |
+----------+-----------+
4 rows in set (0.00 sec)

MariaDB [(none)]> exit
Bye
```

##FirewalldにMariaDBを追加

```
$ sudo firewall-cmd --permanent --add-service=mysql
[sudo] username のパスワード:   ⬅︎作業用ユーザのPWを入力
success
$ sudo firewall-cmd --reload
success
```

この時点でwebサーバからdbサーバへのアクセスが可能になります。
改めて以下のwordpressのURLにアクセスしてみましょう。

```
http://XXX.XXX.XXX.XXX（WebサーバのVPSのIPアドレス）/wp-admin/install.php/
```

以下のような画面が表示されればOKです。
テキストボックスに任意の値を入力してサーバへのインストールをはじめましょう。
![image_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391107/d626b799-b415-675c-a446-5ad4ebcbc107.png)

以上、DBサーバを外部に置いたWordpress構築でした。


#参考にさせていただいたページ
[別サーバの MySQLにアクセスする設定・ファイアウォール設定、ポート設定、MySQL設定、テーブルへ権限付与の方法](https://blog.s-giken.net/304.htm])
[CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説](]https://blog.s-giken.net/369.html)
[CentOS 7.2 MariaDB 外部接続を有効にする](https://kagasu.hatenablog.com/entry/20160128/1453948015)