
AWS入門 EC2で作るウェブサーバー
ウェブサイトやウェブサービスを公開する場合、「ウェブサーバー」が必要になります。通常は、レンタルサーバーなどを準備することが多いのですが、近年注目されているのがクラウドサーバーと呼ばれるサーバー製品で、特に米Amazonが提供する「Amazon Web Services(AWS)」は、多くのウェブサイトで利用されています。
ここでは、そんなAWSの基本とAWSの一機能である「EC2」を利用して、ウェブサイトを公開するところまでを紹介していきます。また合わせて、サーバーのしくみやドメイン、DNS、IPアドレスといったネットワークの基本についても紹介していきましょう。
AWSをはじめよう
AWSをはじめとした「クラウドサーバー」とはなんでしょう。サーバーには、次のような種類があります。
共用サーバー(レンタルサーバー)

一般的に「レンタルサーバー」と言われる、レンタル方式のサーバー。1台のサーバーコンピューターを、複数のユーザーに区分けをしてレンタルをするため、非常に安く利用でき、500円程度から利用できるサーバーもあります。
ただし、利用できる機能には制限があり、拡張性もないためサイトの規模が変わったときなどは契約をしなおす必要があります。
専用サーバー・オンプレミスサーバー
コンピューターを1台丸ごと利用する方式で、実際のサーバーコンピューターを購入してサーバールームなどで運用する「オンプレミス」や、コンピューターの調達や設定、保守などを専門業者に依頼する「専用サーバーレンタルサービス」などがあります。
自由度が高い代わりに非常に高額です。
VPS(Virtual Private Server)

共用サーバーと専用サーバーの間を取ったもので、1台のサーバーを仮想サーバーで区分けをし、各ユーザーにレンタルする方法です。共用サーバーと違って、サーバーの設定なども比較的自由に行えるのが特徴です。
そして、ここに登場したのがクラウドサーバーです。クラウドサーバーの特徴は、専用サーバーとVPSを組み合わせたようなもので、複数のコンピューターが複数の仮想環境に分けられていて、専用サーバーと同じように各ユーザーが区分けされた環境を利用できます。
利用するメモリ量やストレージの容量などを、かなり柔軟に設定でき、運用中でも設定を変更することができます。アクセスが集中するときにだけ、サーバーの性能あげるといった使い方もできます。
クラウドサーバーの種類
クラウドサーバーと言えば、今回紹介するAWSが最もメジャーですが、その後各社からさまざまなサービスが登場しています。
Microsoft Azure

Microsoftが運営するクラウドサーバーで、特に大企業などの法人利用が活発です。
Google Cloud Platform

Googleが運営するクラウドサーバー。Googleアカウントを利用したログインが可能になるなど、Googleの各種サービスと密接に連携しています。ただし、使い方はAWSなどに比べると若干特殊な部分があります。
この他にも、日本の企業が運営するクラウドサーバーなどもあります。
AWSのアカウントを作成しよう
それでは、早速AWSを使ってみましょう。AWSの利用には、Amazonのアカウントが必要になります。Amazonでの買い物などに利用するアカウントを利用することもできますが、ここでは専用の学習用アカウントを作っておいた方が良いでしょう。
次のサイトにアクセスします。
https://aws.amazon.com/jp/
「無料サインアップ」をクリックして、必要事項を記入しましょう。メールアドレスは、Amazonで普段利用していないメールアドレスを利用します。Gmailなどのフリーアカウントを取得しても良いでしょう。


アカウントが作れたら、ログイン画面からログインしましょう。
AWSの多数のサービス
AWSには非常に多くのサービスが準備されています。ウェブサイトの運用はもちろん、ファイルのバックアップやAI(人工知能)の開発など、サーバーに関する開発は何でも行えるようになっています。現在もサービスが日々増加していて、各サービスを把握するだけでも大変です。
今回はこの中でも、ウェブサーバーを構築できる「EC2」というサービスと、それを利用するためのいくつかのサービスに絞って紹介していきます。
Amazon EC2(Amazon Elastic Compute Cloud)とは
Amazon EC2は「Elastic(伸縮自在)」という名前の通り、仮想コンピューターをレンタルできるサービスです。各種のOSを選んでインストールでき、さらにそこに自由に環境を構築して、さまざまな用途に活用することができます。
また、グローバルIPアドレスが付与されるため、外部からのアクセスを受け入れることもでき、ウェブサーバーを構築したり、固定IPアドレスとドメインを設定して、本格的なウェブサイトを運用することも可能です。次からは、これらネットワークの知識も合わせて紹介しながら、EC2を使ったサーバー構築を実際に行っていきましょう。
インスタンスを作ろう
EC2では、「インスタンス」と呼ばれる領域を作成します。これが、コンピューター1台1台に相当し、この中にOSをインストールしたり、サーバーをインストールして起動するなどして、利用することができます。
先ほど作成したアカウントで、AWSにログインしましょう。
「AWSマネジメントコンソール」にアクセスするため、画面上部の「サービス」から「EC2」を選びます。

なお、AWSは世界各国に拠点(リージョン)があります。もし、日本国内向けにサーバーを提供したい場合は、日本のリージョンを利用した方が通信が早いため、右上のリージョン名から選択します。

そしたら、左側のメニューから「インスタンス→インスタンス」を選ぶか、図のリンクからインスタンスリストに移動しましょう。

そしたら左上の「インスタンスの作成」ボタンをクリックします。
すると、インストールする OSの種類が表示されます。はじめは AWSに最適化された「Amazon Linux 2 AMI(HVM), SSD Volume Type」というのが使いやすいでしょう。これを選びます。

