AWS (EC2の初期設定)
AWS内の環境構築
ここで行う設定は、AWSのアカウントを作成した際の一度きりの作業となります。なので、今後別のサービスをデプロイさせるために同じ作業を行う必要はありません。
リージョンを確認しましょう
リージョンが東京となっていない場合は、ユーザー名をクリックした後に表示されるメニューから「アジアパシフィック(東京)ap-northeast-1」を選択しましょう。
ページを更新した際に、「東京」と表示されていれば、正しく設定できています。
あるリージョンで作成したEC2や他の設定は、他のリージョンでは表示されないので注意しましょう。
続いて、「EC2インスタンス」を作成します
EC2インスタンス
AWSで「仮想マシン」と呼ばれるものです。「サーバーを生成する」といっても、AWSがすべてのサーバーを物理的に用意しているわけではなく、実際には「仮想マシン」と呼ばれるソフトウェアを利用して、仮想的に1つのLinuxサーバーを利用できる仕組みを利用します。
EC2インスタンスを作成しよう
それでは実際に作成しましょう。
EC2インスタンス作成の作業が2回目以降の方は、費用が発生する場合があります。こちらのカリキュラムを確認してください。
EC2インスタンスを作成しましょう
トップページに遷移したら、左上の「サービス」から「EC2」を選択しましょう。
以下の画像のようにオレンジ色の「インスタンスを起動」をクリックします。クリック後、プルダウンで「インスタンスを起動」と表示されるので、クリックしましょう。
次に、「AMI」というものを選択します。
AMI
AMIとは、「Amazon Machine Image」の略語で、サーバーのデータをまるごと保存したデータのことです。この中には「OS」などが事前にインストールされているものもあるので、自分でゼロから様々なツールをインストールする手間を削減できます。
AMIを選択しましょう
今回は「 Amazon Linux AMI 2 」という、AWSが独自にカスタマイズしたAMIを利用しましょう。
「 Amazon Linux AMI 」ではなく、「 Amazon Linux 2 AMI 」を選択してください。
次に、「EC2インスタンスのタイプ」を選択します。
EC2ではさまざまなインスタンスタイプが用意されており、CPUやメモリなどのスペックを柔軟に指定することができます。
インスタンスタイプを選択しましょう
今回は、無料枠で利用できる「t2.micro」を選択して、「確認と作成」をクリックしましょう。
次の画面では、「起動」をクリックします。
次に、「キーペア」というものをダウンロードします。
キーペア
インスタンスへログインする際に必要となる「秘密鍵」のことです。
これがないとEC2インスタンスにログインできないので、必ずダウンロードしてPCに保存しておきましょう。また、間違って他人に渡さないよう気をつけてください。
キーペア名を決めて、ダウンロードしましょう
「新しいキーペアの作成」を選択して、キーペア名を入力しましょう。キーペアの名前はご自身で決めて大丈夫です。
キーペアの名前にスペースを含まないようにしましょう。この後の作業でエラーが発生する可能性があります。
キーペアのダウンロードが完了すると、クリック出来ない状態になっていた「インスタンスの作成」がクリックできるように変更されます。そちらをクリックして、EC2インスタンスを作成しましょう。
すると以下のような完了画面に遷移します。「インスタンスの表示」をクリックしましょう。
インスタンス作成の確認をしましょう
「インスタンス一覧画面」に戻るので、「インスタンスID」列の一番上をクリックしましょう。
以下の画面にインスタンスの概要が表示されています。作成した「インスタンスID」をコピーしてメモアプリなどに控えておきましょう。
サーバーを起動させる準備をしよう
さきほど作成した「EC2インスタンス」には、作成時にIPアドレスが自動で割り振られています。これを「パブリックIP」と言います。しかし、サーバーを再起動させるたびにこのパブリックIPが変わってしまうという欠点を持っています。IPが変わってしまうということは、設定ファイル等をその都度書き換えなければいけません。これを解決してくれるのが「Elastic IP」です。
Elastic IP
AWSから割り振られた固定の「パブリックIPアドレス」のことを言います。このパブリックIPアドレスをEC2インスタンスに紐付けることで、インスタンスの起動・停止にかかわらず常に同じIPアドレスで通信をすることが可能になります。
それでは実際に「Elastic IPの作成・紐付け」を行いましょう。
Elastic IPの作成をしましょう
まずはElastic IPを取得するために、左側の選択欄から「Elastic IP」をクリックしましょう。画面の表示が変わったらオレンジで表示されている「Elastic IP アドレスの割り当て」をクリックします。
画面が遷移したら、「Amazon の IPv4 アドレスプール」にチェックが入ってることを確認しましょう。確認後、「割り当て」をクリックします。
Elastic IPの紐付けをしましょう
「取得したElastic IPアドレス」と「EC2インスタンス」を紐付けましょう。まずは、右上にある「アクション」をクリックします。表示されたプルダウンから「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インスタンスのネットワーク設定を一括で行うためのものです。
それでは実際にポートを設定しましょう。
セキュリティグループのポートを設定しましょう
以下の手順で、セキュリティグループのポートを設定しましょう。
まず、インスタンスの概要画面下部にある、「セキュリティ」のタブをクリックします。表示が変わったらセキュリティグループの下にある文字列をクリックしましょう。図中では「launch-wizard-1」と文字列の最後にあります。2回目以降のセキュリティグループの設定では、「launch-wizard-2」となり設定ごとに数字が増えていきます。
すると、インスタンスの属するセキュリティグループの設定画面に遷移します。
次に、「インバウンドルール」をクリックし、右上の「インバウンドのルールの編集」をクリックします。
「アウトバウンド」と間違えないように注意しましょう。
ページが切り替わるので、「ルールの追加」をクリックし、画像の①~⑦の手順通りに設定しましょう。
ルールの詳細は以下です。
タイプ | プロトコル | ポート範囲 | 送信元 |
---|---|---|---|
HTTP | TCP | 80 | カスタム/0.0.0.0/0 |
HTTP | TCP | 80 | カスタム::/0 |
「0.0.0.0」や「::/0」は「すべてのアクセスを許可する」という意味です。
既にある「sshの設定」がなくならないように注意しましょう。
最後に、右下の「ルールを保存」を押します。
以上で、ポートの開放が完了です。
EC2インスタンスへログインしよう
EC2インスタンスを作成すると、「ec2-user」というユーザーと対応するssh秘密鍵が生成されました。本来はこのec2-userではなく、サービスを稼働させるためにより権限を小さくしたユーザーを作成して運用しますが、ここでは簡易化のためにこの「ec2-user」を使って作業を進めていきます。
それでは「ec2-user」を使ってログインしましょう。
EC2インスタンスへログインしましょう
1 |
% cd ~ |
1 2 3 4 |
1 2 3 4 |
1 |
% cd .ssh/ |
1 2 3 |
% ls # pemファイルが存在するか確認しましょう |
1 2 3 |
% chmod 600 ダウンロードした鍵の名前.pem # 「ダウンロードした鍵の名前」はFinderのダウンロードフォルダから探しましょう(見つからない場合は他のフォルダを探しましょう) |
1 2 3 |
ssh接続(以下のコマンド)を実行すると以下の様なメッセージが表示されることがありますが、「yes」と入力し、実行してください。
1 2 3 4 5 6 |
ターミナルのコマンド待ちの際の左側の表示が、以下の画像のようになればログイン成功です。
ssh接続は、一定時間操作をせずにいるとタイムアウトしてしまいます。その場合は、「ssh -i 〜」のコマンドを再度実行することでサーバーに接続できます。
「ssh -i 〜」のコマンドは頻繁に使うので、メモアプリなどに控えておきましょう。
必要なツールのインストール
ここからは、EC2インスタンスの環境構築をするためにさまざまなツールをインストールします。それでは順に進めていきましょう。
設定に必要なツールをインストールしよう
まずはyumコマンドというコマンドを使ってこのサーバに元々あるプログラムをアップデートします。こうしたプログラムをパッケージと呼びます。
yumコマンド
「yumコマンド」とは、Linuxにおけるソフトウェア管理の仕組みです。MacOSにとってのhomebrewと同じ役割を果たします。yumコマンドを利用することで、yumの管理下にあるプログラムのバージョンを管理したり、一括でアップデートしたりできます。
パッケージ
「パッケージ」とは、LinuxOS下におけるある役割/機能をもったプログラムの集合のことです。「ソフトウェア」や「ライブラリ」とも呼べます。
あくまでもLinuxOSでは「ある役割/機能をもったプログラムの集合のことをパッケージと呼ぶよ」ということです。
パッケージをアップデートしましょう
ターミナルで以下のコマンドを実行しましょう。
1 |
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y update |
次に、その他環境構築に必要なパッケージを諸々インストールします。
1 |
[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オプション」とは、yumコマンドのオプションです。yum install などのコマンドでは、本当にインストールして良いのか [y/n](「Yes or No」の意味)が問われます。
この場合、「Y(Yesのイニシャル)」を入力し、Enterキーを押して実行すればインストールされます。しかし、誤ってYキー以外を押してしまう場合もあります。 ここでは確実にインストールするために、あらかじめオプションで「-y」を設定する事で「すべての問いにYesで自動的に答える」という設定してコマンドを実行しています。
もし誤ってオプションを忘れてしまうと下記のような問いが発生しますので、「Y」を入力し、Enterキーを押してインストールを完了してください。
1 2 |
総ダウンロード容量: 120 M Is this ok [y/d/N]: |
無事に入力画面に戻れば、インストール完了です。
EC2上でJavaScriptを動かすための準備をしよう
続いて、EC2上でJavaScriptを動かすためにNode.jsというものをインストールします。
Node.js
「Node.js」とは、サーバーサイドで動くJavaScriptのパッケージのことです。今後のデプロイに向けた作業の中で、CSSや画像を圧縮する際に活用されます。
EC2にNode.jsをインストールしましょう
ターミナルで以下のコマンドを実行します。
1 2 |
[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 |
こちらも確認画面が出てきた場合は「Y」を入力し、Enterキーを押してインストールを完了して下さい。
「Node.js」のインストールは以上です。
Railsのバージョンが6.0以降のアプリケーションを動かすための準備をしよう
Railsのバージョンが6.0以降のアプリケーションを動かすために、Yarnをインストールします。
Yarn
「Yarn」とは、Railsに搭載されているJavaScriptのパッケージを管理するためのパッケージマネージャーです。
EC2にYarnのインストールをしましょう
ターミナルで以下のコマンドを実行してインストールします。
それでは順に実行しましょう。
1 2 3 |
「Yarn」のインストールは以上です。
rbenvとruby-buildをインストールしよう
続いては、「rbenv」と「ruby-build」をインストールします。
これらはRubyをインストールする前に、インストールする必要があり、Rubyのバージョンを管理する際に組み合わせて使うツールになります。
EC2にrbenvとruby-buildをインストールしましょう
ターミナルで以下のコマンドを実行してインストールします。
それでは順に実行しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# ①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のコマンドを使えるようにするために必要なコマンドです。 |
「rbenv」と「ruby-build」のインストールは以上です。
Rubyをインストールしよう
最後は「Ruby」をインストールします。
以下で実行するコマンド群は、「インストールするRubyのバージョン」「自身のアプリケーションで使っているRubyのバージョン」によって適宜変更してください。
ここでは「2.6.5」をインストールしていきます。
EC2にRubyをインストールしましょう
それでは順に実行しましょう。
1 2 3 4 5 6 7 8 9 10 11 |
1つ目のコマンドで、Rubyのインストールには時間がかかります。ターミナルに「Installing ruby-2.6.5...」といった表示が出たまま止まって見えますが、そのまま待ちましょう。
「Ruby」のインストールは以上です。