2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【AWS】EC2でのデプロイ(EC2の初期設定)

Last updated at Posted at 2021-06-19

目的

AWSのサーバーを利用し、Railsで作成したアプリを公開する。

開発環境

macOS: Big Sur
Rubyバージョン: 2.6.5
Railsバージョン: 6.0.0

前提

  • AWSにてアカウントが作成されている。

手順

  1. はじめに
  2. リージョンの確認
  3. EC2インスタンスの作成
  4. AMIの選択
  5. インスタンスタイプの選択
  6. キーペアの作成
  7. サーバー起動の準備
  8. Elastic IPの作成
  9. Elastic IPの紐付け
  10. EC2インスタンスの設定変更
  11. セキュリティグループのポート設定
  12. EC2インスタンスへログイン
  13. 必要なツールのインストール
  14. パッケージのアップデート
  15. Node.jsのインストール
  16. Yarnのインストール
  17. rbenvとruby-buildのインストール
  18. Rubyのインストール

はじめに

AWSのサーバーを利用し、アプリを公開していきますが、今回はまず「AWS内の環境構築」を行っていきます。
ここで行う設定は、AWSのアカウントを作成した際の一度きりの作業となるので、今後デプロイさせるために同じ作業を行う必要はありません。

リージョンの確認

それでは早速始めていきます!
まずは、AWSアカウントにルートユーザーでログインし、リージョンを確認します。

リージョンが東京となっていない場合は、メニューからアジアパシフィック(東京)ap-northeast-1を選択します。

EC2インスタンスの作成

続いて、EC2インスタンスを作成していきます。

ECインスタンスとは、AWSで仮想マシンと呼ばれるものです。サーバーを生成するといっても、AWSがすべてのサーバーを物理的に用意しているわけではなく、実際には仮想マシンと呼ばれるソフトウェアを利用して、仮想的に1つのLinuxサーバーを利用できる仕組みを利用します。

トップページ左上の「サービス」から「EC2」を選択し、オレンジ色の「インスタンスを起動」をクリックします。

EC2.png

AMIの選択

次に、AMIを選択します。

AMIとは、サーバーのデータをまるごと保存したデータのことです。この中には「OS」などが事前にインストールされているものもあるので、自分でゼロから様々なツールをインストールする手間を削減できます。

今回はAmazon Linux 2 AMIという、AWSが独自にカスタマイズしたAMIを利用します。

AMI.png

インスタンスタイプの選択

次に、EC2インスタンスのタイプを選択します。
EC2ではさまざまなインスタンスタイプが用意されており、CPUやメモリなどのスペックを柔軟に指定することができます。

今回は、無料枠で利用できるt2.microを選択して、「確認と作成」をクリックします。

インスタンスタイプ.png

次の画面では、「起動」をクリックします。

キーペアの作成

次に、キーペアというものをダウンロードします。
これは、インスタンスへログインする際に必要となる秘密鍵のことです。
これがないとEC2インスタンスにログインできないので、必ずダウンロードしてPCに保存しておきます。

「新しいキーペアの作成」を選択して、キーペア名を入力します。

キーペア.png

この時、キーペアの名前にスペースを含まないようにします。
キーペアのダウンロードが完了すると、クリック出来ない状態になっていた「インスタンスの作成」がクリックできるように変更されます。そちらをクリックして、EC2インスタンスを作成しましょう。

完了画面に遷移した後、「インスタンスの表示」をクリックします。
「インスタンス一覧画面」に戻るので、作成した「インスタンスID」をクリックします。
インスタンスの概要が表示されます。作成した「インスタンスID」はこの後使用するため、コピーしてメモアプリなどに控えておきます。

サーバー起動の準備

さきほど作成した「EC2インスタンス」には、作成時にIPアドレスが自動で割り振られています。これを「パブリックIP」と言います。しかし、サーバーを再起動させるたびにこのパブリックIPが変わってしまうという欠点を持っています。IPが変わってしまうということは、設定ファイル等をその都度書き換えなければいけません。これを解決してくれるのが「Elastic IP」です。

