AWS EC2 RDS LAMPの開発環境構築

# :sunny: LAMP環境の作成 :sunny:
## ・前提条件
　　起動したEC2インスタンスにSSH接続できていること
## ・ルートユーザーの作成とパスワードの設定
```shell-session
#ルートへログイン
[ec2-user@ip-***-***-***-*** ~]$ sudo -i
# パスワードの設定
[root@ip-***-***-***-*** ~]$ passwd
 Changing password for user root.
 New password: （パスワード入力）
 Retype new password: （もう一度入力） 
 passwd: all authentication tokens updated successfully.
[root@ip-***-***-***-*** ~]$ 
```
　successfullyが出力されたらパスワードが正しく変更されています。

## ・apacheのインストール
### 　インストール
```shell-session
[root@ip-***-***-***-*** ~]$ yum install -y httpd24
```
### 　自動起動設定
```shell-session
[root@ip-***-***-***-*** ~]$ chkconfig httpd on
```
### 　日本語化とタイムゾーン[東京]の設定
```shell-session
# 言語設定を日本語に変更
[root@ip-***-***-***-*** ~]$ vim /etc/sysconfig/i18n
 LANG=ja_JP.UTF-8
# タイムゾーンを東京に変更
[root@ip-***-***-***-*** ~]$ echo -e 'ZONE="Asia/Tokyo"\nUTC=false' | sudo tee /etc/sysconfig/clock
[root@ip-***-***-***-*** ~]$ cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# 結果確認
[root@ip-***-***-***-*** ~]$ date
```
## ・PHPのインストール
### 　インストール
```shell-session
[root@ip-***-***-***-*** ~]$ yum install -y php73
# バージョン確認
[root@ip-***-***-***-*** ~]$ php -v
   PHP 7.3.4 (cli) (built: Apr 15 2019 23:45:12) ( NTS )
   Copyright (c) 1997-2018 The PHP Group
   Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
# PDOのインストール
[root@ip-***-***-***-*** ~]$  yum install -y php73-pdo
[root@ip-***-***-***-*** ~]$  yum install -y php73-mysqlnd
```
### 　タイムゾーン[東京]の設定
```shell-session
[root@ip-***-***-***-*** ~]$ vim /etc/php.ini
# php.ini は内容量が非常に多いため、
# /date.timezone と入力して検索します
   [Date]
   ; Defines the default timezone used by the date functions
   ; http://php.net/date.timezone
   ;date.timezone 
# コメント化されている[;date.timezone]をdate.timezone = 'Asia/Tokyo'に変更します
   [Date]
   ; Defines the default timezone used by the date functions
   ; http://php.net/date.timezone
   date.timezone = 'Asia/Tokyo'
```
### 　.htaccessの有効化
```shell-session
[root@ip-***-***-***-*** ~]$　vim -r /etc/httpd/conf/httpd.conf
# /www\/html と入力して検索します
   DocumentRoot "/var/www/html"
   <Directory "/var/www/html">
       AllowOverride None
# AllowOverride None を AllowOverride Allに変更します
   DocumentRoot "/var/www/html"
   <Directory "/var/www/html">
       AllowOverride All
```
   
## ・MySQLのインストール

### 　インストール
```shell-session
[root@ip-***-***-***-*** ~]$ yum install mysql
# DBサーバーに接続
[root@ip-***-***-***-*** ~]$ mysql -h <RDSインスタンスのエンドポイント> -u username -p
...下記省略...
```
## ・phpMyAdminをインストール
### 　インストール
```shell-session
[root@ip-***-***-***-*** ~]$ yum --enablerepo=epel install -y phpMyAdmin
```
### 　接続設定[DB接続]
```shell-session
[root@ip-***-***-***-*** ~]$ vi etc/phpMyAdmin/config.inc.php
# 設定の確認
$cfg['Servers'][$i]['host'] = 'localhost';
# ホストの指定
$cfg['Servers'][$i]['host'] = 'DBサーバーのIP/エンドポイント';
```
### 　接続設定[接続許可]
```shell-session
# 接続可能なipアドレスを指定します
# 今回は誰でもアクセスできるように指定しています
[root@ip-***-***-***-*** ~]$ vim　/etc/httpd/conf.d/phpMyAdmin.conf
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>
# Require ip 127.0.0.1を#でコメント化し
# Require all grantedを追記します
     <RequireAny>
       #Require ip 127.0.0.1
       Require all granted
       Require ip ::1
     </RequireAny>
```
### 　フォルダの参照権限を追加
```shell-session
# 読み取りと実行を許可
[root@ip-***-***-***-*** ~]$ chmod o+xr /var/www/html
```
## ・設定の確認
### 　phpのデフォルトディレクトリの確認
```shell-session
[root@ip-***-***-***-*** ~]$ ls -ld --context /var/www/html
   drwxrw-r-x ec2-user root ?                                /var/www/html

```
### 　SELinuxの状態確認
```shell-session
[root@ip-***-***-***-*** ~]$ getenforce
Disabled
```
　Enforcingと表示される場合、SELinuxは有効になっている状態です
　その場合は以下の設定を行います。

```shell-session

[root@ip-***-***-***-*** ~]$ vi /etc/selinux/config
# enforcing から disabledに変更します
SELINUX=disabled
```
　AWSのEC2コンソールからサーバーを再起動し、再確認してください。

```shell-session
[root@ip-***-***-***-*** ~]$ getenforce
Disabled
```
　Disabledと表示されれば、SELinuxは無効に変更されています。

## ・設定適用のため、apache再起動
### 　再起動コマンドを実行
```shell-session
[root@ip-***-***-***-*** ~]$ service httpd start
   Starting httpd: AH00557: httpd: apr_sockaddr_info_get() failed for ip-XXX-XXX-XXX-XXX
   AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
                                                           [  OK  ]
```
　http://{パブリックIP}/phpMyAdmin/
　にアクセスし、テストページが表示されることを確認してください。