AWS EC2を使ったウェブサーバー構築の基本を解説。レンタルサーバーなしで手軽にサイトやブログ作成も可能に

シェアする

Webサイトやブログの作成、Webサービスの構築をする際に一般的なのはレンタルサーバーを借りることだと思いますが、最近はクラウドサービスを使うことも増えてきています。そんなクラウドサービスの中でも有名なのがAmazonが提供しているAmazon Web Service (AWS)ですね。物理サーバーを設置するオンプレミス型よりも低コストで必要な時に手軽にリソースを活用でき、レンタルサーバーよりもカスタマイズ性や柔軟性が高いことから利用者が増えています。私もこのブログを作るにあたり半年前からAWSを利用していますが、AWSには1年間の無料利用枠が用意されているため、実は現時点ではほとんどコストがかかっていません。そこで今回はこのAWSを活用したウェブサーバー構築を、基本的な部分から作業の際の注意点まで順を追って説明していきたいと思います。これからサイトやブログを作ろうと考えている人の参考になれば幸いです。

AWSの紹介・メリット・レンタルサーバーとの違い

はじめに実際に構築の際の説明に移る前に、AWSについて簡単に説明しておきたいと思います。

AWSとは

Amazon Web Service (AWS)とは、Amazonが提供するWebサービスで、仮想サーバー・データベース・オンラインストレージなどクラウドコンピューティングのさまざまなサービスがあります。提供されているサービスの数は50種類以上になります。その中でもサイト作成によく使われるのはEC2という仮想サーバー(インスタンス)サービスですね。これは自由にスペック変更が可能でt2.microというCPU1/メモリ1GBのインスタンスタイプであれば、1年間無料で利用できます。他にもWebサイトやWebサービス作成時には以下のようなサービスを使うこともあります。

<Route53>
AWSが提供しているクラウドベースのDNSサービスです。サイトに必要なドメインの取得やIPアドレスとドメインの紐付けを行ってくれます。

<ALB/ELB>
AWSが提供しているネットワークトラフィックの負荷分散のためのロードバランシングサービスです。サイトのhttps化にも対応します。

<S3>
AWSが提供しているストレージサービスで、アップロードしたファイルを公開することも出来ます。AWSはS3について「99.999999999%(イレブン9)の堅牢性と99.99%の可用性」をうたっており、使用量もかなり安いです。オンラインストレージサービスや静的サイトの作成に使われることもあります。

<RDS>
クラウドでのリレーショナルデータベースサービスです。データベースとしてはMySQL、Oracle、Microsoft SQL Server、PostgreSQLが選択可能。動的サイトのデータベースとして使われることもあります。

ちなみに私は上記サービスのうちRDS以外を使っています。EC2でインスタンスを作成してWordPressインストール、Route53でドメイン取得とDNS、ALBで負荷分散とHTTPS・HTTP/2への対応、S3でサイトのバックアップとオンラインストレージサービスを構築という感じで、今後サイトボリュームが増えてきた場合はRDSにデータベースを引っ越すかもしれません。これだけ利用しても現在かかっているコストはドメイン代くらいです。無料利用枠終了後にはコストは増えてしまいますが、それでもかなり安く多様なサービスが使えると思います。

AWSのメリットとレンタルサーバーとの違い

AWSには以下のようなメリットがあります。

・物理サーバー導入と比較して初期コスト、運用コストが安い

・信頼性、セキュリティが高い

・柔軟性、拡張性が高い

また従来よく利用されているレンタルサーバーとの違いは、以下のようなところになります。

・レンタルサーバーはAWSと比較して導入費用が多少かかる

・運用コストはレンタルサーバーの方が安い

・柔軟性、カスタマイズはAWSは自由にできる

・レンタルサーバーは他のユーザーとハードウェア資産を共有するのでリソースの影響を受けやすい