それでは実際に「Elastic IPの作成・紐付け」を行っていきます!

Elastic IPの作成

まずはElastic IPを取得するために、左側の選択欄から「Elastic IP」をクリックしましょう。画面の表示が変わったら「Elastic IP アドレスの割り当て」をクリックします。

画面が遷移したら、「Amazon の IPv4 アドレスプール」にチェックが入ってることを確認します。確認後、「割り当て」をクリックします。

Elastic IPの紐付け

「取得したElastic IPアドレス」と「EC2インスタンス」を紐付けします。
まずは、右上にある「アクション」をクリックし、表示されたプルダウンから「Elastic IP アドレスの関連付け」を選択します!

画面が遷移したら、インスタンスにチェックが入っていることを確認しましょう。
次に、その下にあるインスタンスの入力欄をクリックすると、メモしたインスタンスIDが表示されるので、表示されたインスタンスIDを選択します。
「最後に関連付ける」をクリックします。
再びインスタンス一覧画面に戻り、作成したインスタンスの「Elastic IP」が設定されていることを確認します。

EC2インスタンスの設定変更

続いてECインスタンスの設定変更を行っていきます!
立ち上げたばかりのEC2インスタンスはsshでアクセスすることはできますが、HTTPなどの他の接続は一切つながらないようになっています。そのため、サーバーとして利用するEC2インスタンスは事前にHTTPがつながるようにポートを開放する必要があります。

sshは、離れた場所にあるサーバーの中で作業を行いたい場合に利用します。暗号や認証の技術を利用して、安全にリモートサーバーと通信できます。

ポートとは、1つのサーバーとクライアントを繋ぐ仕組みです。ポートにはそれぞれ番号が割り振られており、リクエスト側はポート番号を指定すれば該当する番号のポートに接続されます。
ポート番号には「0〜65535」までを使うことができます。しかし、「0〜1023」までの番号はよく使われるもので基本的なインターネット接続などのポートとして予約されており、自由に使うことはできません。

このポートの設定をするためには、セキュリティグループという設定を変更する必要があります。

セキュリティグループとは、EC2インスタンスが属するまとまりのようなもので、複数のEC2インスタンスのネットワーク設定を一括で行うためのものです。

それでは実際にポートを設定していきます!

セキュリティグループのポート設定

以下の手順で、セキュリティグループのポートを設定します。

まず、インスタンスの概要画面下部にある、「セキュリティ」のタブをクリックします。表示が変わったらセキュリティグループの下にある文字列をクリックします。
すると、インスタンスの属するセキュリティグループの設定画面に遷移します。
次に、「インバウンドルール」をクリックし、右上の「インバウンドのルールの編集」をクリックします。
ページが切り替わるので、「ルールの追加」をクリックし、タイプ「HTTP」のポート範囲「80」を追加します。
最後に、右下の「ルールを保存」を押して、ポートの開放は完了です。

EC2インスタンスへログイン

EC2インスタンスを作成すると、「ec2-user」というユーザーと対応するssh秘密鍵が生成されました。本来はこのec2-userではなく、サービスを稼働させるためにより権限を小さくしたユーザーを作成して運用しますが、ここでは簡易化のためにこの「ec2-user」を使って作業を進めていきます。

それでは「ec2-user」を使ってログインします。

ターミナル
% cd ~

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

ターミナル
% mkdir ~/.ssh

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

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

pemファイルが存在するか確認します。

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

ssh接続(以下のコマンド)を実行すると以下の様なメッセージが表示されることがありますが、「yes」と入力し、実行してください。

ターミナル
% 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接続は、一定時間操作をせずにいるとタイムアウトしてしまいます。その場合は、「ssh -i 〜」のコマンドを再度実行することでサーバーに接続できます。

必要なツールのインストール

