EC2にLAMPサーバを構築してをwordpressを入れる

## はじめに
* 任意で書いてもらうところは[]で示しています。[]は書かないでください。
* EC2のインスタンスの生成が終わったものとして進めます。

### rootユーザになる。

```
$ sudo su -
```

### yumをアップデートする

```
$ yum update
```

### PHPをインストール
デフォルトのリポジトリだと5系のphpしかないため7系のPHPが入っているAmazon Linux Extrasをインストールします。

* Amazon Linux Extrasをインストールする 

```
$ amazon-linux-extras install
```

* PHPをインストール

```
$ amazon-linux-extras install php7.3
```

### Apacheのインストール及び自動起動設定
webサーバであるApacheをインストールします。

* Apacheをインストールする 

```
$ yum install httpd
```

* Apacheウェブサーバを起動 

```
$ systemctl start httpd
```

* Apacheの自動起動設定

```
$ systemctl enable httpd
```

### mysqlをインストール
8系を使ってしまうとPHPのmysqlの接続ライブラリが未対応であるログイン認証方式の`caching_sha2_password`を使用してしまうので5系のmysqlを使用します。

* mysql8.0のリポジトリのインストール

```
$ yum install http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
```

* mysql5.7のリポジトリを使えるようにする

```
$ yum-config-manager --disable mysql80-community //mysql8.0のリポジトリを無効化 
$ yum-config-manager --enable mysql57-community //mysql5.7のリポジトリを有効化 
$ yum install mysql mysql-server  //mysqlサーバとクライアントをインストール
```

### wordpressのDBとユーザを作成
DB作成と、DBに対するユーザを作成していきます。

* mysqlを起動する

```
$ systemctl start mysqld
```

* logにrootのパスワードが出力されるので確認する 

```
$ cat /var/log/mysqld.log | grep "temporary password" 
2019-05-07T09:10:45.281573Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: [your password] 
```

* mysqlにログイン

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

* パスワードを再設定する

```
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘[new password]’;
```

* wordpressのデータベースを作成 

```
CREATE DATABASE [DB_NAME];
```

* データベースののユーザを作成

```
CREATE USER ‘[user_name]’@‘localhost’ identified by ‘[new_password]’;
``` 

* 作成したユーザにのDBの権限を与える 

```
GRANT ALL ON [db_name].* TO ‘[user_name]’@‘localhost’;
```

* mysqlからログアウトする

```
exit;
```

### wordpressをインストールする
wgetコマンドをつかってwordpressのサイトからインストールしていきます。

* 公開ディレクトリに移動してwordpressをインストールする

```
$ cd /var/www/html 
$ wget http://ja.wordpress.org/latest-ja.zip 
```

* latest-ja.zipを解凍する 

```
$ unzip latest-ja.zip
```

* latest-ja.zipを削除 

```
$ rm latest-ja.zip
```

* wordpressディレクトリの中のファイルをhtmlディレクトリに移動する

```
$ cd /var/www/html/wordpress 
$ mv * .. 
```

* htmlディレクトリのユーザとグループををapacheに変更する 

```
$ chown -R apache:apache /var/www/html
```

### wordpressの設定ファイルを編集する
wp-config.phpを編集します。設定を間違えると、「データベース接続確立エラー」が出るので気をつけてください。

* コピーをとってから編集モードにする

```
$ cp wp-config-sample.php wp-config.php 
$ vi wp-config.php 
```

```wp-config.php
<?php
/**
 * WordPress の基本設定
 *
 * このファイルは、インストール時に wp-config.php 作成ウィザードが利用します。
 * ウィザードを介さずにこのファイルを "wp-config.php" という名前でコピーして
 * 直接編集して値を入力してもかまいません。
 *
 * このファイルは、以下の設定を含みます。
 *
 * * MySQL 設定
 * * 秘密鍵
 * * データベーステーブル接頭辞
 * * ABSPATH
 *
 * @link http://wpdocs.osdn.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86
 *
 * @package WordPress
 */


// 注意:
// Windows の "メモ帳" でこのファイルを編集しないでください !
// 問題なく使えるテキストエディタ
// (http://wpdocs.osdn.jp/%E7%94%A8%E8%AA%9E%E9%9B%86#.E3.83.86.E3.82.AD.E3.82.B9.E3.83.88.E3.82.A8.E3.83.87.E3.82.A3.E3.82.BF 参照)
// を使用し、必ず UTF-8 の BOM なし (UTF-8N) で保存してください。


// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', '[db_name]');


/** MySQL データベースのユーザー名 */
define('DB_USER', '[db_user]');


/** MySQL データベースのパスワード */
define('DB_PASSWORD', '[user_password]');


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

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


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


/**#@+
 * 認証用ユニークキー
 *
 * それぞれを異なるユニーク (一意) な文字列に変更してください。
 * {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で自動生成することもできます。
 * 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユーザーを強制的に再ログインさせることになります。
 *
 * @since 2.6.0
 */


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]');

/**#@-*/


/**
 * WordPress データベーステーブルの接頭辞
 *
 * それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
 * インストールすることができます。半角英数字と下線のみを使用してください。
 */
$table_prefix = 'wp_';


/**
 * 開発者へ: WordPress デバッグモード
 *
 * この値を true にすると、開発中に注意 (notice) を表示します。
 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
 *
 * その他のデバッグに利用できる定数については Codex をご覧ください。
 *
 * @link http://wpdocs.osdn.jp/WordPress%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0
 */
define('WP_DEBUG', false);


/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */


/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');


/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
```

1. MySQLで設定したDBの名前、ユーザ名、パスワードを書いていきます。


```
/** WordPress のためのデータベース名 */
define('DB_NAME', '[db_name]');

/** MySQL データベースのユーザー名 */
define('DB_USER', '[user_name]');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', '[your_password]');

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

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

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

2.ユニークキーを書いていきます。[ユニークキー生成サイト](https://api.wordpress.org/secret-key/1.1/salt/)のをコピーして貼り付けてください。

```
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]');
```

### wordpressの管理画面にアクセス
インスタンスのIPアドレスにアクセスして画面の通りに設定を行い終了です。お疲れ様でした。