##はじめに
「AWSのサーバーを利用する」ための手順を5つに分けて書いています。
記事は以下にまとめておりますのでご確認ください。
①EC2の初期設定 ← イマココ
②本番環境でデータベースを作成する
③EC2のRailsを起動する
④Webサーバーを設定する
⑤デプロイを自動化する
##AWSの環境構築
AWSアカウントにログインし、アカウントの隣にある「リージョン」を東京に設定。
##EC2インスタンスを作成
EC2インスタンスとは、AWSで「仮想マシン」と呼ばれるもの。
「サーバーを生成する」といっても、AWSがすべてのサーバーを物理的に用意しているわけではなく、
実際には「仮想マシン」と呼ばれるソフトウェアを利用して、仮想的に1つのLinuxサーバーを利用できる仕組みを利用する。
AWSアカウントにログインし、トップページに遷移したら左上の「サービス」から「EC2」を選択
次に、「AMI」というものを選択します。
AMIとは、「Amazon Machine Image」の略語で、サーバーのデータをまるごと保存したデータのこと。
この中には「OS」などが事前にインストールされているものもあるので、自分でゼロから様々なツールをインストールする手間を削減できる。
次に、「EC2インスタンスのタイプ」を選択
今回は、無料枠で利用できる「t2.micro」を選択し、「確認と作成」をクリック
画面遷移後、右下の「起動」をクリック
次に、「キーペア」というものをダウンロードします。
キーペアとは、インスタンスへログインする際に必要となる「秘密鍵」のこと
「新しいキーペアの作成」を選択して、キーペアの名前を入力
その後、「キーペアのダウンロード」をクリック
キーペアのダウンロードが完了すると、クリック出来ない状態になっていた
「インスタンスの作成」がクリックできるように変更される。
そちらをクリックして、EC2インスタンスを作成します。すると完了画面に遷移します。
右下の「インスタンスの表示」をクリックすると、「インスタンス一覧画面」に戻るので、
作成した「インスタンスID」をコピーしてメモアプリなどに控えておきます。
##サーバーを起動させる準備
さきほど作成した「EC2インスタンス」には、作成時にIPアドレスが自動で割り振られていますが、
サーバーを再起動させるたびにこのパブリックIPが変わってしまうという欠点があります。
これを解決してくれるのが「Elastic IP」です。
Elastic IPとは、AWSから割り振られた固定の「パブリックIPアドレス」のこと。
このパブリックIPアドレスをEC2インスタンスに紐付けることで、インスタンスの起動・停止にかかわらず
常に同じIPアドレスで通信をすることが可能になります。
左側の「ネットワークセキュリティ」から「Elastic IP」をクリックし、
右上の「Elastic IPアドレスの割り当て」をクリック
「画面が遷移したら、AmazonのIPv4アドレスプール」を選択し、「割り当て」をクリック
次に、「取得したElastic IPアドレス」と「EC2インスタンス」を紐付けます。
右上の「アクション」をクリックし、「Elastic IPアドレスの関連付け」を選択します
[]
(https://gyazo.com/4f12c9f892752cb684b6296f9dd02669)
画面が遷移したら、インスタンスの検索窓で、先ほどメモしたインスタンスを選択
「プライベートIPアドレス」は空欄のまま、右下の「関連付ける」をクリック
.
再びインスタンス一覧画面に戻り、作成したインスタンスの「Elastic IP」が設定されていることを確認してください。
画像右下に、「Elastic IP」が設定されています。
##EC2インスタンスの設定変更
立ち上げたばかりのEC2インスタンスは「ssh」でアクセスすることはできるが、
HTTPなどの他の接続は一切つながらないようになっている。
そのため、サーバーとして利用するEC2インスタンスは、
事前にHTTPがつながるように「ポート」を開放する必要がある。
「ssh」は、離れた場所にあるサーバーの中で作業を行いたい場合に利用。
暗号や認証の技術を利用して、安全にリモートサーバーと通信できる。
###セキュリティグループのポートを設定
EC2インスタンス一覧画面から作成したインスタンスを選択し、
「セキュリティグループ」のリンク(図中では「launch-wizard-1」)をクリック
インスタンスの属するセキュリティグループの設定画面に遷移するので、
セキュリティグループに表示されている「launch-wizard-1」にチェックを入れる。
「インバウンドルール」をクリックし、右上の「インバウンドのルールの編集」をクリック。
ページが切り替わるので、「ルールの追加」をクリック
タイプは「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
以上です。お疲れ様でした。
続きは → こちら