次のサーバーの性能を選びます。高性能なものほど高額になります。個々では、無料利用が可能な「t2.micro」を選択します。

確認画面で内容を確認し、「起動」ボタンをクリックします。

すると、「キーペア」というものの作成ウィンドウが表示されます。

ここでは、「新しいキーペアの作成」を選んで、適当なキーペア名を入力しましょう。自分の名前などで良いでしょう。「キーペアのダウンロード」ボタンをクリックすると、.pemという拡張子のファイルがダウンロードされるので、大切に保管しておきましょう。
これで「インスタンスを作成」ボタンをクリックすると、インスタンスが起動します。
インスタンスの状態が「running」になったら起動完了です。

インスタンスに接続してみよう
それでは、立ち上がったインスタンスに接続してみましょう。とはいえ、今作ったインスタンスは、まだなにもインストールされていない状態なため、ブラウザーからのアクセスも何もできません。唯一可能なのは「SSH」と呼ばれるシェルでアクセスすることだけです。
画面上部の「接続」ボタンをクリックしましょう。選択肢が表示されるので、ここでは「EC2 Instance Connect(ブラウザベースの SSH接続)」を選びます。

すると、図のような子ウィンドウが表示され、これで接続完了です。詳細は、次の章で紹介しましょう。

SSHクライアントソフトで接続しよう
毎回、AWSにログインをして利用するのは面倒なので、通常は専用クライアントソフト(SSHクライアント)を利用して接続します。
SSHクライアントには、Teratermや Putty等がありますが、ここでは Puttyを利用していきましょう。なお、macOSの場合はソフトをインストールせずに、「アプリケーション→ユーティリティ→ターミナル」を起動して、ターミナルから利用することができます。
Puttyをインストールしよう
次のアドレスにアクセスしましょう。
「Download PuTTY」の「here」というリンクから、環境に合わせて 32bit版または 64bit版をダウンロードしましょう。

セットアッププログラムで、プログラムをセットアップしておきます。
ソフトを起動したら、AWSにログインしてインスタンスの一覧画面から、作成したインスタンスを選び「接続」ボタンを再びクリックしましょう。この時、今度は「スタンドアロン SSHクライアント」を選びます。

ここに表示された「ec2-xxx-xxx-...」から始まるアドレスをコピーしておきましょう。そしたら、PuTTYを起動して表示されるウィンドウの「Host Name(or IP address)」という欄に貼り付けておきましょう。

キーファイルを変換しよう
接続には、インスタンスを作成したときにダウンロードした「秘密鍵」と呼ばれるキーファイルが必要です。ただし、PuTTYはこのキーファイルを変換しないと利用できません。
スタートボタンから「PuTTYgen」というソフトを起動します。そしたら、「Conversions→Import key」メニューをクリックして、ダウンロードしておいた「.pem」という拡張子のファイルを指定します。

そして「Save private key」ボタンをクリックして、今度は「.ppk」という拡張子のファイルで保存します。これを利用します。

接続しよう
これで準備完了です。PuTTYの画面に戻ったら「Connection→SSH→Auth」メニューをクリックして、「Private key file for authentication」欄で先ほど作成した「.ppk」ファイルを指定します。

「Open」ボタンをクリックすると、図のようなウィンドウが表示されて接続完了です。

macOSの場合
macOSの場合は、先の接続ウィンドウで一番下部に表示されるコマンドをコピーしてターミナルに貼り付けます。そして、ダウンロードした秘密鍵のキーファイルを指定しましょう。

アップデートしよう
設定した直後の AWSは、最新の状態よりは少し古い状態になっていることも多いです。その場合、ログイン直後の画面に次のように表示されます。
「Run "sudo yum update" to apply all updates.(sudo yum updateコマンドを実行すると、すべてのアップデートを適用します)」
そこで、指示されたとおりに打ち込んでみましょう。
sudo yum update
これでアップデートが行われます。冒頭の「sudo」というのは「Super User do」の略で管理者として実行するという事です。ログインした直後のユーザーは「一般ユーザー」と呼ばれる権限なため、できる事に制限があります。
そして、「yum」というのはこの Amazon Linuxを利用するための管理コマンドです。この他にもさまざまな用途で利用されます。ここでは、yumの updateというコマンドを実行することで、環境を最新の状態にしました。
実行すると、次々のファイル名などが表示されていきます。途中で質問されることがあるので「y」と入力して、手続きを進めていきましょう。
「Complete!」と表示されれば準備完了です。
ウェブサーバー「Apache」をインストールしよう
まだ、現状ではソフトがなにも入っていないため、ウェブサーバーとしても利用することができません。ここでは、ウェブサーバーとして利用できるようにウェブサーバーソフトをインストールしましょう。
ウェブサーバーソフトには、いくつかの種類がありますが、ここでは最も利用されている「Apache(アパッチ)」を利用します。次のように入力しましょう。

sudo yum install httpd
先ほどの「sudo yum」に続いて、「install」と「httpd」と指定しています。httpdというのがここでは Apacheのことで「HTTP Deamon」と呼ばれる種類のソフトであるため、このように入力します。
これで実行すると、Apacheがインストールされます。
Apacheを起動しよう
インストールできたら次のコマンドで実行します。
sudo systemctl start httpd
「systemctl」とは「System Control」の略称で、システムの根幹に関わる捜査を行います。ここでは、先ほどインストールした Apache(httpd)を起動(start)します。
これで、ウェブサーバーとして機能するようになりました。しかし、まだこの状態ではウェブブラウザーからアクセスすることはできません。これは、セキュリティの設定が厳しく設定されているためです。
続く