LoginSignup
4
3

More than 3 years have passed since last update.

EC2の初期設定

Last updated at Posted at 2020-08-28

はじめに

「AWSのサーバーを利用する」ための手順を5つに分けて書いています。

記事は以下にまとめておりますのでご確認ください。

EC2の初期設定 ← イマココ
本番環境でデータベースを作成する
EC2のRailsを起動する
Webサーバーを設定する
デプロイを自動化する

AWSの環境構築

AWSアカウントにログインし、アカウントの隣にある「リージョン」を東京に設定。

EC2インスタンスを作成

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

AWSアカウントにログインし、トップページに遷移したら左上の「サービス」から「EC2」を選択
Image from Gyazo

「インスタンスを起動」をクリック
Image from Gyazo


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

「 Amazon Linux 2 AMI 」を選択
Image from Gyazo

次に、「EC2インスタンスのタイプ」を選択
今回は、無料枠で利用できる「t2.micro」を選択し、「確認と作成」をクリック
Image from Gyazo

画面遷移後、右下の「起動」をクリック


次に、「キーペア」というものをダウンロードします。
キーペアとは、インスタンスへログインする際に必要となる「秘密鍵」のこと

「新しいキーペアの作成」を選択して、キーペアの名前を入力
その後、「キーペアのダウンロード」をクリック
Image from Gyazo

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

右下の「インスタンスの表示」をクリックすると、「インスタンス一覧画面」に戻るので、
作成した「インスタンスID」をコピーしてメモアプリなどに控えておきます。
Image from Gyazo


サーバーを起動させる準備

さきほど作成した「EC2インスタンス」には、作成時にIPアドレスが自動で割り振られていますが、
サーバーを再起動させるたびにこのパブリックIPが変わってしまうという欠点があります。

これを解決してくれるのが「Elastic IP」です。

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

左側の「ネットワークセキュリティ」から「Elastic IP」をクリックし、
右上の「Elastic IPアドレスの割り当て」をクリック
Image from Gyazo

「画面が遷移したら、AmazonのIPv4アドレスプール」を選択し、「割り当て」をクリック

次に、「取得したElastic IPアドレス」と「EC2インスタンス」を紐付けます。

右上の「アクション」をクリックし、「Elastic IPアドレスの関連付け」を選択します
Image from Gyazo

画面が遷移したら、インスタンスの検索窓で、先ほどメモしたインスタンスを選択
「プライベートIPアドレス」は空欄のまま、右下の「関連付ける」をクリック
Image from Gyazo.

再びインスタンス一覧画面に戻り、作成したインスタンスの「Elastic IP」が設定されていることを確認してください。
画像右下に、「Elastic IP」が設定されています。
Image from Gyazo


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

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

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

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

EC2インスタンス一覧画面から作成したインスタンスを選択し、
「セキュリティグループ」のリンク(図中では「launch-wizard-1」)をクリック
Image from Gyazo

インスタンスの属するセキュリティグループの設定画面に遷移するので、
セキュリティグループに表示されている「launch-wizard-1」にチェックを入れる。
「インバウンドルール」をクリックし、右上の「インバウンドのルールの編集」をクリック。
Image from Gyazo

ページが切り替わるので、「ルールの追加」をクリック
タイプは「HTTP」を選択し、ポート番号等の情報を確認する。
カスタムの隣の虫眼鏡のマークから「0.0.0./0」を選択する。
選択後、もう一度虫眼鏡から「::/0」を選択する。

※既にある「sshの設定」がなくならないように注意

最後に、右下の「ルールを保存」を押し、ポートの開放が完了


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

EC2インスタンスを作成すると、「ec2-user」というユーザーと対応するssh秘密鍵が生成される。

ターミナルで以下のコマンドを実行

% cd ~
% mkdir ~/.ssh

# .sshというディレクトリを作成
# File existsとエラーが表示されたとしても、.sshディレクトリは存在している
% mv Downloads/ダウンロードした鍵の名前.pem .ssh/

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

# pemファイルが存在するか確認
% chmod 600 ダウンロードした鍵の名前.pem

# 「ダウンロードした鍵の名前」はダウンロードフォルダから探す
% ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスと紐付けたElastic IP

# 「作成したEC2インスタンスと紐付けたElastic IP」はAWSのインスタンスから確認する

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

EC2 Amazon Linux AMI

と、でかでかと表示されれば成功です。


設定に必要なツールのインストール

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

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

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

ターミナル(EC2内)で以下のコマンドを実行しパッケージをアップデート

[ec2-user@ip-***-**-**-*** ~]$ sudo yum -y update

次に、その他環境構築に必要なパッケージを諸々インストール(右に長いです)

[ec2-user@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

-yをつけています。
「-yオプション」とは、yumコマンドのオプションで、
「すべての問いにYesで自動的に答える」という設定してコマンドを実行します。
yum install などのコマンドでは、本当にインストールして良いのかを
[y/n](「Yes or No」の意味)が問われ流ので、それを省略できます。


続いて、EC2上でJavaScriptを動かすためにNode.jsというものをインストールします。

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

ターミナル(EC2内)で以下のコマンドを実行

[ec2-user@ip-***-**-**-*** ~]$ sudo curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
[ec2-user@ip-***-**-**-*** ~]$ sudo yum -y install nodejs

※確認画面が出てきた場合は「Y」を入力し、Enterキーを押してインストールを完了する。


Railsのバージョンが6.0以降のアプリケーションを動かすための準備

Railsのバージョンが6.0以降のアプリケーションを動かすために、Yarnをインストールする必要がある。

ターミナル(EC2内)で以下のコマンドを実行

[ec2-user@ip-***-**-**-*** ~]$ sudo yum -y install wget
[ec2-user@ip-***-**-**-*** ~]$ sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
[ec2-user@ip-***-**-**-*** ~]$ sudo yum -y install yarn

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

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

ターミナル(EC2内)で以下のコマンドを実行

# ①rbenvのインストール
[ec2-user@ip-***-**-**-*** ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv 

# ②パスを通す
[ec2-user@ip-***-**-**-*** ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile 

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

# ④.bash_profileの読み込み
[ec2-user@ip-***-**-**-*** ~]$ source .bash_profile

# ⑤ruby-buildのインストール
[ec2-user@ip-***-**-**-*** ~]$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

# ⑥rehashを行う
[ec2-user@ip-***-**-**-*** ~]$ rbenv rehash 

コマンドの役割
① gitから「rbenv」をクローン
②&③ パスを通す際に必要なコマンド
④ 設定したパスを読み込む
⑤ gitから「ruby-build」をクローン
⑥ 使用しているRubyのバージョンにおいて、gemのコマンドを使えるようにするために必要なコマンド


Rubyをインストール

以下で実行するコマンド群は、
「インストールするRubyのバージョン」
「自身のアプリケーションで使っているRubyのバージョン」
によって適宜変更してください。

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

ターミナル(EC2内)で以下のコマンドを実行

# Ruby 2.6.5のバージョンをインストール
[ec2-user@ip-***-**-**-*** ~]$ rbenv install 2.6.5

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

# rehashを行う
[ec2-user@ip-***-**-**-*** ~]$ rbenv rehash  

# Rubyのバージョンを確認
[ec2-user@ip-***-**-**-*** ~]$ ruby -v 

以上です。お疲れ様でした。

続きは → こちら

4
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
4
3