AWSを使ってアプリケーションを公開する方法(3)EC2インスタンスの環境構築

#はじめに
AWSを使ってアプリケーションを公開する手順を記載していく。
この記事ではEC2インスタンスの環境構築を行う。

#必要なツールのインストール
EC2インスタンスの環境構築を行うために様々なツールをインストールする。

##「.ssh」ディレクトリに移動する
下記コマンドを実行し「.ssh」ディレクトリに移動する。

```
cd ~/.ssh/
```

##ssh接続
以下のコマンドを実行してEC2インスタンスにsshでアクセスする。
(ダウンロードしたpemファイル名が「xxx.pem」、ElasticIPが12.345.67.890の場合)

```
ssh -i xxx.pem ec2-user@12.345.67.890
```

##yumコマンドを実行しパッケージをアップデート
以下のコマンドを実行してパッケージをアップデートする。

```
sudo yum -y update
```

###パッケージとは
- パッケージはLinuxOSの動作に必要な各種プログラムやファイルをまとめたもの。
- バイナリ型式のプログラムおよびそのプログラムを動作させるのに必要なライブラリや設定ファイル、手順書のようなドキュメントで構成される。

###yumコマンドとは
- CentOSなどのLinuxディストリビューションでは、基本的にRPM（Red Hat Package Manager）と呼ばれるパッケージ管理システムが使われている。RPMパッケージであれば、「rpm」コマンドで手軽にインストールしたり、アップデートやアンインストールしたりすることができる。
- 「あるソフトウェアを使うにはこのソフトウェアが必要」といった依存関係をチェックして必要なソフトウェアを自動でインストールするなど、RPMをより便利に活用できるようにしたのがYUM（Yellowdog Updater Modified）で、YUMのパッケージ操作はyumコマンドで行う。
- yumコマンドで使えるコマンドやオプションには様々なものがあり、上で行っている「yum -y update」は全ての問い合わせに「yes」で応答しシステムのパッケージを更新するというコマンドである。

##yumコマンドを実行し各種パッケージをインストール
以下のコマンドを実行し、その他環境構築に必要なパッケージを諸々インストールする。

```
sudo yum -y install git make gcc-c++ patch libyaml-devel libffi-devel
```

```
sudo yum -y install libicu-devel zlib-devel readline-devel libxml2-devel
```

```
sudo yum -y install libxslt-devel ImageMagick ImageMagick-devel
```

```
sudo yum -y install openssl-devel libcurl libcurl-devel curl
```

##Node.jsをインストール
Node.jsとは、サーバサイドでJavascriptを動かすためのもの。詳しくは別の記事にまとめたい。
今後の作業でcssや画像を圧縮するためにインストールする。

以下のコマンドを実行し、Node.jsをインストールする。

```
sudo curl -sL https://rpm.nodesource.com/setup_6.x | sudo bash -
```

```
sudo yum -y install nodejs
```

###curlコマンドとは
サーバとデータのやりとりを行うコマンド。
よく使うオプションは以下らしい。こちらもあとで詳しくまとめたい。

```
-L -- リダイレクトがあったらリダイレクト先の情報を取る
-s -- 余計な出力をしない
-o -- レスポンスボディの出力先を指定する
```

###bashコマンドとは
bashとはシェルの一種で、ユーザの入力をコンピュータに伝えるもの。
ここではbashを起動している。

##rbenvとruby-buildをインストールする
以下はRubyを使ってサーバサイドを実装する場合に行う。

以下のコマンドを実行してgitからrbenvをクローンする。

```
#rbenvのインストール
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv 
```

以下のコマンドを実行してパスを通す。
パスを通すとは、どのディレクトリからもアプリケーションを呼び出せる状態にすること。

```
#パスを通す
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile 

#rbenvを呼び出すための記述
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
```

以下のコマンドを実行して設定したパスを読み込む。

```
#.bash_profileの読み込み
source .bash_profile
```

以下のコマンドを実行してgitからruby-buildをクローンする。

```
#ruby-buildのインストール
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
```

以下のコマンドを実行して、rehashを行う。
つまり、rubyやgemをインストールして使えるコマンド(irb, gem, rake, rails, rubyなど)をバージョン毎に振り分け、使用できるようにする。

```
#rehashを行う
rbenv rehash 
```

##Rubyをインストールする
今回はバージョン2.5.1をインストールする。

以下のコマンドを実行して、Rubyの2.5.1のバージョンをインストールする。

```
rbenv install 2.5.1
```

以下のコマンドを実行して、EC2インスタンス内で使用するRubyのバージョンを決める。

```
rbenv global 2.5.1
```

以下のコマンドを実行して、サイドrehashを行う。

```
#rehashを行う
rbenv rehash
```

最後に以下のコマンドできちんとインストールができているか確認する。

```
#バージョンを確認
ruby -v
```

#参考
[yumコマンドとは](https://www.atmarkit.co.jp/ait/articles/1608/29/news019.html#sample1)
[パッケージとは](https://xtech.nikkei.com/it/article/Keyword/20110427/359976/)
[Node.js公式](https://nodejs.org/ja/about/)
[Node.js解説](https://eng-entrance.com/what-is-nodejs)
[curlコマンド](https://qiita.com/ryuichi1208/items/e4e1b27ff7d54a66dcd9)

# 関連記事
[AWSを使ってアプリケーションを公開する手順(1)AWSアカウントの作成](https://qiita.com/osawa4017/items/78ee5912084dd83c5a0d)
[AWSを使ってアプリケーションを公開する手順(2)EC2インスタンスの作成](https://qiita.com/drafts/ec5aa2965a89320b074d)
[AWSを使ってアプリケーションを公開する手順(4)データベースの作成]
(https://qiita.com/osawa4017/items/7dba25f4fa30ab0b1246)
[AWSを使ってアプリケーションを公開する手順(5)アプリケーションを公開する]
(https://qiita.com/osawa4017/items/6f3125fcc21f73024311)
[AWSを使ってアプリケーションを公開する手順(6)Nginxを導入する]
(https://qiita.com/osawa4017/items/9b707baf6ddde623068c)