EC2でなんとなく環境を整えるよ、という覚え書き

以前書いてあったメモが役に立ったので、加筆したりしつつ公開してみる。
あくまで確認用のWebサーバーが立てられるぐらいまでの手順です。

主目的は自分用覚え書きですが、気になる点があればご指摘ください。
あまり環境関係ないかもですが、ローカルマシンはMac OS Xです。

## キーペアの作成と設定
SSHのログインに必要な秘密鍵の作成。
既存のものを流用するならこの手順は不要。

EC2 Management Consoleの左カラムから[キーペア]を選択
右側画面上部[キーペアの作成]ボタンをクリック。
任意の名前を入力して作成ボタン。

.pemファイルが落ちてくるので、これをローカルの~/.sshへコピー。
忘れずにパーミッションを変更しておこう。
``$ chmod 600 (filename).pem``
**キーペアなくすと後から設定できないので気を付けよう**

## インスタンス作成
好みの設定で作成。最後に先程作成したキーを指定することを忘れずに。
必要に応じてElastic IP設定するとか諸々やっておく。

## ローカルの~/.ssh/configにサーバ名を追加<div id="adduserConfig" />
やっておくとssh接続が楽になるので。
こんな感じで入力しておく。
**この時点ではユーザー名はデフォルトの「ec2-user」にしておく！**

```bash
$ vi config
host ec2
        HostName xxx.xxx.xxx.xxx
        User ec2-user
        IdentityFile ~/.ssh/(filename).pem
```

## SSHで接続＋初期設定
``$ ssh ec2``でサクッと繋がるはず。

ひとまずパッケージ諸々のアップデートを。
`$ sudo yum update`

ec2-userはデフォルト名なので、
存在自体セキュリティ的によろしくない。新しいユーザを追加する。

```bash
$ sudo useradd -m (hoge) -G wheel
#パスワードを設定
$ sudo passwd (hoge)
#sudoの設定
$ sudo visudo
#*%wheel  ALL=(ALL)   NOPASSWD: ALL* のコメントを外す。
```

秘密鍵ログインのためにサーバ側の公開鍵をコピーしておく

```bash
#いま作ったユーザーへ変更
$ su (hoge)
$ cd

$mkdir .ssh
#.sshディレクトリのパーミッションを変更しておかないとログインできないので
$ chmod 700 .ssh
$ cd .ssh

#ec2-userの秘密鍵を持ってくる
$ sudo cp /home/ec2-user/.ssh/authorized_keys ./
#パーミッション、所有者を変更しておかないとログインできないので変更
$ chown (hoge) authorized_keys
$ chgrp wheel authorized_keys
$ chmod 600 authorized_keys
```

ここまでやったらsshでログインできることを確認。
先ほどの[config](#adduserConfig)のユーザ名を変更しておく。

正常にログインできることを確認したら$ sudo userdel ec2-user`しておく。

## もろもろの環境を整えよう

swap領域の作成

```bash
$ sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=1280
$ sudo chmod 600 /mnt/swapfile
$ sudo mkswap /mnt/swapfile
$ sudo swapon /mnt/swapfile
$ free
#下記のような表示がでればOK
             total       used       free     shared    buffers     cached
Mem:       1019280     945880      73400         60      20512     839364
-/+ buffers/cache:      86004     933276
Swap:            0          0          0

#fstabに追記
$ sudo vi /etc/fstab
/mnt/swapfile none      swap    sw              0   0
```

i18nあたり

```bash
$ sudo vi /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"
```

timezone

```bash
$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime
$ sudo vi /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=false
#問題ないか確認
$ date
2017年  2月 22日 水曜日 23:11:01 JST
```

## パッケージいれる
まずアップデート
`$ sudo yum update `
gitあたりは必要かな？
`$ sudo yum -y install git`

思い出し次第追記。

# Webサーバ動かしたいよね。
nginx + PHPをインストール。

```bash
$ sudo yum install php70
$ sudo yum install php70-mysqlnd php70-mbstring php70-mcrypt php70-pdo php70-xml php70-fpm
$ sudo yum install nginx
```

各種コンフィグの設定

```bash
$ sudo vi /etc/nginx/nginx.conf
index  ndex.php  index.html index.htm;
root         /var/www/html;
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

$ sudo vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx

#nginx,php起動
$ sudo service nginx start
$ sudo service php-fpm start
#インスタンス起動時、自動で起動するようにする
$ sudo chkconfig nginx on
$ sudo chkconfig php-fpm on
```

ドキュメントルートのパーミッション変えておこう
```bash
$ sudo chmod 777 /var/www/html/
```

動作確認

```bash
$ vi /var/www/html/index.php
<?php phpinfo();
```
ずらっと出てくればOK！
いろいろまる見えなので確認したら消しておこう。

ひとまずこんなところまで。
必要に応じてnpm入れたりする編に続く、かもしれない。