はじめてAWSでデプロイする方法⑦（EC2にgemをインストール）

## EC2のメモリを増強する

### Swap(スワップ)領域を設定
Swapは、EC2のメモリが限界に達したとき、補う形でメモリの容量を増やす機能です。
デフォルトではSwap領域が設定されていないので、設定しましょう

### 手順
ホームディレクトリに移行

```
[ec2-user@ip-172-31-25-189 ~]$ cd 
```
下記のコマンドを実行

```
[ec2-user@ip-172-31-25-189 ~]$ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=512
```
うまくいくと、下記の表示が出ます

```
512+0 レコード入力
512+0 レコード出力
536870912 バイト (537 MB) コピーされました、 5.19011 秒、 103 MB/秒
```
次は権限に制限をかけましょう（chmodコマンド）

```
[ec2-user@ip-172-31-25-189 ~]$ sudo chmod 600 /swapfile1
```
スワップ（swap）領域を作成する　－　mkswap

```
[ec2-user@ip-172-31-25-189 ~]$ sudo mkswap /swapfile1

#成功すると下記の表示が出ます
スワップ空間バージョン1を設定します、サイズ = 524284 KiB
ラベルはありません, UUID=74a961ba-7a33-4c18-b1cd-9779bcda8ab1
```
スワップ（swap）領域を有効化する　－　swapon

```
[ec2-user@ip-172-31-25-189 ~]$ sudo swapon /swapfile1
```
エラーが出なければ成功です。
エラー「swapon: /swapfile1: スワップヘッダの読み込みに失敗しました: 無効な引数です」が表示された場合は、一つ前の手順に戻ってmkswapコマンドを実施してください。

下記のコマンドを実施してください。
🚨長いので、気をつけてください

```
[ec2-user@ip-172-31-25-189 ~]$ sudo sh -c 'echo "/swapfile1  none        swap    sw              0   0" >> /etc/fstab'　
```

これで完了


[参考になる記事：linux スワップ（swap）領域の作成](https://kazmax.zpp.jp/linux_beginner/mkswap.html#ah_2)

## gemのインストール

まずは、EC２にダウンロードしたWEB Appを開く

```
[ec2-user@ip-172-31-23-189 www]$ cd  /var/www（作成したディレクトリ）/アプリ名
```
Rubyのバージョンを確認する

```
[ec2-user@ip-172-31-23-189 <アプリ名>]$ ruby -v
```
指定したrubyのバージョンが表示されれば成功です。

```
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
```

### ローカル上のターミナルでbundlerのバージョンを確認する

EC2ではなく、ローカル環境のWEB Appを開き、下記コマンドを実施

```
$ bundler -v
```
するとバージョンが表示されます

```
Bundler version 2.0.2
```
これと同じバージョンをEC２で入れます。
🚨下記のバージョンをそのまま （2.0.1）を入れるとエラーが発生するので注意

```
[ec2-user@ip-172-31-23-189 <アプリ名>]$ gem install bundler -v 2.0.1
```
EC2でbundle installをして、gemをインストール

```
[ec2-user@ip-172-31-23-189 <アプリ名>]$ bundle install
```
エラーがなければ、gemのインストール完了です。


### エラーが発生した場合
下記のエラーが表示された場合、インストールするべき bundler -vが間違っています


```
Traceback (most recent call last):
	2: from /home/ec2-user/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
	1: from /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
```

エラーがある場合は、アプリ側の bundlerのバージョンを確認してください

```
$ bundler -v
＞Bundler version 2.0.2

[ec2-user@ip-172-31-23-189 <アプリ名>]$ bundler -v
＞Bundler version 2.0.1
＞バージョンが違うので、エラーがおきます
```

インストール完了後、下記の表示があった場合

```
Post-install message from chromedriver-helper:

  +--------------------------------------------------------------------+
  |                                                                    |
  |  NOTICE: chromedriver-helper is deprecated after 2019-03-31.       |
  |                                                                    |
  |  Please update to use the 'webdrivers' gem instead.                |
  |  See https://github.com/flavorjones/chromedriver-helper/issues/83  |
  |                                                                    |
  +--------------------------------------------------------------------+
```
gem'chromedriver-helper'のサポートが終了しているので、代わりとなるgem 'webdrivers'をインストールすることを推奨しているメッセージとなります。

```ruby
 group :test do
   # ...
-  gem 'chromedriver-helper'
+  gem 'webdrivers'
```

[参考記事](https://qiita.com/jnchito/items/f9c3be449fd164176efa)

## 次の記事

[はじめてAWSでデプロイする方法⑧（環境変数の設定）](https://qiita.com/mylevel/items/2ed53ba2b6f29dfea197)