AWS EC2にCakePHP2.xの環境を構築する

EC2の１インスタンスにLAMPを構築して、CakePHP2.xの環境を作った。

1.EC2のインスタンス作成
2.EC2の初期設定
3.LAMPの構築
4.CakePHPの設定
5.動作確認

# 1.EC2インスタンス作成
　下記のポリシーでインスタンスを作成

```markdown

- t2.microの１インスタンスの最小構成（メモリ１G、SSD８G）
- 開発や小規模用途
- ELBや拡張は考慮せず
- AMI2015.03を使用
- SSH:22とHTTP:80とSMTP:25だけ空ける
- SMTPはマイIP専用

```

# 2.EC2の初期設定
　（SSHの鍵認証でのログイン方法の記述は省略）
　SSHでログインしたら

　AMIのアップデート

```markdown
sudo yum update
```

　webサーバのコンテンツ用にwwwグループを作成

```markdown
sudo groupadd www
```

　ec2-userをwwwグループに参加

```markdown
sudo usermod -a -G www ec2-user
```

　exit等をして、自分が所属しているグループを確認

```markdown
exit
(再ログイン後)
groups
id
```

　な感じ

　とりあえず、時計をローカルタイムにする

```markdown
sudo vim /etc/sysconfig/clock
```

　以下に変更

```markdown
ZONE="Asia/Tokyo" 
UTC=false

```

　ローカルタイムもコピーしておく

```markdown
sudo cp /usr/share/zoneinfo/Japan /etc/localtime
```

　確認

```markdown
date
```

　cronも再起動

```markdown
sudo service crond restart
```

# 3.LAMPの構築

## Apache2.4のインストール
　yumからインストール

```markdown
sudo yum install httpd24
```

　初期設定

```markdown
sudo vi /etc/httpd/conf/httpd.conf
```

　下記の内容に変更

```markdown
<Directory /var/www/html>
(省略）
#AllowOverride None
AllowOverride All
```

　とりあえずスタート

```markdown
sudo service httpd start
```

　自動起動にしておく

```markdown
sudo chkconfig httpd on
````

　確認

```markdown
chkconfig --list httpd
```

　/var/wwwの所有グループをwwwに変更

```markdown
sudo chown -R root:www /var/www
```

　パーミッションも変更

```markdown
sudo chmod 2775 /var/www
```

　以後/var/wwwのディレクトリは775、ファイルは664になるようにする

```markdown
find /var/www -type d -exec sudo chmod 2775 {} +
find /var/www -type f -exec sudo chmod 0664 {} +
```


## MySQL5.5のインストール

　yumでインストール

```markdown
sudo yum install mysql55 mysql55-server
```

　初期設定

```markdown
sudo vi /etc/my.conf
```

　以下を[mysqld]に追加

```markdown
default-storage-engine = InnoDB
character-set-server = utf8
```

　このまま起動するとエラーになるので、mysql_install_dbを実行

```markdown
sudo mysql_install_db --datadir=/var/lib/mysql --user=mysql
```

　とりあえずmysqldを起動

```markdown
sudo service mysqld start
```

　自動起動にする

```markdown
sudo chkconfig mysqld on
```

　確認

```markdown
chkconfig --list mysqld
```

　初期設定コマンドにて、rootパスワード設定、無名アカウント、テストDBを削除

```markdown
mysql_secure_installation

```

　mysqlにログイン

```markdown
mysql -uroot
```

　CakePHP（Webアプリ）用のアカウントとDBを作成

```markdown
#DB：webapp01作成
create database webapp01;

#id:app01/pass:hoge01を作成
create user 'app01'@'localhost' identified by 'hoge01';
create user 'app01'@'127.0.0.1' identified by 'hoge01';

#app01にwebapp01にのみ権限を付与
grant all on webapp01.* to 'app01'@'localhost' identified by 'hoge01';
grant all on webapp01.* to 'app01'@'127.0.0.1' identified by 'hoge01';

#更新
flush privileges;

quit
```

## PHP5.6のインストール

　yumでインストール

```markdown
sudo yum install php56
sudo yum install php56-dba php56-mbstring php56-mcrypt php56-opcache php56-pdo
php56-tidy php56-mysqlnd php56-dbg
```

　php.iniの設定

```markdown
default_charset = "UTF-8"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation=off
mbstring.detect_order=auto
date.timezone = Asia/Tokyo
```

　httpd再起動

```markdown
sudo service httpd restart
```

## 初期動作確認

　テスト用HTML作成

```markdown
vi /var/www/html/index.html
```

```html
<html>
<head>
<title>Index</title>
</head>
<body>
<h3>Index Page</h3>
</body>
</html>
```

　PHP確認用

```markdown
vi /var/www/html/phptest.php
```

```php
<?php
echo "PHP TEST!!";
phpinfo();
?>
```

# 4.CakePHPの初期設定

　CakePHPをDL
https://github.com/cakephp/cakephp/archive/2.6.4.zip

　zipを解凍して/var/www/html/にupload
　uploadしたフォルダ名を作成するアプリケーション名に変更（ex:webapp01）
　
　webapp01/app/tmp のパーミションを777に変更

```markdown
sudo chmod -R 777 app/tmp
```

　設定を変更

```markdown
vi webapp01/app/Config/core.php
```

```markdown
Configure::write('Security.salt','任意の文字列:40文字');
Configure::write('Security.cipherSeed','任意の数列:32文字');
```

　DBの設定（前述で設定した内容を設定）

```markdown
#名前を変更する
mv app/Config/database.php.default app/Config/database.php

vi webapp01/app/Config/database.php
```

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

　DebugKitのDL
　https://github.com/cakephp/debug_kit/archive/2.2.zip
　※2.x系は2.2を使用。masterは3.0以上専用。

　設定

```markdown
vi webapp01/app/Config/bootstrap.php
```

```markdown
CakePlugin::load('DebugKit');
```

```markdown
vi webapp01/app/Controller/AppController.php
```

```markdown
class AppController extends Controller {
        public $components = array('DebugKit.Toolbar');
}
```

# 5.動作確認（完了）

```markdown
http:// [public DNS] /webapp01/
```


# 参考
http://qiita.com/muttan/items/ecba4bb6d68b4c35bdf9
http://qiita.com/shizuma/items/126d2245c58d97b274c7
http://qiita.com/tsumekoara/items/d79254a1c791bb38ae8e
http://qiita.com/shojimotio/items/035ad7b598cd14f118e2