ここからは、EC2インスタンスの環境構築をするためにさまざまなツールをインストールします。
まずはyumコマンドというコマンドを使ってこのサーバに元々あるプログラムをアップデートします。

yumコマンドとは、Linuxにおけるソフトウェア管理の仕組みです。MacOSにとってのhomebrewと同じ役割を果たします。yumコマンドを利用することで、yumの管理下にあるプログラムのバージョンを管理したり、一括でアップデートしたりできます。

パッケージのアップデート

ターミナル(EC2内)
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y update

次に、その他環境構築に必要なパッケージを諸々インストールします。

ターミナル(EC2内)
[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オプションとは、yumコマンドのオプションです。
yum install などのコマンドでは、本当にインストールして良いのか [y/n](「Yes or No」の意味)が問われます。
この場合、「Y(Yesのイニシャル)」を入力し、Enterキーを押して実行すればインストールされます。しかし、誤ってYキー以外を押してしまう場合もあります。 ここでは確実にインストールするために、あらかじめオプションで「-y」を設定する事で「すべての問いにYesで自動的に答える」という設定してコマンドを実行しています。
無事に入力画面に戻れば、インストール完了です。

Node.jsのインストール

続いて、EC2上でJavaScriptを動かすためにNode.jsというものをインストールします。
Node.jsとは、サーバーサイドで動くJavaScriptのパッケージのことです。今後のデプロイに向けた作業の中で、CSSや画像を圧縮する際に活用されます。

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

これでNode.jsのインストールができました!

Yarnのインストール

Railsのバージョンが6.0以降のアプリケーションを動かすために、Yarnをインストールします。
Yarnとは、Railsに搭載されているJavaScriptのパッケージを管理するためのパッケージマネージャーです。

ターミナルで以下のコマンドを実行してインストールします。

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

Yarnのインストールは以上です!

rbenvとruby-buildのインストール

続いては、rbenvruby-buildをインストールします。
これらはRubyをインストールする前に、インストールする必要があり、Rubyのバージョンを管理する際に組み合わせて使うツールになります。

ターミナルで以下のコマンドを実行してインストールします。

gitからrbenvをクローンします。

ターミナル(EC2内で実行)
[ec2-user@ip-172-31-25-189 ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

パスを通す(どのディレクトリからもアプリケーションを呼び出せる状態にする)ために必要なコマンドです。

ターミナル(EC2内で実行)
[ec2-user@ip-172-31-25-189 ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
ターミナル(EC2内で実行)
[ec2-user@ip-172-31-25-189 ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

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

ターミナル(EC2内で実行)
[ec2-user@ip-172-31-25-189 ~]$ source .bash_profile

gitからruby-buildをクローンします。

ターミナル(EC2内で実行)
[ec2-user@ip-172-31-25-189 ~]$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

使用しているRubyのバージョンにおいて、gemのコマンドを使えるようにするために必要なコマンドです。

ターミナル(EC2内で実行)
[ec2-user@ip-172-31-25-189 ~]$ rbenv rehash

これでrbenvruby-buildのインストールは完了です!

Rubyのインストール

最後はRubyをインストールします。
今回は「2.6.5」をインストールしていきます。

Ruby 2.6.5のバージョンをインストール

ターミナル(EC2内で実行)
[ec2-user@ip-172-31-25-189 ~]$ rbenv install 2.6.5

EC2インスタンス内で使用するRubyのバージョンを決める

ターミナル(EC2内で実行)
[ec2-user@ip-172-31-25-189 ~]$ rbenv global 2.6.5

rehashを行う

ターミナル(EC2内で実行)
[ec2-user@ip-172-31-25-189 ~]$ rbenv rehash

Rubyのバージョンを確認

ターミナル(EC2内で実行)
[ec2-user@ip-172-31-25-189 ~]$ ruby -v

以上でRubyのインストールが完了しました!

最後に

かなり長くなりましたが、以上で初期設定は完了です。
次回はデータベースの設定です。【AWS】EC2でのデプロイ(データベースの設定)
では。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?