CentOS 8とmysqlで WordPress 構築

#環境
CentOS 8.0.1905(Conoha VPS)
WordPress
Nginx
mysql

#初めに
WordPressの環境を作りたく、作ってみた思ったより簡単にできたので
手順メモ。

#フロー
1.Nginxインストール
2.mysqlインストール
3.phpインストール
4.phpの拡張機能インストール
5.db作成
6.wordpressのインストール
7.Nginx設定
8.完了


#手順
LEMP環境を作成
LEMP…Linux,Nginx,Mysql,Phpの頭文字をとったもの。LAMPは知ってたけど。
遅れながら初耳。
という訳でVPSとかでOSまでのインストールまでは勝手にやってくれている前提でやってみる。まずはシステムのアップデート

```shell:dnfupdate
dnf update
```
dnfっていうのも初めて。調べてみるとyumの後継だとか。ほほう。ラズパイだとapt-getとかだよね（多分）
次、Nginxをインストール。

```shell:install_Nginx
dnf install nginx
#再起動時に自動で起動するように設定
systemctl enable --now nginx
#状態をチェック
systemctl status nginx
```

##nginxのインストール

```shell:inginx_status
#以下のように表示されていればOKそう。
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-10-09 02:57:23 EDT; 10s ago
  #…（略）
#うまくいってないと以下のような表示がある
 Active: failed (Result: exit-code)
```

```shell:firewall
#firewallのポート設定http (80) https(443)を許可しておく
firewall-cmd --add-port = 80 / tcp --permanent
firewall-cmd --reload
```
ここまでで問題なければ
http://サーバーのIPアドレス
でブラウザを叩くとWelcome to Nginx なるページが表示されればOK。

お次はmysqlのインストール

##mysqlのインストール
```shell:install_mysql
#これで一撃だった
dnf install @mysql
#インストール後はおなじみサービス起動と自動起動設定
systemctl start mysqld
systemctl enable mysqld
#mysqlの初期セキュリティ設定もついでにやっとく詳しい内容はググった。対話形式の設定なので躓く事はないかと。
mysql_secure_installation
#動作確認（ログインできるか確認する）
mysql -u root -p
```

mysqlはいったん完了。次PHP

##phpのインストール
```shell:install_php
#これで一撃だった
dnf install php-cli php-json php-opcache php-xml php-gd php-curl
#phpも自動起動設定
systemctl enable --now php-fpm
#動作確認
vi /usr/share/nginx/html/test.php
#vimで開いたら以下のコードを書く
<?php 
phpinfo(); 
?>
```
ファイルを保存してブラウザで「http://サーバーのIPアドレス/test.php」を叩いて
phpinfoが表示されればOK。

```shell:ファイル削除
#確認が完了したらテストファイルは削除
rm -rf /var/www/html/test.php
```
##phpの拡張機能インストール

CentOS 8でWordPressを実行するために必要なphpの拡張機能のインストールをする。

```shell:PHPExtensions
dnf install php-cli php-json php-opcache php-xml php-gd php-cur
```

ここからwordpress構築に向けてDBをいじる。

##DB作成

```shell:login_mysql
#rootユーザで乗り込む
mysql -u root -p
```

```sql:
#db作成(名前は任意でOK）
create database wordpressdb;
#ユーザー作成と権限設定と設定反映
create user wpadmin@localhost identified by 'StrongP@432#';
grant all on wordpressdb.* to wpadmin@localhost;
flush privileges;
quit
```
##wordpressのインストール

```shell:install_wordpress
#wordpress日本語版公式サイトからダウンロード
wget https://ja.wordpress.org/latest-ja.tar.gz
#wordpress用のフォルダー作成(フォルダー名は任意）
mkdir /usr/share/nginx/wp.example.com
#解凍
tar xzf wordpress-5.3.2-ja.tar.gz -C /usr/share/nginx/wp.example.com/ --strip-components=1
#設定ファイルをコピー
cp /usr/share/nginx/wp.example.com/wp-config-sample.php /usr/share/nginx/wp.example.com/wp-config.php
#設定ファイルを開く
vi /usr/share/nginx/wp.example.com/wp-config.php
```
```php:wp-config.php
/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'wpadmin' );

/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', 'StrongP@432#' );

/** MySQL のホスト名 */
define( 'DB_HOST', 'localhost' );

/** データベースのテーブルを作成する際のデータベースの文字セット */
define( 'DB_CHARSET', 'utf8' );

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define( 'DB_COLLATE', '' );

```
で、いったん保存。
認証ユニークキーを取得する。

```shell:getkey
curl -s https://api.wordpress.org/secret-key/1.1/salt/
define('AUTH_KEY',         'hogehoge');
define('SECURE_AUTH_KEY',  'hogehogehogehoge');
define('LOGGED_IN_KEY',    'hgoehogheohgoehgoehoge');
define('NONCE_KEY',        'hogehoghoehgoehgoehoehgoehoge');
define('AUTH_SALT',        'hogehogehogehogehogehogheogehoge');
define('SECURE_AUTH_SALT', 'hogehogehogheogheohgoehgoehgoehogheogho');
define('LOGGED_IN_SALT',   'hogehogehogheogheohgoehgoehgoehoghe');
define('NONCE_SALT',       'hogehogehogheogheohgoehgoehoge');
```
帰ってきた内容をwp-config.phpにコピペ
次はnginxの設定ファイル作成。

##Nginx設定

```shell:nginx_setting
vi /etc/nginx/conf.d/example.conf
```

```shell:example.conf
server {
    listen       80 default_server;
    server_name  example.com;
    root         /usr/share/nginx/example.com;
    
    access_log /var/log/nginx/access_example.com.log;
    error_log /var/log/nginx/error_example.com.log;

    index   index.php;

    location / {
        try_files    $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_index index.php;
    }
    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}
``` 
作り終わったら、ファイル所有者を変更。

```shell:chwon
chown -R nginx:nginx /usr/share/nginx/example.com/
```
Nginxを再起動。

```shell:restart
systemctl restart nginx
```
問題なければサーバーのブラウザのIPアドレスを指定すると
wordpressの初期設定画面が表示されるので、あとは画面の表示に従って設定すればOK。
次はwordpressのセキュリティ周りの設定がないか気になるから調べよ。

今回はここまで。
初めての記事を書いたけど、書きなれてないせいか時間がかかるなぁ。。


##参考サイト
https://kifarunix.com/install-lemp-stack-on-centos-8/
https://kifarunix.com/install-wordpress-with-nginx-and-mysql-8-on-centos-8/