0
1

More than 3 years have passed since last update.

AWSでアプリをデプロイする方法(EC2の初期設定編)

Posted at

EC2インスタンスを理解し、初期設定をするところまでを紹介します!(学習記録):sunrise:

EC2インスタンスとは

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

1: EC2インスタンスを作成(Rails仕様)

1.AWSのトップページに移り、画面左上のサービスという欄からEC2を選択しインスタンスを起動をクリック!

2.次にAMIを選択します。無料枠で利用できるAmazon Linux 2 AMIを利用します!
AMIとは、「Amazon Machine Image」の略語で、サーバーのデータをまるごと保存したデータのことです。この中には「OS」などが事前にインストールされているものもあるので、自分でゼロから様々なツールをインストールする手間を削減できます。

3.EC2インスタンスのタイプを選択します。無料枠で利用できる t2.micro を選択します!
EC2ではさまざまなインスタンスタイプが用意されており、CPUやメモリなどのスペックを柔軟に指定することができます。選択できたら、確認と作成をクリック!次の画面で起動をクリック!

4.キーペアをダウンロード
新しいキーペアを選択して、キーペアをダウンロードをクリック!その後にインスタンスを作成をクリックします!その後インスタンス一覧画面に移動し、作成したインスタンスがあることを確認してみてください!
その後、そのインスタンスをクリックし、インスタンスIDをコピーしましょう!
キーペアとはインスタンスへログインする際に必要となる「秘密鍵」のことです。
これがないとEC2インスタンスにログインできないので、必ずダウンロードしてPCに保存しておきましょう。また、間違って他人に渡さないよう気をつけてください。

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

・Elastic Ip

AWSから割り振られた固定の「パブリックIPアドレス」のことを言います。このパブリックIPアドレスをEC2インスタンスに紐付けることで、インスタンスの起動・停止にかかわらず常に同じIPアドレスで通信をすることが可能になります。

サイドバーにあるElastic IPという項目をクリック!そして、Elastic IPアドレスの割り当てをクリックします!画面が遷移したら、「Amazon の IPv4 アドレスプール」にチェックが入ってることを確認しましょう。確認後、「割り当て」をクリックします。

.Elastic IPの紐付け
「取得したElastic IPアドレス」と「EC2インスタンス」を紐付けましょう。まずは、右上にある「アクション」をクリックします。表示されたプルダウンから「Elastic IP アドレスの関連付け」を選択しましょう。
アクションという項目をクリックし、Elastic IPアドレスの関連付けをクリックしましょう!
画面が遷移したら、インスタンスにチェックが入っていることを確認しましょう。次に、そのしたにあるインスタンスの入力欄をクリックすると、メモしたインスタンスIDが表示されます。表示されたインスタンスIDを選択しましょう。その下の入力欄は、空欄で大丈夫です。最後に「関連付ける」をクリックしましょう。

・Elastic IPが設定されているか確認
再びインスタンス一覧画面に戻り、作成したインスタンスの「Elastic IP」が設定されていることを確認しましょう。
以降、このIPアドレスはあなたの所有物のようになり、意図的にAWSに返却しない限り、変更されることはありません。

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

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

・ssh

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

・ポート

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

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

.セキュリティグループ

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

・実際にセキュリティグループのポートを設定
まず、インスタンスの概要画面下部にある、「セキュリティ」のタブをクリックします。表示が変わったらセキュリティグループの下にある文字列をクリックしましょう!
すると、インスタンスの属するセキュリティグループの設定画面に遷移します。
次に、「インバウンドルール」をクリックし、右上の「インバウンドのルールの編集」をクリックします。
ルールを追加します!例えば タイプ:HTTP、プロトコル:TCP,ポート範囲:80,送信元:カスタム/0.0.0.0/0などがあります!
追加したらルールを保存をクリック!以上で、ポートの開放が完了です!

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/

# sshディレクトリに移動
% cd .ssh/

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

# 「ダウンロードした鍵の名前」はFinderのダウンロードフォルダから探しましょう(見つからない場合は他のフォルダを探しましょう)
% chmod 600 ダウンロードした鍵の名前.pem

# 「作成したEC2インスタンスと紐付けたElastic IP」は、ご自身のものに編集しましょう
# サイドバーから、インスタンスという項目をクリックし、下部にある説明のなかのElastic IP をコピー
% ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスと紐付けたElastic IP

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

・まずはyumコマンドというコマンドを使ってこのサーバに元々あるプログラムをアップデートします。こうしたプログラムをパッケージと呼びます。

・yumコマンドとは

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

・パッケージとは

「パッケージ」とは、LinuxOS下におけるある役割/機能をもったプログラムの集合のことです。「ソフトウェア」や「ライブラリ」とも呼べます。
あくまでもLinuxOSでは「ある役割/機能をもったプログラムの集合のことをパッケージと呼ぶよ」ということです。

パッケージをアップデート
# ターミナル(EC2で実行)
[ec2-user@<自身のElastic IP> ~]$ sudo yum -y update

# 次に、その他環境構築に必要なパッケージを諸々インストールします
[ec2-user@<自身のElastic IP> ~]$ 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

EC2でJavaScriptを動かすための準備

・Node.js

「Node.js」とは、サーバーサイドで動くJavaScriptのパッケージのことです。今後のデプロイに向けた作業の中で、CSSや画像を圧縮する際に活用されます。

EC2にNode.jsをインストール
[ec2-user@<自身のElastic IP> ~]$ sudo curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
[ec2-user@<自身のElastic IP> ~]$ sudo yum -y install nodejs

これで、「Node.js」のインストールは以上です。

・Yarn

「Yarn」とは、Railsに搭載されているJavaScriptのパッケージを管理するためのパッケージマネージャーです。

EC2にYarnをインストール
[ec2-user@<自身のElastic IP> ~]$ sudo yum -y install wget
[ec2-user@<自身のElastic IP> ~]$ sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
[ec2-user@<自身のElastic IP> ~]$ sudo yum -y install yarn

これで、「Yarn」のインストールは以上です。

EC2にrbenvとruby-buildをインストールします!
# ①rbenvのインストール
[ec2-user@<自身のElastic IP> ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv 

# ②パスを通す
[ec2-user@<自身のElastic IP> ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile 

# ③rbenvを呼び出すための記述
[ec2-user@<自身のElastic IP> ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

# ④.bash_profileの読み込み
[ec2-user@<自身のElastic IP> ~]$ source .bash_profile

# ⑤ruby-buildのインストール
[ec2-user@<自身のElastic IP> ~]$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

# ⑥rehashを行う
[ec2-user@<自身のElastic IP> ~]$ rbenv rehash  
最後にEC2にRubyをインストール

ここでは「2.6.5」をインストールしていきます。

# Ruby 2.6.5のバージョンをインストール
[ec2-user@<自身のElastic IP> ~]$ rbenv install 2.6.5

# EC2インスタンス内で使用するRubyのバージョンを決める
[ec2-user@<自身のElastic IP> ~]$ rbenv global 2.6.5

# rehashを行う
[ec2-user@<自身のElastic IP> ~]$ rbenv rehash  

# Rubyのバージョンを確認
[ec2-user@<自身のElastic IP> ~]$ ruby -v 

以上がEC2の初期設定(Rails仕様)になります!参考までにどうぞ!

0
1
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
0
1