初心者がWordPress環境構築してみた（単一構成）

### 事前準備
EC2インスタンスを作成

### SSH接続

~~~bash
$ssh -i .ssh/key.pem ec2-user@public_ip
~~~

※key.pemはssh_key 

※public_ipはインスタンスのpublic_ip



### Apacheのインストール

* Apachのインストール・起動

~~~bash
$ sudo yum install -y httpd
$ sudo systemctl start httpd
~~~


## MySQL5.7のインストール

MySQL Yum RepositoryからMySQL5.7をインストールする。



* Yumリポジトリの情報のインストール

~~~bash
$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
~~~

* MySQL8.0リポジトリを無効にし、MySQL5.7リポジトリを有効にする

~~~bash
$ sudo yum-config-manager --disable mysql80-community
$ sudo yum-config-manager --enable mysql57-community
#適用されているか確認
$ cat /etc/yum.repos.d/mysql-community.repo
~~~

* MySQLのインストール・起動

~~~bash
$ sudo yum install -y mysql-community-server
$ sudo systemctl start mysqld
~~~

* MySQLの初期パスワードの確認

~~~bash
$ sudo cat /var/log/mysqld.log | grep root@localhost
[Note] A temporary password is generated for root@localhost: 12桁の文字列
~~~

* MySQLのパスワード変更

~~~bash
$ mysqladmin -uroot -p password
Enter password:古いパスワード
New password:新しいパスワード
Confirm new password:新しいパスワード
#Warnigがでても変更はできています
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
~~~

※[Passwordのポリシーについて](https://blog.pinkumohikan.com/entry/workaround_for_mysql_password_policy)

* WordPress用のDB・ユーザーを作成する

~~~mysql
$ mysql -uroot -p
Enter password:設定したパスワード
#WordPress用のユーザー作成
mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpressユーザーのパスワード';
#WordPress用のDB作成
mysql> CREATE DATABASE `wordpress`;
#DB権限を作成したユーザーに付与
mysql> GRANT ALL PRIVILEGES ON `wordpress`.* TO "wordpress"@"localhost";
#設定反映
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
~~~



## PHP7.4のインストール

`sudo yum install php`を実行すると、PHP5.4がインストールされてしまします。

Amazon LinuxのリポジトリにPHP5.4しかないためです。

[amazon-linux-extras](https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-install-extras-library-software/)を使用することで解決できます。



* amazon-linux-extrasが存在するかの確認

~~~bash
$ which amazon-linux-extras
/usr/bin/amazon-linux-extras
~~~

* amazon-linux-extrasがインストールされていない場合は、インストールを行う

~~~bash
$ sudo yum install -y amazon-linux-extras
$ sudo yum update -y
~~~

* amazon-linux-extrasからPHP7.4をインストールする

~~~bash
$ sudo amazon-linux-extras install -y php7.4
$ sudo yum clean metadata
#追加でパッケージをインストール（必要なければ不要です。）
$ sudo yum install -y php-mbstring php-xml
$ sudo yum update -y
~~~



## WordPressのインストール

* WordPressをインストール

```bash
#インストールしたいディレクトリに移動
$ cd ~
$ wget http://ja.wordpress.org/latest-ja.zip
$ unzip latest-ja.zip
```

* [設定ファイルの編集](https://ja.wordpress.org/support/article/editing-wp-config-php/)を行います。

~~~bash
#サンプルをコピー
$ cp wordpress/wp-config-sample.php wordpress/wp-config.php
$ sudo vim wordpress/wp-config.php

#DBの設定値を変更する。
define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );

#セキュリティーキーの変更する。
define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );
~~~

※セキュリティキーは[オンラインジェネレータ](https://api.wordpress.org/secret-key/1.1/salt/) を使用してください。



* Apachの設定

Amazon Linuxの場合、 `.htaccess` がディフォルトで無効となっているため設定を行う必要がある。

実際の親ファイル`/etc/httpd/conf/httpd.conf`ではなく`conf.d`に設定を記載する。

~~~bash
$ sudo vim /etc/httpd/conf.d/file_name.conf

#「sample」にはアクセスしたいURIを指定
#「/home/ec2-user/wordpress/」にはインストールしたディレクトリを指定する
Alias /sample/ /home/ec2-user/wordpress/
<Directory "/home/ec2-user/wordpress">
  AllowOverride All
  Options None
  Require all granted
  #ipを制限する場合に記載
  Require ip ××××××××××××
</Directory>

#Apache文法の確認
$ sudo httpd -t
Syntax OK
$ sudo systemctl restart httpd
~~~



* `http://ホスト/sample/`にアクセスしてWordPressの初期設定画面が開ければ成功です！

  

* アクセスした際に403エラーとなる場合は権限設定を行う。

~~~bash
#実行権限の付与
#「/home/ec2-user」にはインストールしたディレクトリを指定する
$ sudo chmod o+x /home/ec2-user
~~~

間違っている点があればお教えください！

## 続き
[冗長化構成](https://qiita.com/ygikrps_/items/715017e93cad37251b75)

## 参考

[Amazon Linux による WordPress ブログのホスティング](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/hosting-wordpress.html)

[CentOS7にyumでMySQL5.7最新版をインストールする](https://tkn4416.hatenablog.com/entry/2018/03/14/075533)

[AWS EC2(Amazon Linux)にPHP7.4をインストール](https://qiita.com/nagahama/items/2fdc820791bee5d564ca)