AWS上で構築するRESTfulアプリ勉強会～Web開発ワークショップ～【第1回】の事前準備内容まとめ


本投稿は、2015/1/23に行われた[AWS上で構築するRESTfulアプリ勉強会～Web開発ワークショップ～【第1回】](http://aws-rest-todo.connpass.com/event/10444/)に向けて運営側が行った準備作業に関するまとめです。
当日使用した資料は、加筆（かなり修正しました）して公開しています。
[AWS上で構築するRESTfulアプリ勉強会～Web開発ワークショップ～【第1回】の当日実施内容まとめ - Qiita](http://qiita.com/k_shimoji/items/d96826702ab6d6b3a1fd)
# AMI作成

## AMIの元にするEC2インスタンス作成

AWS Management Consoleから下記手順で。

### 開始!

InstancesからLaunch Instances をクリック

![Launch_Instance.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/2f1e51cd-25f5-8be8-de1f-c829e5d2419e.png "Launch_Instance.png")

### 元とするAMIを選択

Amazon Linux AMI 2014.09.1 (HVM) - ami-4985b048
を選択。Selectをクリック。

![ec2_step1.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/7511e9c1-3177-bd4b-ed3c-3a1cc802fd3c.png "ec2_step1.png")

### インスタンスタイプを選択

t2.microを選択。Nextをクリック。

![ec2_step2.png]![ec2_step2.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/6a86f13b-cd59-6bdd-da40-64c1f107ef34.png "ec2_step2.png")

### インスタンス詳細設定
下記の通り設定。Nextをクリック。

- Number of instances -  1
- Purchasing option - [ ]Request Spot Instances(チェックしない)
- Network - default
- Subnet	- default
- Auto-assign Public IP - Use subnet setting
- IAM role - None
- Shutdown behavior - Stop	
- Enable termination protection - [x]Protect against accidental termination(チェック入れる)
- Monitoring	- [ ] Enable CloudWatch detailed monitoring(チェックしない)
- Tenancy- Shared tenancy
- Advanced Details - なし

![ec2_step3.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/136b6f65-34ff-f76c-b500-cfcb18eb28f9.png "ec2_step3.png")

### ストレージ設定
General Purpose(SSD)に変更（無料枠）。Nextをクリック。

![ec2_step4.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/152de544-82d6-b047-956e-7dd98a92695d.png "ec2_step4.png")

### タグ設定
Nameのみ設定。適当でよい（例では`study_01_172_31_0_1`)。Nextをクリック。

![ec2_step5.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/d3cb9983-b2c7-5552-30e0-6f2ee84a535d.png "ec2_step5.png")

### セキュリティグループ設定

SSH, HTTPのみ。SourceIPはMyIP（設定時のGlobalIP）に限定。

- SSH - TCP, 22, MyIP
- HTTP - TCP, 22, MyIP

IP確認は下記にアクセスしてもOK。

http://checkip.amazonaws.com/

ここまでで設定終わり。Review and Launchをクリック。
![ec2_step6.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/f15f42d8-bb54-0d98-60cd-09796a9ed296.png "ec2_step6.png")


### 確認画面(Review Instance Launch)

Launchをクリック。

![ec2_step7.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/56ccfb20-85b9-dd02-0eb9-cfc41bbefea0.png "ec2_step7.png")

キーペアを設定。選択or新規作成。Launch Instancesをクリック。

![ec2_step7_create_key.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/b8f7db2e-4f55-97b3-290c-1f3b6a48dc8d.png "ec2_step7_create_key.png")


成功！
![ec2_finish.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/93d99fae-b681-ced8-4001-38b44a2f96b6.png "ec2_finish.png")

View Instancesをクリック。見えた。
![ec2_view.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/392bd184-c89d-9b6a-1741-307af3679945.png "ec2_view.png")

### SSH接続してみる

GlobalIPに対してSSHコマンド実行。

事前に、Privateキーファイルを ~/.sshなどにコピーしておく。

※パーミッションに注意。ログインユーザ以外は読み書き不可にしておく。

```bash
ssh -i ~/.ssh/XXXXXXX.pem ec2-user@XXX.XXX.XXX.XXX
```

OK!

## AMIにプレインストール、設定しておくもの

### Apacheインストール

バージョンは2.4にする。

rootになる。

```bash
sudo -i
```

`yum install -y httpd24`を実行してインストール。

```bash
[root ~]# yum install -y httpd24
読み込んだプラグイン:priorities, update-motd, upgrade-helper
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ httpd24.x86_64 0:2.4.10-1.59.amzn1 を インストール
--> 依存性の処理をしています: httpd24-tools = 2.4.10-1.59.amzn1 のパッケージ: httpd24-2.4.10-1.59.amzn1.x86_64
--> 依存性の処理をしています: /etc/mime.types のパッケージ: httpd24-2.4.10-1.59.amzn1.x86_64
--> 依存性の処理をしています: libaprutil-1.so.0()(64bit) のパッケージ: httpd24-2.4.10-1.59.amzn1.x86_64
--> 依存性の処理をしています: libapr-1.so.0()(64bit) のパッケージ: httpd24-2.4.10-1.59.amzn1.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ apr.x86_64 0:1.5.0-2.11.amzn1 を インストール
---> パッケージ apr-util.x86_64 0:1.4.1-4.14.amzn1 を インストール
---> パッケージ httpd24-tools.x86_64 0:2.4.10-1.59.amzn1 を インストール
---> パッケージ mailcap.noarch 0:2.1.31-2.7.amzn1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=========================================================================================================================================================================================================
 Package                                           アーキテクチャー                           バージョン                                             リポジトリー                                   容量
=========================================================================================================================================================================================================
インストール中:
 httpd24                                           x86_64                                     2.4.10-1.59.amzn1                                      amzn-main                                     1.3 M
依存性関連でのインストールをします:
 apr                                               x86_64                                     1.5.0-2.11.amzn1                                       amzn-main                                     115 k
 apr-util                                          x86_64                                     1.4.1-4.14.amzn1                                       amzn-main                                      87 k
 httpd24-tools                                     x86_64                                     2.4.10-1.59.amzn1                                      amzn-main                                      85 k
 mailcap                                           noarch                                     2.1.31-2.7.amzn1                                       amzn-main                                      27 k

トランザクションの要約
=========================================================================================================================================================================================================
インストール  1 パッケージ (+4 個の依存関係のパッケージ)

総ダウンロード容量: 1.6 M
インストール容量: 4.2 M
Downloading packages:
(1/5): apr-1.5.0-2.11.amzn1.x86_64.rpm                                                                                                                                            | 115 kB     00:00     
(2/5): apr-util-1.4.1-4.14.amzn1.x86_64.rpm                                                                                                                                       |  87 kB     00:00     
(3/5): httpd24-2.4.10-1.59.amzn1.x86_64.rpm                                                                                                                                       | 1.3 MB     00:00     
(4/5): httpd24-tools-2.4.10-1.59.amzn1.x86_64.rpm                                                                                                                                 |  85 kB     00:00     
(5/5): mailcap-2.1.31-2.7.amzn1.noarch.rpm
|  27 kB     00:00
合計 4.3 MB/s | 1.6 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 インストール中 : apr-1.5.0-2.11.amzn1.x86_64 1/5
 インストール中 : apr-util-1.4.1-4.14.amzn1.x86_64 2/5
 インストール中 : httpd24-tools-2.4.10-1.59.amzn1.x86_64 3/5
 インストール中 : mailcap-2.1.31-2.7.amzn1.noarch 4/5
 インストール中 : httpd24-2.4.10-1.59.amzn1.x86_64 5/5
 検証中 : apr-1.5.0-2.11.amzn1.x86_64 1/5
 検証中 : httpd24-tools-2.4.10-1.59.amzn1.x86_64 2/5
 検証中 : apr-util-1.4.1-4.14.amzn1.x86_64 3/5
 検証中 : mailcap-2.1.31-2.7.amzn1.noarch 4/5
 検証中 : httpd24-2.4.10-1.59.amzn1.x86_64 5/5

インストール:
 httpd24.x86_64 0:2.4.10-1.59.amzn1

依存性関連をインストールしました:
 apr.x86_64 0:1.5.0-2.11.amzn1 apr-util.x86_64 0:1.4.1-4.14.amzn1 httpd24-tools.x86_64 0:2.4.10-1.59.amzn1 mailcap.noarch 0:2.1.31-2.7.amzn1

完了しました!
[root ~]#
```

自動起動を設定。

```bash
 chkconfig httpd on
```

再起動は下記コマンド。

```bash
service httpd restart
```

`http://(Global IP)`
にアクセスしてみる。

OK！

![apache.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/464e0d1f-c4ab-46a3-bd2e-f4e85f07277f.png "apache.png")


### PHPインストール

バージョンは5.5にする。

以下rootで。

`yum install -y php55`を実行してインストール。

```bash
[root ~]# yum install -y php55
読み込んだプラグイン:priorities, update-motd, upgrade-helper
amzn-main/latest | 2.1 kB 00:00
amzn-updates/latest | 2.3 kB 00:00
依存性の解決をしています

依存性を解決しました

=========================================================================================================================================================================================================
 Package アーキテクチャー バージョン リポジトリー 容量
=========================================================================================================================================================================================================
インストール中:
 php55 x86_64 5.5.20-2.94.amzn1 amzn-updates 3.0 M
依存性関連でのインストールをします:
 json-c x86_64 0.11-6.8.amzn1 amzn-main 31 k
 libzip x86_64 0.10.1-1.3.amzn1 amzn-main 47 k
 php-pear noarch 1:1.9.5-2.17.amzn1 amzn-main 434 k
 php55-cli x86_64 5.5.20-2.94.amzn1 amzn-updates 4.2 M
 php55-common x86_64 5.5.20-2.94.amzn1 amzn-updates 1.3 M
 php55-pecl-jsonc x86_64 1.3.6-1.12.amzn1 amzn-updates 43 k
 php55-process x86_64 5.5.20-2.94.amzn1 amzn-updates 90 k
 php55-xml x86_64 5.5.20-2.94.amzn1 amzn-updates 329 k

トランザクションの要約
=========================================================================================================================================================================================================
インストール 1 パッケージ (+8 個の依存関係のパッケージ)

総ダウンロード容量: 9.4 M
インストール容量: 30 M
Downloading packages:
(1/9): json-c-0.11-6.8.amzn1.x86_64.rpm | 31 kB 00:00
(2/9): libzip-0.10.1-1.3.amzn1.x86_64.rpm | 47 kB 00:00
(3/9): php-pear-1.9.5-2.17.amzn1.noarch.rpm | 434 kB 00:00
(4/9): php55-5.5.20-2.94.amzn1.x86_64.rpm | 3.0 MB 00:00
(5/9): php55-cli-5.5.20-2.94.amzn1.x86_64.rpm | 4.2 MB 00:00
(6/9): php55-common-5.5.20-2.94.amzn1.x86_64.rpm | 1.3 MB 00:00
(7/9): php55-pecl-jsonc-1.3.6-1.12.amzn1.x86_64.rpm | 43 kB 00:00
(8/9): php55-process-5.5.20-2.94.amzn1.x86_64.rpm | 90 kB 00:00
(9/9): php55-xml-5.5.20-2.94.amzn1.x86_64.rpm | 329 kB 00:00
合計 22 MB/s | 9.4 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 インストール中 : libzip-0.10.1-1.3.amzn1.x86_64 1/9
 インストール中 : json-c-0.11-6.8.amzn1.x86_64 2/9
 インストール中 : php55-xml-5.5.20-2.94.amzn1.x86_64 3/9
 インストール中 : php55-cli-5.5.20-2.94.amzn1.x86_64 4/9
 インストール中 : php55-common-5.5.20-2.94.amzn1.x86_64 5/9
 インストール中 : php55-process-5.5.20-2.94.amzn1.x86_64 6/9
 インストール中 : 1:php-pear-1.9.5-2.17.amzn1.noarch 7/9
 インストール中 : php55-pecl-jsonc-1.3.6-1.12.amzn1.x86_64 8/9
 インストール中 : php55-5.5.20-2.94.amzn1.x86_64 9/9
 検証中 : php55-process-5.5.20-2.94.amzn1.x86_64 1/9
 検証中 : php55-xml-5.5.20-2.94.amzn1.x86_64 2/9
 検証中 : json-c-0.11-6.8.amzn1.x86_64 3/9
 検証中 : 1:php-pear-1.9.5-2.17.amzn1.noarch 4/9
 検証中 : php55-common-5.5.20-2.94.amzn1.x86_64 5/9
 検証中 : php55-pecl-jsonc-1.3.6-1.12.amzn1.x86_64 6/9
 検証中 : libzip-0.10.1-1.3.amzn1.x86_64 7/9
 検証中 : php55-5.5.20-2.94.amzn1.x86_64 8/9
 検証中 : php55-cli-5.5.20-2.94.amzn1.x86_64 9/9

インストール:
 php55.x86_64 0:5.5.20-2.94.amzn1

依存性関連をインストールしました:
 json-c.x86_64 0:0.11-6.8.amzn1 libzip.x86_64 0:0.10.1-1.3.amzn1 php-pear.noarch 1:1.9.5-2.17.amzn1 php55-cli.x86_64 0:5.5.20-2.94.amzn1 php55-common.x86_64 0:5.5.20-2.94.amzn1
 php55-pecl-jsonc.x86_64 0:1.3.6-1.12.amzn1 php55-process.x86_64 0:5.5.20-2.94.amzn1 php55-xml.x86_64 0:5.5.20-2.94.amzn1

完了しました!
[root ~]#
```

バージョン確認

```bash
[root ~]# php -v
PHP 5.5.20 (cli) (built: Dec 29 2014 18:02:29)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
[root ~]#
```

php動作確認

例のアレを作成。(info.php)

```php:/var/www/study/info.php
<?php
phpinfo();
```

`http://(Global IP)/info.php `
にアクセスしてみる。

OK！

![phpinfo.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/1c799842-8dcc-8c40-8524-ef1773dbacf9.png "phpinfo.png")


### MySQLインストール

- 今回は開発用EC2インスタンスにMySQLサーバを入れてしまう。
	- バージョンは5.6にする。
- PHPMyAdminも入れる。
- 追加のPerlモジュールも必要なので入れる。`yum install -y perl-Data-Dumper`

以下rootで。

yumリポジトリを追加。
`yum install -y http://repo.mysql.com/mysql-community-release-el6-4.noarch.rpm`を実行。


```bash
[root ~]# yum install -y http://repo.mysql.com/mysql-community-release-el6-4.noarch.rpm
読み込んだプラグイン:priorities, update-motd, upgrade-helper
mysql-community-release-el6-4.noarch.rpm | 5.0 kB 00:00
/var/tmp/yum-root-EJK5Fo/mysql-community-release-el6-4.noarch.rpm を調べています: mysql-community-release-el6-4.noarch
/var/tmp/yum-root-EJK5Fo/mysql-community-release-el6-4.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
amzn-main/latest | 2.1 kB 00:00
amzn-updates/latest | 2.3 kB 00:00

依存性を解決しました

=========================================================================================================================================================================================================
 Package アーキテクチャー バージョン リポジトリー 容量
=========================================================================================================================================================================================================
インストール中:
 mysql-community-release noarch el6-4 /mysql-community-release-el6-4.noarch 2.5 k

トランザクションの要約
=========================================================================================================================================================================================================
インストール 1 パッケージ

合計容量: 2.5 k
インストール容量: 2.5 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 インストール中 : mysql-community-release-el6-4.noarch 1/1
 検証中 : mysql-community-release-el6-4.noarch 1/1

インストール:
 mysql-community-release.noarch 0:el6-4

完了しました!
[root ~]#
```

`yum install -y mysql-server`を実行してインストール。

```bash
[root ~]# yum install -y mysql-server
読み込んだプラグイン:priorities, update-motd, upgrade-helper
1 packages excluded due to repository priority protections
パッケージ mysql-server は mysql-community-server によって不要になりました。代わりに mysql-community-server-5.6.14-3.el6.x86_64 のインストールを試みています。
依存性の解決をしています

依存性を解決しました

=========================================================================================================================================================================================================
 Package アーキテクチャー バージョン リポジトリー 容量
=========================================================================================================================================================================================================
インストール中:
 mysql-community-server x86_64 5.6.14-3.el6 mysql-community 51 M
依存性関連でのインストールをします:
 mysql-community-client x86_64 5.6.14-3.el6 mysql-community 18 M
 mysql-community-common x86_64 5.6.14-3.el6 mysql-community 296 k
 mysql-community-libs x86_64 5.6.14-3.el6 mysql-community 1.8 M

トランザクションの要約
=========================================================================================================================================================================================================
インストール 1 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 71 M
インストール容量: 321 M
Downloading packages:
警告: /var/cache/yum/x86_64/latest/mysql-community/packages/mysql-community-client-5.6.14-3.el6.x86_64.rpm: V3 DSA/SHA1 Signature、鍵 ID 5072e1f5: NOKEY ] 4.1 MB/s | 12 MB 00:01 ETA
mysql-community-client-5.6.14-3.el6.x86_64.rpm の公開鍵がインストールされていません
(1/4): mysql-community-client-5.6.14-3.el6.x86_64.rpm | 18 MB 00:00
(2/4): mysql-community-common-5.6.14-3.el6.x86_64.rpm | 296 kB 00:00
(3/4): mysql-community-libs-5.6.14-3.el6.x86_64.rpm | 1.8 MB 00:00
(4/4): mysql-community-server-5.6.14-3.el6.x86_64.rpm | 51 MB 00:04
合計 14 MB/s | 71 MB 00:00:05
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql から鍵を取得中です。
Importing GPG key 0x5072E1F5:
 Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>"
 Fingerprint: a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5
 Package : mysql-community-release-el6-4.noarch (@/mysql-community-release-el6-4.noarch)
 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 インストール中 : mysql-community-common-5.6.14-3.el6.x86_64 1/4
 インストール中 : mysql-community-libs-5.6.14-3.el6.x86_64 2/4
 インストール中 : mysql-community-client-5.6.14-3.el6.x86_64 3/4
 インストール中 : mysql-community-server-5.6.14-3.el6.x86_64 4/4
 検証中 : mysql-community-server-5.6.14-3.el6.x86_64 1/4
 検証中 : mysql-community-common-5.6.14-3.el6.x86_64 2/4
 検証中 : mysql-community-libs-5.6.14-3.el6.x86_64 3/4
 検証中 : mysql-community-client-5.6.14-3.el6.x86_64 4/4

インストール:
 mysql-community-server.x86_64 0:5.6.14-3.el6

依存性関連をインストールしました:
 mysql-community-client.x86_64 0:5.6.14-3.el6 mysql-community-common.x86_64 0:5.6.14-3.el6 mysql-community-libs.x86_64 0:5.6.14-3.el6

完了しました!
[root ~]#
```

追加perlモジュール。

```bash
[root ~]# yum install -y perl-Data-Dumper
読み込んだプラグイン:priorities, update-motd, upgrade-helper
1 packages excluded due to repository priority protections
依存性の解決をしています

依存性を解決しました

=========================================================================================================================================================================================================
 Package アーキテクチャー バージョン リポジトリー 容量
=========================================================================================================================================================================================================
インストール中:
 perl-Data-Dumper x86_64 2.145-3.5.amzn1 amzn-main 49 k

トランザクションの要約
=========================================================================================================================================================================================================
インストール 1 パッケージ

総ダウンロード容量: 49 k
インストール容量: 93 k
Downloading packages:
perl-Data-Dumper-2.145-3.5.amzn1.x86_64.rpm | 49 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 インストール中 : perl-Data-Dumper-2.145-3.5.amzn1.x86_64 1/1
 検証中 : perl-Data-Dumper-2.145-3.5.amzn1.x86_64 1/1

インストール:
 perl-Data-Dumper.x86_64 0:2.145-3.5.amzn1

完了しました!
[root ~]#
```

自動起動ON。

```bash
chkconfig mysqld on
```

rootパスワード変更。

`mysql -uroot`でログインし、`set password for root@localhost=password('new-password');`を実行。

※AMIは、'study@suzukishouten01'にする。

```bash
[root ~]# mysql -uroot
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.6.14 MySQL Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> set password for root@localhost=password('new-password');
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
[root ~]# ```

mysql_secure_installationを実行。設定内容は下記。

```bash
Change the root password? [Y/n] n # 既に先ほど変更したので n
Remove anonymous users? [Y/n] Y # 匿名ユーザを削除
Disallow root login remotely? [Y/n] Y # root ユーザでのリモートからのログインを禁止
Remove test database and access to it? [Y/n] Y # test データベースを削除
Reload privilege tables now? [Y/n] Y # 権限テーブルをリロード
```

再起動。

```bash
service mysqld restart
```

### PHPMyAdminインストール

以下rootで。

`yum --enablerepo=epel install -y phpMyAdmin`を実行してインストール。

```bash
[root ~]# yum --enablerepo=epel install -y phpMyAdmin
読み込んだプラグイン:priorities, update-motd, upgrade-helper
1018 packages excluded due to repository priority protections
依存性の解決をしています

依存性を解決しました

=========================================================================================================================================================================================================
 Package アーキテクチャー バージョン リポジトリー 容量
=========================================================================================================================================================================================================
インストール中:
 phpMyAdmin noarch 4.0.10.7-1.el6 epel 4.1 M
依存性関連でのインストールをします:
 libXpm x86_64 3.5.10-2.9.amzn1 amzn-main 54 k
 libmcrypt x86_64 2.5.8-9.1.2.amzn1 amzn-main 110 k
 libtidy x86_64 0.99.0-19.20070615.1.4.amzn1 amzn-main 144 k
 libtool-ltdl x86_64 2.4.2-20.4.8.2.23.amzn1 amzn-main 51 k
 libvpx x86_64 1.2.0-1.0.amzn1 amzn-main 222 k
 php-php-gettext noarch 1.0.11-3.el6 epel 21 k
 php-tcpdf noarch 6.1.1-1.el6 epel 2.8 M
 php-tcpdf-dejavu-sans-fonts noarch 6.1.1-1.el6 epel 304 k
 php55-bcmath x86_64 5.5.20-2.94.amzn1 amzn-updates 79 k
 php55-gd x86_64 5.5.20-2.94.amzn1 amzn-updates 296 k
 php55-mbstring x86_64 5.5.20-2.94.amzn1 amzn-updates 1.3 M
 php55-mcrypt x86_64 5.5.20-2.94.amzn1 amzn-updates 70 k
 php55-mysqlnd x86_64 5.5.20-2.94.amzn1 amzn-updates 380 k
 php55-pdo x86_64 5.5.20-2.94.amzn1 amzn-updates 188 k
 php55-tidy x86_64 5.5.20-2.94.amzn1 amzn-updates 77 k
 t1lib x86_64 5.1.2-6.5.amzn1 amzn-main 179 k

トランザクションの要約
=========================================================================================================================================================================================================
インストール 1 パッケージ (+16 個の依存関係のパッケージ)

総ダウンロード容量: 10 M
インストール容量: 38 M
Downloading packages:
(1/17): libXpm-3.5.10-2.9.amzn1.x86_64.rpm | 54 kB 00:00
(2/17): libmcrypt-2.5.8-9.1.2.amzn1.x86_64.rpm | 110 kB 00:00
(3/17): libtidy-0.99.0-19.20070615.1.4.amzn1.x86_64.rpm | 144 kB 00:00
(4/17): libtool-ltdl-2.4.2-20.4.8.2.23.amzn1.x86_64.rpm | 51 kB 00:00
(5/17): libvpx-1.2.0-1.0.amzn1.x86_64.rpm | 222 kB 00:00
warning: /var/cache/yum/x86_64/latest/epel/packages/php-php-gettext-1.0.11-3.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
php-php-gettext-1.0.11-3.el6.noarch.rpm の公開鍵がインストールされていません
(6/17): php-php-gettext-1.0.11-3.el6.noarch.rpm | 21 kB 00:00
(7/17): php-tcpdf-6.1.1-1.el6.noarch.rpm | 2.8 MB 00:00
(8/17): php-tcpdf-dejavu-sans-fonts-6.1.1-1.el6.noarch.rpm | 304 kB 00:00
(9/17): php55-bcmath-5.5.20-2.94.amzn1.x86_64.rpm | 79 kB 00:00
(10/17): php55-gd-5.5.20-2.94.amzn1.x86_64.rpm | 296 kB 00:00
(11/17): php55-mbstring-5.5.20-2.94.amzn1.x86_64.rpm | 1.3 MB 00:00
(12/17): php55-mcrypt-5.5.20-2.94.amzn1.x86_64.rpm | 70 kB 00:00
(13/17): php55-mysqlnd-5.5.20-2.94.amzn1.x86_64.rpm | 380 kB 00:00
(14/17): php55-pdo-5.5.20-2.94.amzn1.x86_64.rpm | 188 kB 00:00
(15/17): php55-tidy-5.5.20-2.94.amzn1.x86_64.rpm | 77 kB 00:00
(16/17): phpMyAdmin-4.0.10.7-1.el6.noarch.rpm | 4.1 MB 00:00
(17/17): t1lib-5.1.2-6.5.amzn1.x86_64.rpm | 179 kB 00:00
合計 10 MB/s | 10 MB 00:00:01
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 から鍵を取得中です。
Importing GPG key 0x0608B895:
 Userid : "EPEL (6) <epel@fedoraproject.org>"
 Fingerprint: 8c3b e96a f230 9184 da5c 0dae 3b49 df2a 0608 b895
 Package : epel-release-6-8.9.amzn1.noarch (installed)
 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 インストール中 : php55-mbstring-5.5.20-2.94.amzn1.x86_64 1/17
 インストール中 : php-php-gettext-1.0.11-3.el6.noarch 2/17
 インストール中 : libXpm-3.5.10-2.9.amzn1.x86_64 3/17
 インストール中 : libvpx-1.2.0-1.0.amzn1.x86_64 4/17
 インストール中 : libtool-ltdl-2.4.2-20.4.8.2.23.amzn1.x86_64 5/17
 インストール中 : libmcrypt-2.5.8-9.1.2.amzn1.x86_64 6/17
 インストール中 : php55-mcrypt-5.5.20-2.94.amzn1.x86_64 7/17
 インストール中 : php55-bcmath-5.5.20-2.94.amzn1.x86_64 8/17
 インストール中 : libtidy-0.99.0-19.20070615.1.4.amzn1.x86_64 9/17
 インストール中 : php55-tidy-5.5.20-2.94.amzn1.x86_64 10/17
 インストール中 : php55-pdo-5.5.20-2.94.amzn1.x86_64 11/17
 インストール中 : php55-mysqlnd-5.5.20-2.94.amzn1.x86_64 12/17
 インストール中 : t1lib-5.1.2-6.5.amzn1.x86_64 13/17
 インストール中 : php55-gd-5.5.20-2.94.amzn1.x86_64 14/17
 インストール中 : php-tcpdf-6.1.1-1.el6.noarch 15/17
 インストール中 : php-tcpdf-dejavu-sans-fonts-6.1.1-1.el6.noarch 16/17
 インストール中 : phpMyAdmin-4.0.10.7-1.el6.noarch 17/17
 検証中 : t1lib-5.1.2-6.5.amzn1.x86_64 1/17
 検証中 : php55-pdo-5.5.20-2.94.amzn1.x86_64 2/17
 検証中 : libtidy-0.99.0-19.20070615.1.4.amzn1.x86_64 3/17
 検証中 : php55-tidy-5.5.20-2.94.amzn1.x86_64 4/17
 検証中 : php55-bcmath-5.5.20-2.94.amzn1.x86_64 5/17
 検証中 : php55-mbstring-5.5.20-2.94.amzn1.x86_64 6/17
 検証中 : php55-mcrypt-5.5.20-2.94.amzn1.x86_64 7/17
 検証中 : libmcrypt-2.5.8-9.1.2.amzn1.x86_64 8/17
 検証中 : php-tcpdf-dejavu-sans-fonts-6.1.1-1.el6.noarch 9/17
 検証中 : php-tcpdf-6.1.1-1.el6.noarch 10/17
 検証中 : libtool-ltdl-2.4.2-20.4.8.2.23.amzn1.x86_64 11/17
 検証中 : php-php-gettext-1.0.11-3.el6.noarch 12/17
 検証中 : php55-mysqlnd-5.5.20-2.94.amzn1.x86_64 13/17
 検証中 : phpMyAdmin-4.0.10.7-1.el6.noarch 14/17
 検証中 : libvpx-1.2.0-1.0.amzn1.x86_64 15/17
 検証中 : libXpm-3.5.10-2.9.amzn1.x86_64 16/17
 検証中 : php55-gd-5.5.20-2.94.amzn1.x86_64 17/17

インストール:
 phpMyAdmin.noarch 0:4.0.10.7-1.el6

依存性関連をインストールしました:
 libXpm.x86_64 0:3.5.10-2.9.amzn1 libmcrypt.x86_64 0:2.5.8-9.1.2.amzn1 libtidy.x86_64 0:0.99.0-19.20070615.1.4.amzn1 libtool-ltdl.x86_64 0:2.4.2-20.4.8.2.23.amzn1
 libvpx.x86_64 0:1.2.0-1.0.amzn1 php-php-gettext.noarch 0:1.0.11-3.el6 php-tcpdf.noarch 0:6.1.1-1.el6 php-tcpdf-dejavu-sans-fonts.noarch 0:6.1.1-1.el6
 php55-bcmath.x86_64 0:5.5.20-2.94.amzn1 php55-gd.x86_64 0:5.5.20-2.94.amzn1 php55-mbstring.x86_64 0:5.5.20-2.94.amzn1 php55-mcrypt.x86_64 0:5.5.20-2.94.amzn1
 php55-mysqlnd.x86_64 0:5.5.20-2.94.amzn1 php55-pdo.x86_64 0:5.5.20-2.94.amzn1 php55-tidy.x86_64 0:5.5.20-2.94.amzn1 t1lib.x86_64 0:5.1.2-6.5.amzn1

完了しました!
[root ~]#
```

`/etc/httpd/conf.d/phpMyAdmin.conf`を修正。

```xml:/etc/httpd/conf.d/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>
</Directory>


```

apache再起動後、動作確認。

http://(Global IP)/phpMyAdmin/index.phpにアクセス。

![phpMyAdmin_login.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/2725c10c-a97e-cd2d-7f72-40c3980acfea.png "phpMyAdmin_login.png")

rootユーザでログイン(root/study@suzukishouten01)
![phpMyAdmin_menu.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/e852c1c3-f439-d81b-9c4e-4dfed0f9cc3b.png "phpMyAdmin_menu.png")
OK！

データベース作成

DBユーザ追加と同時に作成、作成したデータベースにフル権限を与える

※user:study/pwd:study
![phpMyAdmin_add_user.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/753c1bd6-f212-168a-d5e4-3040f5a972cb.png "phpMyAdmin_add_user.png")


todo_listsテーブルを作成

![phpMyAdmin_add_table.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/783d088b-c76f-ffc4-e46e-c3bd0ba49e78.png "phpMyAdmin_add_table.png")
![phpMyAdmin_add_table_param.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/76909729-d551-575f-a144-7a8fcfbe54fc.png "phpMyAdmin_add_table_param.png")

データ1件追加

![phpMyAdmin_add_record.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/93b8ef21-77a7-5e33-8046-b09a1aca5e19.png "phpMyAdmin_add_record.png")

### Gitインストール

以下rootで。

`yum install -y git `を実行してインストール。

```bash
[root ~]# yum install -y git
読み込んだプラグイン:priorities, update-motd, upgrade-helper
amzn-main/latest | 2.1 kB 00:00
amzn-updates/latest | 2.3 kB 00:00
1 packages excluded due to repository priority protections
依存性の解決をしています

依存性を解決しました

========================================================================================================================
 Package アーキテクチャー バージョン リポジトリー 容量
========================================================================================================================
インストール中:
 git x86_64 2.1.0-1.35.amzn1 amzn-main 9.2 M
依存性関連でのインストールをします:
 perl-Error noarch 1:0.17020-2.9.amzn1 amzn-main 33 k
 perl-Git noarch 2.1.0-1.35.amzn1 amzn-main 57 k
 perl-TermReadKey x86_64 2.30-20.9.amzn1 amzn-main 33 k

トランザクションの要約
========================================================================================================================
インストール 1 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 9.3 M
インストール容量: 23 M
Downloading packages:
(1/4): git-2.1.0-1.35.amzn1.x86_64.rpm | 9.2 MB 00:01
(2/4): perl-Error-0.17020-2.9.amzn1.noarch.rpm | 33 kB 00:00
(3/4): perl-Git-2.1.0-1.35.amzn1.noarch.rpm | 57 kB 00:00
(4/4): perl-TermReadKey-2.30-20.9.amzn1.x86_64.rpm | 33 kB 00:00
合計 7.2 MB/s | 9.3 MB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 インストール中 : 1:perl-Error-0.17020-2.9.amzn1.noarch 1/4
 インストール中 : perl-TermReadKey-2.30-20.9.amzn1.x86_64 2/4
 インストール中 : perl-Git-2.1.0-1.35.amzn1.noarch 3/4
 インストール中 : git-2.1.0-1.35.amzn1.x86_64 4/4
 検証中 : 1:perl-Error-0.17020-2.9.amzn1.noarch 1/4
 検証中 : perl-Git-2.1.0-1.35.amzn1.noarch 2/4
 検証中 : perl-TermReadKey-2.30-20.9.amzn1.x86_64 3/4
 検証中 : git-2.1.0-1.35.amzn1.x86_64 4/4

インストール:
 git.x86_64 0:2.1.0-1.35.amzn1

依存性関連をインストールしました:
 perl-Error.noarch 1:0.17020-2.9.amzn1 perl-Git.noarch 0:2.1.0-1.35.amzn1 perl-TermReadKey.x86_64 0:2.30-20.9.amzn1

完了しました!
[root ~]#
```

バージョン確認

```bash
[root ~]# git --version
git version 2.1.0
[root ~]#
```

### その他環境設定

#### httpd.conf修正

実行ユーザ変更

```xml:/etc/httpd/conf/httpd.conf
User study
Group apache
```

勉強会アプリ用にドキュメントルートの設定を変更する。

`/etc/httpd/conf/httpd.conf`の下記該当箇所を修正する。

```xml:/etc/httpd/conf/httpd.conf
#DocumentRoot "/var/www/html"
DocumentRoot "/var/www/study"
 .
 .
 .
#<Directory "/var/www/html">
<Directory "/var/www/study">
```

#### php.ini編集

timezone

```ini:/etc/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone #←修正前
date.timezone = 'Asia/Tokyo' #←修正後
```

#### LANG設定
/etc/sysconfig/i18nを編集

```ini:/etc/sysconfig/i18n
LANG=ja_JP.UTF-8
```

#### TimeZone設定
/etc/localtimeを、/usr/share/zoneinfo/Asia/Tokyoで上書き
`cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime`

#### ユーザ追加
参考[EC2にSSH接続用のユーザーを作成する - Qiita](http://qiita.com/dahugani/items/e1fc5c212bf6a7365f8f)
useradd -g wheel study
passwd study

sudoersに追加
sudo visudo

```
root ALL=(ALL) ALL <-もともとある
study ALL=(ALL) ALL　<-追加
```

ssh用の鍵を作成
su study
cd ~/
mkdir .ssh
cd .ssh
ssh-keygen -t rsa

```bash
[study .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/study/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/study/.ssh/id_rsa.
Your public key has been saved in /home/study/.ssh/id_rsa.pub.
The key fingerprint is:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The key's randomart image is:
+--[ RSA 2048]----+
| .o.. |

〜略〜

| . |
+-----------------+
[study .ssh]$
```

※AWS-AMILinuxに併せて名前を変更しておく

```bash
mv id_rsa.pub authorized_keys
```


####XDEBUG

XDEBUGは必ずしも必要ないが、リモートデバッグできて便利なので入れる。

インストールは下記で。

`yum install php55-pecl-xdebug --enablerepo=epel`

php.iniを編集する。末尾に下記を追加。
※全部コメントアウトとし、デフォルトでは無効状態にしておいた。

```ini:/etc/php.ini
;[XDebug]
;zend_extension = /usr/lib64/php/5.5/modules/xdebug.so
;xdebug.remote_enable = 1
;xdebug.remote_mode = req
;xdebug.remote_port = 9000
;xdebug.idekey = "suzukishouten_study"
;xdebug.remote_connect_back=1
;xdebug.remote_autostart=1```
```

####Emacs

いちおう、emacs派のために。

```bash
yum install emacs
```

## イメージ作成

上記までで作成したEC2インスタンスを元に作成する。
![create_image1.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/719008bf-0d66-873c-ca9e-faf2d63ffd41.png "create_image1.png")
![create_image2.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/68e923cb-6c0e-fb14-899e-2629354e9733.png "create_image2.png")
![create_image_finish.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/6ee4e6aa-fdd1-8da8-dc62-9793210d2ede.png "create_image_finish.png")


公開する

Modify Image Permissions
![modify_image1.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/f23b2a3d-e6c2-b96b-d5b2-935881584b7c.png "modify_image1.png")


publicに設定
![modify_image2.png](https://qiita-image-store.s3.amazonaws.com/2006/65988/39587d22-c4a6-5747-e122-f06d01876e9b.png "modify_image2.png")

# 初期ソース作成

下記からcakephpをダウンロード。
作業時(2015/1/20)のバージョンは、2.5.8

http://cakephp.jp/

/var/www/studyでwgetする。

```
wget https://github.com/cakephp/cakephp/archive/2.5.8.zip
```

.htaccessのrewrite設定をいじる必要がある。

3つある。

- `/.htaccess`
- `/app/.htaccess`
- `/app/webroot/.htaccess`

それぞれ下記に。

```xml:/.htaccess
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteRule ^$ app/webroot/ [L]
 RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
```


```xml:/app/.htaccess
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteRule ^$ webroot/ [L]
 RewriteRule (.*) webroot/$1 [L]
</IfModule>
```


```xml:/app/webroot/.htaccess
<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
```

データベース設定

ファイル名変更

`/app/Config/database.php.default` -> `/app/Config/database.php`


```php:/app/Config/database.php`

	public $default = array(
	'datasource' => 'Database/Mysql',
	'persistent' => false,
	'host' => 'localhost',
	'login' => 'study',
	'password' => 'study',
	'database' => 'study',
	'prefix' => '',
	'encoding' => 'utf8',
	);
```

security.salt .cipherSeed

`/lib/Cake/Utility/Debugger.php`を修正する。

下記参考サイトの通り。
[[CakePHP] Security.salt と Security.cipherSeed を生成する | blog.shiten.info](http://blog.shiten.info/2013/03/cakephp-security-salt-%E3%81%A8-security-cipherseed-%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B.html)

.gitignore

下記サイトのものをそのままコピペした。
[[CakePHP] .gitignoreの設定 | CreativeStyle](http://kadoppe.com/archives/2011/04/cakephp-gitignore.html)


GitHubに上げる

1. `rest-study`リポジトリ作成
2. `/var/www/study/rest-study`としてclone
3. 上記ソースを`/var/www/study/rest-study`に全部コピー。
4. git add, commit, push

以上！