このように、AWSは「初期費用は安いが運用費用がレンタルサーバーに比べるとかかる」「カスタマイズ等はレンタルサーバーより自由が効く」といった特徴があります。

前準備:AWSアカウント作成

では、実際にAWSでインスタンスを作成する作業に移りましょう。インスタンス構築をするにあたって最初にしなければならないこと、それはAWSアカウントの作成です。AWSはWebで提供されているサービスなので、アカウントでWebサービスにログインすることで使えるようになります。

実際に新しくAWSアカウントを作成する手順は、以下のようになります。

①AWSアカウントの作成

AWSトップページの「まずは無料で始める」からAWSアカウント作成画面に入り、以下の3点を設定、「続行」を押します。

・AWSアカウント名

・Eメールアドレス

・パスワード

②連絡先情報の入力

ユーザー情報の登録を行います。会社で作成する場合はプロフェッショナル、個人で作成する場合はパーソナルを選ぶようにしましょう。住所は日本語入力で大丈夫ですが書き方はアメリカ式(番地→市区町村→都道府県→郵便番号)になります。

・フルネーム

・住所

などを入力した上で、「AWSカスタマーアグリーメント」で利用規約に同意するチェックを入れて、「アカウントを作成して続行」を押します。

③支払情報の登録

利用料支払いのためのクレジットカードの情報登録を行います。支払に使うクレジットカードの情報を入力して「次へ」を押します。

④本人確認

最後に登録した情報について電話での本人確認を行います。電話番号を入力し「すぐに連絡を受ける」を押すと電話がかかってきます。電話で指定された4桁のPIN番号を画面に入力して完了です。

以上で、AWSのアカウント作成は完了です。

サーバー構築

ここからは、実際にインスタンスを構築し、EIP、セキュリティグループの設定等を行うまでの流れを説明します。作業自体はAWSマネジメントコンソールから行います。

1) インスタンスの作成

AWSマネジメントコンソールからコンソールにログインしてEC2インスタンスを作成します。

①AWSマネジメントコンソールから「EC2」を選択します。

②右上に表示されるリージョンが東京になっていることを確認して「インスタンスの作成」を選択します。

③「Amazonマシンイメージ(AMI)」を選択します。
→AMIとはインスタンスを起動するのに必要なOSやボリュームの情報、アプリケーションなどインスタンスを構成する起動テンプレートです。WordPressのようなCMSがセットになっているものもありますが、ここでは、例として無料利用枠の対象である「Amazon Linux AMI ~」を選択します。

④インスタンスタイプの選択
→AMI選択を終えるとインスタンスタイプを聞かれます。今回は無料利用枠の対象である「t2.micro」を選択します。

⑤インスタンスの詳細設定
→どこも変更せず(別途設定するので)、そのまま「次の手順:ストレージの追加」を押します。

⑥ストレージの追加
→同じく特に何もせず「次の手順:インスタンスのタグ付け」を押します。

⑦インスタンスのタグ付け
→インスタンスにキーと値を設定します。タグ付けが不要であれば入力の必要はありません。「次の手順:セキュリティグループの設定」を押します。

2) セキュリティグループ設定

基本的な設定が完了すると、セキュリティグループを設定します。セキュリティグループとはインスタンスへのアクセスやトラフィックを制御するファイアーウォールのことです。これを設定することで、インスタンスへのアクセスを許可するIPアドレスやトラフィクの制限を行うことが出来ます。

ここでは「ルールの追加」ボタンを押して、1行づつルールを追加していきます。通常のサイト作成であれば必要なのは以下の2つ。

・タイプ「HTTP」、プロトコル「TCP」、ポート範囲「80」、ソース「カスタム:0.0.0.0/0」
→これで誰でもHTTP接続(Webでアクセス)できるようになります

・タイプ「SSH」、プロトコル「TCP」、ポート範囲「22」、ソース「マイIP」
→これで自分だけがSSH接続をしてサーバー内部を操作できるようになります。(環境が変わったりPCに割り当てられたIPアドレスが変更になると、再度設定しないとSSH接続できなくなります)

