実践で学ぶRuby on rails 〜仮説千本ノック〜

プログラマーとして独立するため日々スキルアップに励んでいます。優れたプログラマは仮説を立てるのがうまい。そこを目指して仮説を立てては検証する日々です!!

AWSを使ったデプロイ~EC2メモリ拡張・bundlerのインストール~

 EC2の無料枠は、処理速度を決めるメモリが貧弱であり、gemのインストール時等にエラーが発生する可能性があるため、メモリを増強する必要があります。

 

メモリの増強(Swap領域の用意)

パソコンが処理を行う際、メモリに一時的に処理内容が記録されるが、処理が多く、容量オーバーになるとエラーで処理が止まります。そこで、容量がオーバーしそうになった時、容量を一時的に増やすことができるSwapファイルを作成し、mkswapコマンドによりSwap領域とします。

 

例えば、10GBメモリで6GBのプログラムを動かしているとして、1GB使っていない部分があったら、その部分をファイルとして別の場所に保管しておく。すると、その間は、そのファイル化した部分のメモリは1GB空いた状態として、他の用途に使うことができる。

6GBのプログラムといっても、実際には常にフルにメモリを使うわけではなく、空いてる時間があれば、他に回すことができます。

 

Swapファイルの作成

[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) コピーされました、 7.35077 秒、 73.0 MB/秒

※ddコマンドにより、ifのファイルを、ofのファイルへ、bsの単位で、countの回数コピーを繰り返す。

スワップファイルのサイズ=bs×count

 

スワップファイルの権限を設定する。自分は閲覧、書き込み、仲間、他人には何もさせない。

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

Swap領域の作成

[ec2-user@ip-172-31-25-189 ~]$ sudo mkswap /swapfile1
# 以下のように表示されれば成功
スワップ空間バージョン1を設定します、サイズ = 524284 KiB
ラベルはありません, UUID=74a961ba-7a33-4c18-b1cd-9779bcda8ab1

 

作成したSwap領域を有効にする

[ec2-user@ip-172-31-25-189 ~]$ sudo swapon /swapfile1
 
次回システム起動時に、Swap領域が有効になるよう、fstabファイルに設定を追加する。
[ec2-user@ip-172-31-25-189 ~]$ sudo sh -c 'echo "/swapfile1  none        swap    sw              0   0" >> /etc/fstab'

 

GIthubからEC2へクローンしたアプリを起動するために必要なgemのインストール

 まずは、そもそも、本番環境に想定しているバージョンのRubyがインストールされているか確認する。

[ec2-user@ip-172-31-23-189 www]$ cd  /var/www/chat-space
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ ruby -v
ruby 2.5.1p112 (2016-04-26 revision 54768) [x86_64-linux]

 

次に、gemをインストールする前に、gem管理のbundlerをインストールする。

ローカルの開発環境で使用していたbundlerのバージョンに合わせるので、まずはローカルでどのバージョンか確認する。

$ bundler -v
Bundler version 2.0.1
# 開発環境によってバージョンは異なります。

 

では、同じバージョンのものをEC2インスタンスにもインストールし、そのbundlerを使って一度bundle installしておく。

[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ gem install bundler -v 2.0.1
# ローカルで確認したbundlerのバージョンを導入する
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ bundle install
# 上記コマンドは、数分以上かかる場合もあります。