【AWS】VPC内にLAMP環境を構築し、phpMyAdminとFTPを使えるようにする

AWS初心者が表題の件にチャレンジした際のメモです。

AWSで「LAMP環境を構築する」、「VPCを作成する」、「開発環境を整える」といった単体のチュートリアルは
ネットに多数落ちているのですが、実際はそれら全てを組み合わせて環境構築する必要があります。

それら全てを通しでやった際にハマったところ、よくわからなかった所、未だにわからない所（笑）
をせっかくなので書いておきます。
（初心者ゆえに誤った部分があるかもなので、その場合はご指摘ください。）


#目次
1. VPCを作成する
2. LAMP環境を構築する
3. 簡易な開発環境を整える
   - phpMyAdminのインストール
   - FTPのインストール
   
<br>
#1.VPCを作成する
以下のような構成でネットワークを作成します
![aws-vpc.jpg](https://qiita-image-store.s3.amazonaws.com/0/69560/002bdd03-e9cb-2f6c-6cd1-c601327157fa.jpeg)

参考にさせて頂いたサイト
[「AWS体験ハンズオン ～セキュア&スケーラブルウェブサービス構築～」に参加してきました](http://akiyoko.hatenablog.jp/entry/2015/06/04/232220)

非常に丁寧に解説されているので、基本このサイト通りでまず大丈夫かと思います。
私はヘルスチェックの部分でハマったのですが、凡ミスでした。（＊以下参照）
[【AWS】【ELB】AWS初心者がELBのヘルスチェックではまったら](http://qiita.com/daikiichikawa/items/565e6a40bcbf6a32e397)


#2.LAMP環境を構築する
**上記ですでにAMIからEC2インスタンスを複製してしまっていましたが、まずメイン（？）のEC2インスタンス内で
    - LAMP環境
    - phpMyAdmin, FTP
を構築、インストールした後で複製しないといけませんでした。**


以下、公式サイト通りやれば問題ないかと。
[チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-LAMP.html)
>＊Apache、MySQL、PHPのReleaseバージョンは逐次チェック
[Apacheバージョン確認](http://httpd.apache.org/download.cgi)
[MySqlバージョン確認](https://dev.mysql.com/downloads/mysql/)
[PHPバージョン確認](http://php.net/releases/)

<br>

#3.簡易な開発環境を整える

###phpMyAdminのインストール
まずは[このページ](http://aws-infomation-agency.com/?m=201503)を参考にさせて頂いたのですが僕の環境ではうまくいかず、以下のページを参考にさせて頂きました。
[AWSでphpmyadminインストールする方法](http://www.logw.jp/server/6343.html)
[Amazon EC2 (Amazon Linux) での phpMyAdmin インストールと設定](http://blog.genies.jp/2011/08/amazon-ec2-amazon-linux-phpmyadmin.html)

標準のリポジトリのままではyumを使ってphpMyAdminがインストールできないので、RPMForgeのリポジトリを導入する。
>RPMForge(現在はRepoforgeに改名しているようです)は「サードパーティーレポジトリ」と呼ばれているもので、
CentOSが標準で用意している以外のサードパーティが作成したパッケージを「yum」でインストールできるようにする為のもの

最新のバージョンは[ここ](http://pkgs.repoforge.org/rpmforge-release/)で確認


で、以下のコマンドを実行するところでハマりました。

```unix:
#sudo yum -y --enablerepo=rpmforge install phpMyAdmin
```

なぜか"phpMyAdmin not found"的なエラーが出てしまう。
コマンドを以下に変更したら出来ました。

```unix:
#sudo yum -y --enablerepo=epel install phpMyAdmin
```

rpmforgeをepelに変更したら出来ました。
    
- [CentOS7 サードパーティーリポジトリの追加](http://www.server-memo.net/centos-settings/centos7/add-repo.html)

上記のページを見るとEPELもRepoforgeと同じサードパーティーレポジトリらしいのですが、EPELはインストールしていないので、Amazon LinuxにはデフォルトでEPELが入っているってことなんだろうか、、つまりRepoforgeは結局使えてないってこと？
ここは気持ち悪いまま。

次にphpMyAdmin.confをいじって設定を変更します。
場所は"/etc/httpd/conf.d/phpMyAdmin.conf"にあります。以下のサイトを参考にさせて頂きました。
[AWSにApache+PHP+MySQLとphpMyAdmin,vsftpdを導入する手順](http://wp.yat-net.com/?p=3662)

ここでまたハマりました。*http://{Elastic IP}/phpMyAdmin* でアクセスしようとすると403のエラーが返ってくるのです。
結果的には以下のように.confファイルを書き換えて解決しました。

```unix:phpMyAdmin.conf
<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       # Require ip 127.0.0.1
       Require all granted
       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
     Order allow, deny
     Allow from 自分のマシンのIP
     # Allow from ::1
   </IfModule>

{省略}

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       # Require ip 127.0.0.1
       Require all granted
       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

     Order allow, deny
     Allow from 自分のマシンのIP
     #Allow from ::1
   </IfModule>
</Directory>
</Directory>
```


ただ、ここもセキュリティ上、"Require all granted" しちゃっていいのかどうかわかりません、、
じゃないとアクセスできなかったので、、誰か詳しいかた教えてくださいお願いします。

次にphpMyAdminがRDSインスタンスを参照できるように、config.inc.phpというファイルで設定を変更します。
このファイルがあるディレクトリもチュートリアルによってまちまち？で不安です笑
基本的には *"/var/www/html/tools"* とか *"/usr/share/phpmyadmin"* らしいのですが、私の場合は
なぜか２つありました。
*"/etc/phpMyAdmin"* と *"/usr/share/phpMyAdmin/setup/frames"* です。

なぜなんだ、、と思いつつ、後者は記述内容があきらかに違ったため前者ディレクトリ内のconfig.inc.phpを以下のように編集。

```unix:phpMyAdmin.conf
$cfg['Servers'][$i]['host'] = 'RDSのエンドポイント';
```

また、blowfishの文字列も記入するそう。(ただ、私の場合すでに文字列が記入されており、そのままにしました。)

```unix:phpMyAdmin.conf
$cfg['blowfish_secret'] = 'ランダムな文字列';
```

以上でphpMyAdminにログインできました！


###FTPのインストール

こちらvsftpdというFTPを使えるようにしてくれるパッケージをインストールします。
以下を参照させて頂きました。
[AWSにApache+PHP+MySQLとphpMyAdmin,vsftpdを導入する手順](http://wp.yat-net.com/?p=3662)

設定ファイルは以下の場所に無事ありました。
*"/etc/vsftpd/vsftpd.conf"*

このvsftpd.confを、上記のページを参考に修正すればいけるはず。
ない項目もあるので、ないものは適宜追加してください。


と、だいぶ粗めですがこんなかんじでひとまず、簡易な開発（本番も？）環境ができました。