ちなみにここまで行うことができれば、「確認と作成」を押してインスタンスの内容を確認し、問題なければ「作成」を押してインスタンスの作成を行ってください。

3)SSH接続のためのキーペアの作成

インスタンスの「作成」ボタンを押すと、キーペアの設定画面が表示されます。キーペアとはインスタンスに対して暗号化通信(SSH)でアクセスする場合に、AWS側で所持するパブリックキーと、それと対になりユーザーが保持するプライベートキーの組み合わせのことです。この組み合わせが認証の際に合致することで通信を行うことが出来るものです。

ここでは以下の2つの方法があります。

(1) 既存のキーペアを選択

(2) 新しいキーペアを作成

これらの2つの方法を見ていきましょう。

(1) 既存のキーペアを選択

「既存のキーペア」を選択し、下部のウィンドウで既存のキーペアを選択します。その後、「作成」ボタンを押します。

(2) 新しいキーペアを作成

「新しいキーペアの作成」を選択し、キーペアの名前を任意に入力します。次に「キーペアのダウンロード」をクリックしてダウンロードしたら「作成」ボタンを押します。

ちなみに作成したキーファイルはDownloadsフォルダにあるので、適宜場所を変更しましょう。これは後述のSSH接続を行う時に必要となります。

4) EIPの取得と設定

いったんインスタンスを作成するとインスタンスが稼動できる状態になりますが、このままでは、AWSで自動で割り当てられた動的IPアドレスが使われることになります。任意の固定IPとしてElastic IPアドレス(EIP)を割り当てます。

EIPを割り当てる方法は以下の通りです。

①EIPの取得

AWSマネジメントコンソールから「EC2」を選択し、左フレームの「Elastic IP」を選択します。「新しいアドレスの割り当て」をクリックし、次の画面で「割り当て」をクリック。そうすると、新しいアドレスのリクエストが成功しましたと出てElastic IPアドレスが表示されます。

②取得したEIPの割り当て

EIPを作成すると、一覧が画面で表示されるので、先ほど割り当てられたEIPを選択してアクションからアドレスの関連付けをクリックします。

アドレスの関連付け画面になるため、インスタンスの部分で先ほど作成したインスタンスを選択して「関連付け」を選択します。問題なければこれでインスタンスとEIPが関連付けられ、固定IPでインスタンスに接続することができるようになります。

ドメインの取得とインスタンスとの紐付け

インスタンスの構築が完了したら、引き続いてドメインの取得とインスタンスとの連携を行います。AWSにはRoute53というドメインレジストラ(ドメイン取得)とDNSサービスを兼ねたものがありますので、そちらを使います。他のサービスは日本語化されているものが多いですが、Route53はまだ英語表記なので抵抗があるかもしれませんが、操作は簡単です。

1) ドメインの取得と設定

ドメインの取得と設定を以下のような流れで行います。

①AWSマネジメントコンソールから「Route53」コンソールを開く

②「Domain Registration」から「Get Started Now」を選択

③「Register Domain」をクリックします

④「Choose Domain」に希望するドメイン名を入力します

⑤トップレベルドメイン(TLD: .com, co.jpなど)を入力し、「Check」を押して、ドメインが取得できるかどうか確認します

⑥ドメインが取得できる場合は「Add to cart」ボタンを押し、ページ下部の「Continue」を押します。

⑦「Contact Details」としてドメインの詳細設定を行います

⑧内容を確認し、問題なければ「I have read and agree to the AWS Domain Name Registration Agreement」のチェックを入れ、[Complete Purchase]ボタンを押します。

2) DNSの登録と作成したインスタンスとの紐付け

取得したドメインがDNSで表示されるように設定を行います。

①AWSマネジメントコンソールからRoute53の「Hosted Zones」を開き、作成したドメインを開きます。

