WordPressセットアップ

#はじめに
前回はDockerを使ってWordPressをセットアップしました。
今回はDockerは使わずにWordPressをセットアップしますが、フリードメイン取得も実施したり、またIPアドレス変更によるデータベース更新もしましたのであわせて載せておきます。

〇制作時の参考URL(Apache,MariaDB,WordPress)
https://qiita.com/cherubim1111/items/1e1f227a0a495bc14a11

〇制作時の参考URL(PHP)
https://qiita.com/c3drive/items/8d2e7dfaad895624bbc4
※Wordpressが推奨するPHPのバージョンが7.4であるため、記載のコマンドを7.4に置き換え

〇エラーの発生時の参考URL
https://money-affairs.com/error-extension-mysqli/
※解決策AとBの記載がありますがAだけで解決しました。

〇IPアドレス変更によるデータベース更新とWordPressでもIPアドレス更新の参考URL
https://qiita.com/NT1123/items/9b8e11227e88edb73bba


#作業環境

```
・AWS Amazon Linuxサーバ
　Amazon Linux release 2 (Karoo)
・Apache2.4.48
・PHP 7.4.22
・MariaDB 5.5
・WordPress 5.1
```

#作業結果
![cloudmaster2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1949705/0bed8a05-215e-ed8d-870b-834330d01326.png)

当初はこちらで記載しておこうかと考えたのですがQiitaのほうが便利そうなので方針変更。

#作業工程
・Apacheのインストール、Apacheの起動
・MariaDBのインストール、MariaDBの起動、WordPress用データベースとユーザの作成
・PHPのインストール
・WordPressのインストール
・ブラウザでwordpressのセットアップするもエラーが発生
  →MySQLi機能拡張を有効にし、セットアップ完了
・フリードメイン取得、AWSサーバのIPアドレスと紐づけ
・IPアドレス変更によるデータベース更新とWordPressでもIPアドレス更新

#Apacheのインストール、Apacheの起動
・Apacheのインストール

```
yum -y install httpd
```

・インストール後のバージョン確認

```
httpd -v
Server version: Apache/2.4.48 ()
Server built:   Jun 25 2021 18:53:37
```

・Apacheの起動

```
systemctl start httpd
```

・Apacheの状態確認

```
systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2021-08-28 11:08:15 UTC; 1 day 11h ago
     Docs: man:httpd.service(8)
  Process: 7306 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
以下略
```

#MariaDBのインストール、MariaDBの起動、WordPress用データベースとユーザの作成

・MariaDBのインストール

```
yum -y install mariadb-server mariadb-client
```

・MariaDBの起動

```
systemctl start mariadb
```

・MariaDBの状態確認

```
systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-08-29 22:40:26 UTC; 18min ago
  Process: 11396 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 11361 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
以下略
```

・MariaDBのバージョン確認

```
mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 21
Server version: 5.5.68-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)]>
```

・WordPress用データベースとユーザの作成

xxxxxは任意のユーザ名、yyyyyは任意のパスワード


```
mysql
MariaDB [(none)]>create database wordpress default character set utf8;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON wordpress.* TO xxxxx@localhost IDENTIFIED BY 'yyyyy';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
```

#PHPのインストール

```
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php74
yum install -y php74 php74-php php74-php-fpm php74-php-mysqlnd php74-php-mbstring php74-php-gd
ln -s /usr/bin/php74 /usr/bin/php

php -v
PHP 7.4.22 (cli) (built: Jul 27 2021 18:08:31) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

```
index.phpに以下を記載して、ブラウザにアクセスするとテストページが表示されました。

<?php phpinfo(); ?>

```
cd /var/www/html/
vi index.php

```
「http://VMのIPアドレス/index.php」

![blog2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1949705/6636d75a-e62e-a27a-c497-71b580b3d177.jpeg)

#WordPressのインストール

```
yum -y install wget
cd /var/www/html
wget https://ja.wordpress.org/latest-ja.tar.gz
tar xvf latest-ja.tar.gz
chown -R apache:apache .
```

#ブラウザでwordpressのセットアップするもエラーが発生

プラウザでを以下URLを叩くとWordPressの画面が表示され、セットアップ時にDBの接続情報を入力して進めようとしたがエラーが出てセットアップが中断

「http://VMのIPアドレス/wordpress」

〇発生したエラー
「お使いのサーバーのPHPではWordPressに必要なMySQL拡張を利用できないようです。」

〇エラーの対処
MySQLi機能拡張を有効にし、ブラウザを再読み込みをするとエラーは解消されてセットアップ完了

php.ni内のMySQLi機能拡張の「extension=mysqli」を有効にする
; extension=mysqliの「;」を外す

```
cd /etc/opt/remi/php74/
vi php.ni
```

#フリードメイン取得、AWSサーバのIPアドレスと紐づけ

フリードメインはfreenomで取得しました。
取得時に利用できるドメインかを検索した後にドメインを含めて再度検索すると上手くいきました。

そして取得したフリードメインはこちら。

![cloudmaster3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1949705/96e45deb-28bf-4170-6af7-b67a9c082102.png)

設定はManagement ToolからNameserversを選択し、表示される画面でNameserverを最低2つ入力すればOKです。
あとはPCのホストの名前解決とかありますが簡単な作業なので省略します。
遅くても1日も待てばfreenomの処理が完了して、作業結果にあるようにドメイン名でwordpressのサイトが表示できました。

![cloudmaster5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1949705/6817a7bd-fc42-ef6b-66f3-74d359e91372.png)


#IPアドレス変更によるデータベース更新とWordPressでもIPアドレス更新

稼働時間節約のためにこまめにVMを停止しています。
しかし固定IPを設定していないの再起動時はIPアドレスが変更されます。
そのため上記サイトを参考に更新作業を実施しました。
WordPressの更新については管理画面のサイトアドレスを更新すれば良いです。

xxxxx:WordPressで使用しているデータベースのユーザ名
yyyyy:WordPressで使用しているデータベース名
xx.xx.xx.xx:変更前のIPアドレス
yy.yy.yy.yy:変更後のIPアドレス

```
mysql -u xxxxx: -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 27
Server version: 5.5.68-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)]>
MariaDB [(none)]> use yyyyy
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [wordpress]>
MariaDB [wordpress]> elect * from wp_options where option_name = 'siteurl';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'elect * from wp_options where option_name = 'siteurl'' at line 1
MariaDB [wordpress]> select * from wp_options where option_name = 'siteurl';
+-----------+-------------+--------------------------------+----------+
| option_id | option_name | option_value                   | autoload |
+-----------+-------------+--------------------------------+----------+
|         1 | siteurl     | http://xx.xx.xx.xx/wordpress | yes      |
+-----------+-------------+--------------------------------+----------+
1 row in set (0.00 sec)

MariaDB [wordpress]> update wp_options set option_value = 'http://yy.yy.yy.yy/
wordpress' where option_name = 'siteurl';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [wordpress]> select * from wp_options where option_name = 'siteurl';
+-----------+-------------+--------------------------------+----------+
| option_id | option_name | option_value                   | autoload |
+-----------+-------------+--------------------------------+----------+
|         1 | siteurl     | http://yy.yy.yy.yy/wordpress | yes      |
+-----------+-------------+--------------------------------+----------+
1 row in set (0.00 sec)
```