EC2にRailsアプリをデプロイ② ~EC2に必要なツールをインストール~

##はじめに
前回続きの記事です。
今回は前回作成したEC2インスタンスへターミナルからログインしてデプロイに必要なツールを導入していきます。


##EC2インスタンスへログイン
ターミナルから以下のコマンドを実行して、EC２インスタンスへログインします。

```terminal:ターミナル
% cd ~
```

```terminal:ターミナル
% mkdir ~/.ssh

# .sshというディレクトリを作成
# File existsとエラーが表示されたとしても、.sshディレクトリは存在しているのということなので、そのまま進みましょう。
```

```terminal:ターミナル
% mv Downloads/ダウンロードした鍵の名前.pem .ssh/

# mvコマンドで、ダウンロードしたpemファイルを、ダウンロードディレクトリから、.sshディレクトリに移動します。
# 「ダウンロードした鍵の名前」の部分は、Finderでダウンロードフォルダから「〜.pem」というファイルを探し、「〜」の部分の名前に置き換えてください。
```

```terminal:ターミナル
% cd .ssh/
```

```terminal:ターミナル
% ls

# pemファイルが存在するか確認しましょう
```

```terminal:ターミナル
% chmod 600 ダウンロードした鍵の名前.pem

# 「ダウンロードした鍵の名前」はFinderのダウンロードフォルダから探しましょう（見つからない場合は他のフォルダを探しましょう）
```

```terminal:ターミナル
% ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスに紐付けたElastic IP
```

下記のコマンドを実行するとyesかnoかの意思表示を求められますが、yesを入力して実行しましょう。

```terminal:ターミナル
% ssh -i aws_key.pem ec2-user@52.68.~~~~~~
The authenticity of host '52.68.~~~~~~ (52.68.~~~~~~)' can't be established.
RSA key fingerprint is eb:7a:bd:e6:aa:da:~~~~~~~~~~~~~~~~~~~~~~~~.
Are you sure you want to continue connecting (yes/no)? 

（ここで「yes」を入力し、実行する）
```
このssh接続は時間が経つとタイムアウトするので、その場合はもう一度上記のコマンドで繋ぎ直せます。


##必要なツールをインストール
###yumコマンド
まずはLinuxにおけるソフトウェア管理の仕組みのyumコマンドでパッケージをアップデートします。

```terminal:ターミナル
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y update
```

そのほかの環境構築に必要なパッケージを諸々インストール。
(めちゃ長いので注意)↓

```terminal:ターミナル
[ec2-user@ip-172-31-25-189 ~]$ sudo yum  -y install git make gcc-c++ patch libyaml-devel libffi-devel libicu-devel zlib-devel readline-devel libxml2-devel libxslt-devel ImageMagick ImageMagick-devel openssl-devel libcurl libcurl-devel curl
```

これらのコマンドに「**-y**」とありますがこれは-yオプションと言って、yesかnoの質問に対して自動的に全ての問いにyesと答えるコマンドです。
コマンドをつけ忘れたら「Y」を入力してエンターキーを押してインストールの完了をしてください。

###EC2にNode.jsをインストール
Node.jsはサーバーサイドで動くJavaScriptのパッケージです。今後のデプロイの作業の中で、CSSや画像を圧縮するのに使われます。
下記をターミナルを実行

```terminal:ターミナル
[ec2-user@ip-172-31-25-189 ~]$ sudo curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y install nodejs
```

これでNode.jsのインストールは完了です。

###Yarnのインストール
YarnはRailsに搭載されているJavaScriptのパッケージ管理するものです。

下記のコマンドでインストール

```terminal:ターミナル
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y install wget
[ec2-user@ip-172-31-25-189 ~]$ sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y install yarn
```

これでYarnのインストールは完了です。

###rbenvとruby-buildをインストール
Rubyをインストールする前にこの二つをインストールしなければなりません。

下記のコマンドでインストール

```terminal:ターミナル
# ①rbenvのインストール
[ec2-user@ip-172-31-25-189 ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv 

# ②パスを通す
[ec2-user@ip-172-31-25-189 ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile 

# ③rbenvを呼び出すための記述
[ec2-user@ip-172-31-25-189 ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

# ④.bash_profileの読み込み
[ec2-user@ip-172-31-25-189 ~]$ source .bash_profile

# ⑤ruby-buildのインストール
[ec2-user@ip-172-31-25-189 ~]$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

# ⑥rehashを行う
[ec2-user@ip-172-31-25-189 ~]$ rbenv rehash
```

①でgitからrbenvをクローンしています。

②、③のパスを通すとはどのディレクトリからでもアプリケーションを呼び出せる状態にすることです。

④で設定したパスを読み込みます。

⑤でgitから「ruby-build」をクローンしています。

⑥使用しているRubyのバージョンで、gemのコマンドを使えるようにします。

###Rubyをインストール
Rubyをインストールしますが下記のコマンドのインストールするRubyのバージョンや自分のアプリで使っているバージョンは適宜変更します。

```terminal:ターミナル
# Ruby 2.6.5のバージョンをインストール
[ec2-user@ip-172-31-25-189 ~]$ rbenv install 2.6.5

# EC2インスタンス内で使用するRubyのバージョンを決める
[ec2-user@ip-172-31-25-189 ~]$ rbenv global 2.6.5

# rehashを行う
[ec2-user@ip-172-31-25-189 ~]$ rbenv rehash  

# Rubyのバージョンを確認
[ec2-user@ip-172-31-25-189 ~]$ ruby -v 
```

Rubyのインストールは時間がかかりますが、固まっているように見えても変にいじらず待ちましょう。

今回はここまでです。次回はデータベースを用意していきます。