AWSのEC2に基本的なLAMP環境を作ってみる(2)

>AWSのEC2に基本的なLAMP環境を作ってみる(1)は、執筆中です。
>AWSのEC2でWEBサーバ用インスタンスを立ち上げるといった内容になる予定です。

#SSHで接続する
起動したEC2インスタンスにSSH接続してみました

```
ssh -i ~/.ssh/(任意の名前).pem ec2-user@(EC2インスタンスのPublicIP)
```

すると、下記のように聞かれたので、`yes`と返答

```
The authenticity of host 'XXX.XXX.XXX.XXX (EC2インスタンスのPublicIP)' can't be established.
RSA key fingerprint is e1:5f:ac:bd:6d:ed:88:e0:9a:f7:a5:8b:e7:32:6a:05.
Are you sure you want to continue connecting (yes/no)? 
```

SSH接続できた!

```

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/
1 package(s) needed for security, out of 14 available
Run "sudo yum update" to apply all updates.
```
色々インストールするため、ルートになります

```
$ sudo -i
```
ec2-userからrootになりました!

#apacheをインストール/起動する

WEBサーバとして振る舞うため、
yumを使ってapacheを入れました (今回はapacheのバージョン2.4)

```
# yum install -y httpd24
```
インストールが終わったら、apacheの自動起動設定をしました

```
# chkconfig httpd on
```

「言語は日本語を使いますよー」と設定しておきます
`en_US.UTF-8` となっているところを下記のように書き換えて保存しました

```
# vim /etc/sysconfig/i18n 
```
```
LANG=ja_JP.UTF-8
```

「時刻(タイムゾーン)は東京にしますよー」と設定します
設定というよりはファイルを上書きする方法のようです

```
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
```

で、apacheを起動しました

```
# 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  ]
```

起動できてるかどうかステータスを見てみました

```
# service httpd status

httpd (pid  2371) is running...

```
`running` なのでOKですね!

`http://XXX.XXX.XXX.XXX(GlobalIP)` にブラウザからアクセスすると、apacheのページが表示されました!
これでちゃんとWEBサーバとして振る舞っていることを確認できました

#PHPをインストールする

yumでPHPを入れました (今回はPHP5.5を入れてみました)

```
# yum install -y php55
```

入ったかどうか、phpコマンドでバージョン確認をすることで確かめました

```
# php -v

PHP 5.5.22 (cli) (built: Mar  5 2015 23:04:39) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
```

ちゃんと `PHP5.5.22` が入ったようですね!

次に、PHPのタイムゾーンを日本にしておきました
`php.ini` を触ります

```
# 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'
```

#MySQLをインストールする

AWSにはRDSというデータベースサービスがあるようですが、
今回は同じEC2インスタンスにMySQLを入れてしまいます

こちらもyumを使いました

```
# yum install -y mysql-server
```

インストールが終わったら、mysqlの自動起動設定をしました

```
# chkconfig mysqld on
```

で、mysqlを起動しました (初期化処理が走るようです)

```
# service mysqld start

Initializing MySQL database:
(以下略...)
Please report any problems at http://bugs.mysql.com/

                                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
```

起動できてるかどうかステータスを見てみました

```
# service mysqld status

mysqld (pid  2726) is running...
```
OKのようです!

次に、MySQLのパスワードを整えておきました
MySQLにログインして、パスワードを変更するクエリを発行するという流れです

下記のようにMySQLのrootユーザでログインします

```
# mysql -uroot
```

クエリは下記のように発行しました
'pass'の部分は本来はちゃんとしたパスワードを入れます
(MySQLの場合は、最後のセミコロンを忘れないようにねっ)

```
mysql> set password for root@localhost=password('pass');

Query OK, 0 rows affected (0.00 sec)
```

MySQLからログアウトします
(exitはセミコロン不要)

```
mysql> exit

Bye
```

次に、mysql_secure_installation というセキュリティ設定をしました
以下を実行します

```
# /usr/bin/mysql_secure_installation
```

対話式で聞かれるので、以下のように返答しました

```
Enter current password for root (enter for none): (先ほどのMySQL:rootユーザのパスワード)

Change the root password? [Y/n] n

Remove anonymous users? [Y/n] Y

Disallow root login remotely? [Y/n] Y

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y


All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!
```

設定を変更したので、一旦MySQLを再起動しました

```
# service mysqld restart
```

#phpMyAdminをインストールする

MySQLを操作するには、ブラウザベースのphpMyAdminが便利なので
インストールしました

yumから入れますが、epelレポジトリを介するようです

```
# yum --enablerepo=epel install -y phpMyAdmin
```

phpMyAdminの

```
# 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>
```

`# service httpd restart`(apacheを再起動) してから
`http://(グローバルIP)/phpMyAdmin`にブラウザでアクセスすると、
phpMyAdminのログイン画面が現れます

まず、Languageを日本語に変更しました

ログインユーザは、MySQLのrootユーザで、
パスワードは、先ほどMySQLで設定したパスワードを使います

ログインが正常にできれば、とりあえずOKですね!

#Gitをインストールする
今回、Gitを使用したいと思ったので
Gitをインストールしました

これもまたyumで入れました

```
# yum install -y git
```

操作はこれだけでした
確認としてバージョンを見ます

```
# git --version

git version 2.1.0
```

バージョン確認できたのでOKですね!