②「Created Record Set」を開き、必要情報を入力します。取得したドメインそのままで運用する場合は「Name」ボックスは空欄で作成したインスタンスのEIPを「Value」に入力して「Create」を押します。もしURLをwwwから始めたい場合は「Name」ボックスにwwwを入力すれば大丈夫です。

③メインテーブルに新規エントリがあり、入力した値が表示されていることを確認

④ブラウザから設定したWebサイトが開けることを確認

設定は以上で完了です。

お名前.comのような別のサービスを使ってドメインを取得している場合は「Create Hosted Zone」から取得したドメインを登録して、表示されるネームサーバーをレジストラ(お名前.com)に登録する必要があります。AWSを使う場合は全てRoute53を使えば全てAWS内で完結できますのでかなり楽ですね。

必要なソフトウェアのインストール

ここまでの手順でクラウド上への仮想サーバーの立ち上げは完了しています。あとは用途に応じて必要なソフトウェアをインストールするだけになります。動的サイトを構築する場合はLAMPと呼ばれるソフトウェア群が有名ですね。OSとなるLinux、WebサーバのApache、データベースのMySQL、スクリプト言語のPHPの頭文字をとってLAMPですね。最近はこの構成にCMS(コンテンツマネジメントシステム=Webサイトを簡単に作成管理できるシステム)であるWordPressをインストールして、サイトやブログを作成している人が多いと思います。またApacheの代わりに高速で処理が軽いNginx(エンジンエックス)を使うのも流行っており、このブログもWordPress+Nginxで構成しています。

 インスタンスへのSSH接続

ソフトウェアをインストールするためには作成したインスタンスにSSH接続をする必要があります。SSH接続のために、セキュリティグループの設定でSSHの接続を許可していることと、作成したキーペアが必要になります。接続にはターミナル(Mac)を使います。(Windowsの場合はコマンドプロンプトかな)

細かい操作方法は省略しますが手順としては

①キーペアをSSH用のフォルダ(「~/.ssh」)に移動

②作成したキーペアのアクセス権限を変更

③SSH接続
→ssh -i ~/.ssh/xxxxxx.pem ec2-user@”自分のElastic IP”

という単純な手順です。

ソフトウェアのインストール

SSH接続ができればあとは必要なソフトをインストールしていきます。ここも細かい説明は省略しますが、「sudo su –」でrootユーザーになってyumコマンドでソフトをインストール、設定ファイルの追記や修正をおこなうという手順になります。細かい手順やコマンドを説明しているサイトもたくさんありますので、わからない方はそちらを参考にしてみてください。

インスタンス構築における注意点

最後にインスタンス構築作業でどういった点に注意すべきかを見ておきましょう。インスタンス作成の際はどのような点に注意すると良いのでしょうか。

1) 使い終わったEIPはリリースする

利用中のEIPは課金対象になりませんが、使わないまま保持しているEIPは課金対象になります。使っていないのに支払いが発生するのは無駄な出費に繋がりますので、すぐにリリースしましょう。

2) インスタンス間の通信にはPublic DNSを使いましょう

EIPを使用していても転送にEIPを指定すると転送量がかかるので、必ずPublic DNSを使いましょう。

3) AWSの無料枠には注意

各コンポーネントの無料枠は必ずしも1ヶ月無料というわけではありません。無料期間を必ず確認し、余分な課金にかからないように注意しましょう。

AWSでインスタンスの構築を行う場合は、以上のような点に注意しましょう。

 まとめ

いかがだったでしょうか。私のようなあまりWebやサーバーの知識がない人間でも、AWSを使えば非常に簡単にサーバーの構築ができることがわかったと思います。AWSならレンタルサーバーよりも自由に、色々なことができますのでこれからサイトやブログの作成を考えている人は、ぜひAWS EC2を使った仮想サーバーの構築を試してみてください。