AWSのEC2環境構築（Amazon linux, PHP7, PHPfpm, nginx, MariaDB）


#概要
以下の環境構築をします。

* Amazon linux
* PHP7
* PHP-FPM
* nginx
* MariaDB
* FuelPHP

#手順

##AWS契約〜インスタンス作成

メールアドレスを入力して「私は新規ユーザーです。」を選択。

![kobito.1459401068.756361.png](https://qiita-image-store.s3.amazonaws.com/0/53678/6b5b3d6a-d8fe-e62b-58fd-d9907e2aada7.png "kobito.1459401068.756361.png")

***


フォームの内容を入力
![kobito.1459401198.052064.png](https://qiita-image-store.s3.amazonaws.com/0/53678/8501c26f-fe05-af63-5a4b-94ea13295ae1.png "kobito.1459401198.052064.png")

***
連絡先を入力
（個人アカウントを選択して下さい）

![kobito.1459401262.103784.png](https://qiita-image-store.s3.amazonaws.com/0/53678/ab22a655-e34f-8d60-40b4-59937b9a6319.png "kobito.1459401262.103784.png")

***
クレジットカード情報を入力

![kobito.1459401414.820877.png](https://qiita-image-store.s3.amazonaws.com/0/53678/e891a2e8-d337-314a-dd09-2e60bdf6aafd.png "kobito.1459401414.820877.png")

***
電話番号を入力する。
電話がかかってくるので、画面に表示された番号を入力。

![kobito.1459401517.624317.png](https://qiita-image-store.s3.amazonaws.com/0/53678/92c74c0e-e848-7527-af31-d4b72490289b.png "kobito.1459401517.624317.png")

***
サポートプランを選択

![kobito.1459401702.274236.png](https://qiita-image-store.s3.amazonaws.com/0/53678/b454d5d9-a859-5759-babc-3c4b0bada2e3.png "kobito.1459401702.274236.png")
***
コンソールにサインインするを選択する
![kobito.1459401854.607006.png](https://qiita-image-store.s3.amazonaws.com/0/53678/b632216c-5bfb-cb34-ed22-2b4207987724.png "kobito.1459401854.607006.png")

***
ログインする

![kobito.1459401890.415368.png](https://qiita-image-store.s3.amazonaws.com/0/53678/19c1c77b-001e-5e07-faef-c64e1d53c111.png "kobito.1459401890.415368.png")

***
EC2を選択する

![kobito.1459401921.368846.png](https://qiita-image-store.s3.amazonaws.com/0/53678/1b2a2cbf-0fce-c629-9f46-eb3310e4a32e.png "kobito.1459401921.368846.png")


***
インスタンスの作成を選択する

![kobito.1459401921.368846.png](https://i.gyazo.com/7f45b423939a7c6d85a5d35f6bb261c6.png)

***
一番上のAmazon Linux AMIを選択する

![](https://i.gyazo.com/5ca15e750a27fd987c42b1234a788874.png)

***
推奨されているインスタンスタイプを選択する

![](https://i.gyazo.com/00273d26e52115eea10f416ebe2ec090.png)

***
セキュリティーグループの編集を選択

![](https://i.gyazo.com/ac435394bebe785a09bcdcf4b4300ef7.png)

***
社内からのアクセスの場合、以下を追加
ssh  TCP 22　任意の場所　社内のグローバルip
http TCP 80　任意の場所　社内のグローバルip

![](https://i.gyazo.com/e60a0e6a7b089a8f0a98c2c8d19c6f7f.png)

***

ストレージを30GBに追加


![](https://i.gyazo.com/2f45fed2983788625797567630a7b664.png)

***

キーペアを発行。秘密鍵はローカルの任意のディレクトリに大切に保管して下さい。
![](https://i.gyazo.com/97d524eb12e8c0330f9c24801f33c0d0.png)

***
インスタンスが作成中であることを確認する

![](https://i.gyazo.com/59c4c60ce39906f3b01f4830b0eb22ff.png)

***
インスタンスが作成されたことを確認する

![](https://i.gyazo.com/898ca6e45fa7280ec3a69d82d5cdb7bc.png)


##サーバー設定
###ssh接続
パブリックipを指定してssh接続。
```
ssh -i ~/key/my-key-pair2.pem  ec2-user@52.11.74.135
```

```
The authenticity of host '52.11.74.135 (52.11.74.135)' can't be established.
RSA key fingerprint is d5:52:9e:9b:d3:ed:4d:e5:82:e7:12:da:97:a5:d7:4a.
Are you sure you want to continue connecting (yes/no)?
```

```
yes
```

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/nmorii/key/my-key-pair2.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/nmorii/key/my-key-pair2.pem
Permission denied (publickey).
```

![](https://i.gyazo.com/8ca8ff7666e24bd883aa951b8fda24cf.png)

```
chmod 700 my-key-pair2.pem
ssh -i ~/key/my-key-pair2.pem  ec2-user@52.11.74.135
```

```
Last login: Thu Mar 31 06:42:28 2016 from xxxxxxxxxxxxxxxxx

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

https://aws.amazon.com/amazon-linux-ami/2016.03-release-notes/
3 package(s) needed for security, out of 4 available
Run "sudo yum update" to apply all updates.
```

Cent OSの標準パッケージをアップデート

```
sudo yum update
```

webtatic-testingリポジトリの追加
CentOS6用のPHP7のリポジトリを追加する。

開発者ツールインストール

```
yum groupinstall -y 'Development Tools'
```

```
yum groupinstall -y "Development Libraries"
```

PHP7インストール

```
sudo rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
```

```
sudo yum install --enablerepo=webtatic-testing php70w php70w-devel php70w-fpm php70w-mbstring php70w-pdo
```

nginxインストール

```
sudo yum install nginx
```

```
/etc/nginx/nginx.conf
```

41行目をdocument_rootのディレクトリに設定。

```
 37     server {
 38         listen       80 default_server;
 39         listen       [::]:80 default_server;
 40         server_name  localhost;
 41         root         /var/www/html;
```

70行目のdocument_rootを変更
73行目の/scriptを$document_rootに変更

```
 69         location ~ \.php$ {
 70             root           /var/www/html;
 71             fastcgi_pass   127.0.0.1:9000;
 72             fastcgi_index  index.php;
 73             fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
 74             include        fastcgi_params;
 75         }
```

phpfpmの設定ファイルを編集
```
/etc/php-fpm.d/www.conf
```

8~9行目のユーザーとグループをnginxに変更

```
  8 user = nginx
  9 ; RPM: Keep a group allowed to write in log dir.
 10 group = nginx
```

nginxを起動

```
sudo /etc/init.d/nginx start
ginx を起動中:                                            [  OK  ]
```

php-fpmを起動

```
sudo /etc/init.d/php-fpm start
php-fpm を起動中:                                          [  OK  ]
```

ドキュメントルートの権限を変更
```
chmod -R 755 /var/www/html
```

ファイルを作成。

```
vim index.php
```

```
<?php

phpinfo();

?>
```

ブラウザからpublic ipにアクセス
![](https://i.gyazo.com/916affd04135be19484a217e5d56ea31.png)


#MariaDBをインストール

インストール先のレポジトリを設定

```
sudo vi /etc/yum.repos.d/MariaDB.repo
```

```
# MariaDB 10.1 CentOS repository list - created 2016-03-13 07:22 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
```

マリアDBをインストール

```
sudo yum install -y MariaDB-server MariaDB-client
```

起動

```
sudo /etc/init.d/mysql start
```

初期設定

```
mysql_secure_installation
```

```
Enter current password for root (enter for none):
まだパスワードはないので、リターン

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
一応rootとしておく

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] 
誰でもログイン出来るのは嫌だから、yes

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
リモートでのログインはありえるから、no
Disallow root login remotely? [Y/n] n

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
テスト用DBは一応残しておく
Remove test database and access to it? [Y/n] n

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
特権テーブルはリロードしておく
Reload privilege tables now? [Y/n] Y

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

Thanks for using MariaDB!

```

#Fuel PHPのインストール

以下コマンドを実行

```
curl get.fuelphp.com/oil | sh
```

*一般ユーザーで実行すること。rootで実行するとうまくいかない。

途中で、githubのトークンはと聞かれるので

```
https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+<servername>+2015-06-26+0933
```

にアクセスして、トークンをgetしましょう。

#nginxの設定を変更

```
sudo vim /etc/nginx/nginx.conf
```

41行目をfuelのdocumentルートに設定。
47行目と48行目に以下urlを参考に追記。
72行目をdocumentルートに設定。

```
http://fuelphp.com/docs/installation/instructions.html
```

```
 37     server {
 38         listen       80 default_server;
 39         listen       [::]:80 default_server;
 40         server_name  localhost;
 41         root         /var/www/html/sample/public;

 46         location / {
 47             index index.php;
 48             try_files $uri $uri/ /index.php$is_args$args;
 49         }

 71         location ~ \.php$ {
 72             root           /var/www/html/sample/public;
 73             fastcgi_pass   127.0.0.1:9000;
 74             fastcgi_index  index.php;

```

nginxをリスタート

```
sudo /etc/init.d/nginx restart
ginx を起動中:                                            [  OK  ]
```

FuelPHPが表示される。

![](https://i.gyazo.com/e33201f5ab375bd87401a374d37f20f1.png)

#その他
##FileZillaの設定

Settingから以下を開く
![](https://i.gyazo.com/429842aa9b1cddd5ad51a13d0405275d.png)


![](https://i.gyazo.com/fa85c7b2b336a9396f6a87770a4c69e2.png)


FileZilla用にコンバートしてもいいかと聞かれるので、Yesを選択。

Site Managerから以下のように入力

![](https://i.gyazo.com/3467e4a27d8bac34a4d7ff0067070db9.png)

OKを押すと接続出来るはず。

***

ユーザーを作成する

以下参考
```
http://www.task-notes.com/entry/20150816/1439694000
```

秘密鍵を作成する
```
ssh-keygen -f ~/.ssh/id_rsa_ec2_camp7
```


```
sudo adduser newuser
```

```
sudo passwd nmorii
```

パスワードを入力
ここではAsdfghjkl7

```
sudo su
echo "nmorii ALL=(ALL) ALL" > /etc/sudoers.d/nmorii
chmod 440 /etc/sudoers.d/nmorii
```

```
su nmorii
cd ~
mkdir .ssh
sudo mv /home/ec2-user/id_rsa_ec2.pub .ssh/authorized_keys
sudo chown nmorii. .ssh/authorized_keys
sudo chmod 600 .ssh/authorized_keys

```

AMIからインスタンスの作成

インスタンスの作成を選択
![](https://i.gyazo.com/13f5bd0e1098b9f89ab8ea91a48c279e.png)

マイAMIを選択
![](https://i.gyazo.com/ee285230f44698e2779dfee370dd76d5.png)

対象のAMIを選択
![](https://i.gyazo.com/bd50c96eab2b59ffc3e3bc846ab78ae1.png)

インスタンスタイプを選択
![](https://i.gyazo.com/863cf9d04353d622ea3154a4feefcd1d.png)

通常通り作成



一般的な公開出来るWEBサーバー


ユーザー作成。森井。

それぞれのパーミッションの権限を正しく設定する。

777は禁止。


RDSを使う。