クラウドサービス入門 ~AWSでWebサーバーを公開するための知識~
毎日のお仕事、本当にお疲れ様です。システム管理者という仕事は、本当にやることが多いですよね。社員のパソコンのトラブル対応から、ネットワークの不調、そして何より気が重いのが、自社に置いてある「サーバー」の管理ではないでしょうか。
夏場になればサーバー室のエアコンが壊れていないか心配になり、停電のお知らせが来ればシャットダウンの手順を確認し、夜中に「サーバーが止まってるぞ!」という電話に怯える。そんな日々を過ごしていませんか?
もし、そんな悩みから少しでも解放されたいなら、この連載はきっとあなたのためにあります。今回は、話題の「クラウドサービス」について、基礎の基礎から一緒に見ていきましょう。
クラウドサービスとは何か
まずは、そもそもクラウドサービスとは何なのか、というお話です。
クラウド、クラウドとよく耳にしますが、これは雲の上にコンピューターがあるわけではありません。インターネットを通じて、誰かが管理してくれているコンピューターの機能を、必要な分だけ借りて使うサービスのことを指します。
これをわかりやすく、私たちの生活に欠かせない「電気」や「水道」に例えてみましょう。
みなさんは、自宅で電気を使うために、庭に発電所を建てたりはしませんよね?電力会社が作った電気を、電線を通じて受け取り、使った分だけ料金を支払います。水道も同じです。自分で井戸を掘って水質検査をするのではなく、水道局が管理している水を蛇口からひねって使い、使用料を払いますよね。
クラウドサービスもこれと同じです。
AmazonやGoogleといった巨大なIT企業が、巨大なデータセンター(発電所のようなものです)を持ち、そこで大量のサーバーを管理しています。私たちはインターネットという電線を通じて、そのサーバーの能力(電気)を使いたい分だけ使い、使った分だけお金を払うのです。
オンプレミスとの違い
では、これまでみなさんが苦労して管理してきた、自社内にサーバーを置くスタイルは何と呼ぶのでしょうか。専門用語で「オンプレミス」と呼びます。
オンプレミスは、言ってみれば「自分の土地に家を建てる」ようなものです。
土地を買い、建材を選び、家を建て、メンテナンスも自分で行います。壁の色を自由に変えたり、増築したりと自由度は高いですが、その分、雨漏りの修理や庭の草むら、固定資産税の支払いなど、管理の手間と責任がすべて自分に降りかかってきます。
一方でクラウドは「賃貸マンション」や「ホテル」に近いです。
建物のメンテナンスはオーナーがやってくれます。部屋の広さが足りなければ広い部屋に引っ越せばいいですし、不要になれば解約して出ていくだけです。その代わり、壁に穴を開けるような極端な改造は制限されることもあります。
この「所有する(オンプレミス)」から「利用する(クラウド)」への転換が、いま世界中で起きているのです。
クラウドを利用するメリット
なぜ、これほど多くの企業がクラウドに移行しているのでしょうか。ここには明確なメリットがあります。
必要なときにすぐ使えるスピード感
オンプレミスで新しいサーバーを用意しようとするとどうなるでしょう。見積もりを取り、稟議を通し、発注して、機材が届くのを待ち、セットアップする。これだけで数週間から数ヶ月かかってしまいますよね。
クラウドなら、管理画面からポチポチとクリックするだけです。数分後には、世界最高水準のサーバーが使えるようになります。このスピード感は、ビジネスのチャンスを逃さないために非常に強力な武器になります。
コストの最適化
オンプレミスでは、将来の成長を見越して、最初からハイスペックな高いサーバーを買う必要があります。でも、実際にはそんなに性能を使わないことも多いですよね。これは「空気を運んでいるトラック」のようにもったいない状態です。
クラウドは「従量課金制」が基本です。最初は小さなサーバーから始めて、アクセスが増えてきたら性能を上げることができます。無駄な投資を抑えられるのは、予算にシビアな中小企業にとって嬉しいポイントです。
クラウドのデメリットと注意点
もちろん、良いことばかりではありません。デメリットもしっかり理解しておきましょう。
インターネットがないと使えない
クラウドはインターネット経由で利用するため、インターネット回線が切れてしまうと、システムにアクセスできなくなります。安定した回線の確保が重要になります。
セキュリティの考え方が変わる
「クラウド事業者に預けるなんて怖い」と感じる方もいるかもしれません。しかし、大手クラウド事業者のセキュリティ対策は、一企業が実施できるレベルを遥かに超えています。
ただし、注意が必要なのは「責任共有モデル」という考え方です。
クラウド事業者は「クラウド自体のセキュリティ(建物の鍵や警備員)」には責任を持ちますが、「クラウドの中でどう使うか(部屋の鍵をかけるか、誰を部屋に入れるか)」は、利用者である私たちの責任になります。
つまり、クラウドを使ったからといって、セキュリティ対策が不要になるわけではないのです。
今後の学習の指針
いかがでしたでしょうか。
クラウドサービスとは、コンピューターを「所有」する重荷から解放され、必要なときに必要なだけ「利用」する賢い選択肢だということが、なんとなくイメージできたかと思います。
さて、クラウドの概念がわかったところで、次回はいよいよ世界で最も使われているクラウドサービス「AWS(Amazon Web Services)」を使って、実際にWebサーバーを作る方法についてお話しします。「えっ、そんなに簡単にできるの?」と驚く準備をしておいてくださいね。
EC2の仕組みを徹底解説
前回は、クラウドサービスが「電気や水道のようにコンピューターのリソースを使うこと」だとお話ししましたね。頭の中のモヤモヤ、少しは晴れましたか?
今回は、いよいよAWSの主役とも言えるサービス、「Amazon EC2」について解説します。名前だけ聞くと、なんだか難しそうなロボットの名前みたいですよね。でも、怯える必要はありません。
この章を読み終える頃には、あなたは「サーバーを買う」という発想から「サーバーを立ち上げる」という発想へと、劇的に進化しているはずです。さあ、一緒に見ていきましょう。
AWSでサーバーを作る主役「EC2」とは
AWSを使ってWebサーバーを構築するとき、まず間違いなく使うことになるのが「Amazon EC2(アマゾン・イーシーツー)」です。
正式名称は Amazon Elastic Compute Cloud と言います。長いですね。覚える必要はありません。「EC2(イーシーツー)」と呼べば、世界中のエンジニアに通じます。
EC2を一言で説明すると、「AWSという巨大な倉庫にある仮想のレンタルサーバー」です。
皆さんが普段、会社のデスクの下やサーバー室に置いている物理的なサーバーを想像してください。あれをインターネット越しに、好きなスペックで、好きな台数だけ借りることができるのです。
Webサーバー構築に必要な3つの要素
EC2を使ってサーバーを作るのは、実はネットショッピングでパソコンを注文するのとよく似ています。パソコンを選ぶとき、何を基準にしますか?
OSはWindowsにするかMacにするか。CPUの性能はどれくらいにするか。保存容量はどれくらい必要か。悩みますよね。
EC2でも、決めるべき主な要素は次の3つです。
1. サーバーの頭脳と身体「インスタンスタイプ」
まず決めるのは、サーバーの性能です。AWSではこれを「インスタンスタイプ」と呼びます。
これは、レストランのメニュー表のようなものです。
軽食でいいなら「t2.micro」という安価なメニューを。
動画編集のような重い処理をするなら「c5.large」のようなガッツリ系のメニューを選びます。
CPU(頭の回転の速さ)やメモリ(机の広さ)の組み合わせが何通りも用意されていて、用途に合わせて最適なものを選べるのです。最初は一番安いものから始めて、足りなくなったら高性能なものに変える。そんな柔軟な変更ができるのもEC2の魅力です。
2. サーバーの魂「AMI(マシンイメージ)」
次に、サーバーの中身、つまりOS(オペレーティングシステム)を選びます。AWSではこれを「AMI(アミ)」と呼びます。Amazon Machine Imageの略です。
これは「金型」や「焼き増し元の写真」のようなものだと思ってください。
「Windows Serverが入った状態の金型」を選べば、起動した瞬間にWindowsが使えるサーバーができあがります。「Linuxが入った状態の金型」を選べば、Linuxサーバーになります。
Webサーバーを作りたい場合、多くは「Amazon Linux」や「Ubuntu」といったLinux系のOSが選ばれますが、もちろん使い慣れたWindows Serverを選ぶことも可能です。
3. サーバーの鍵「キーペア」
ここが非常に重要です。クラウド上のサーバーは、世界中のどこからでもアクセスできる可能性があります。そのため、セキュリティは厳重でなければなりません。
そこで登場するのが「キーペア」です。これはデジタルな「南京錠の鍵」です。
サーバーを作るときに、AWSから「この鍵を持っていないと、絶対に中には入れないからね」と、特別なファイルを渡されます。システム管理者の皆さんは、このファイルを自分のパソコンに大切に保存します。
サーバーにログインするときは、パスワードを入力する代わりに、この鍵ファイルを提示します。パスワードだと総当たり攻撃で破られる可能性がありますが、複雑なデジタル鍵ならその心配は激減します。物理的なサーバー室の鍵を管理するのと同じくらい、このキーペアの管理は大切です。
メリット:失敗してもやり直せる
EC2を使ってWebサーバーを構築する最大のメリットは、「失敗が許されること」です。
物理サーバーの場合、一度買ってしまったら「やっぱりスペックが足りなかった」と言って返品するのは大変です。OSのインストールに失敗して、最初からやり直しになるのも時間がかかりますよね。
EC2なら、「あ、設定を間違えたな」と思ったら、そのサーバーを削除(終了)して、もう一度新しいサーバーを立ち上げればいいだけです。所要時間はほんの数分。この手軽さが、エンジニアの心理的な負担を大きく減らしてくれます。
デメリット:中身の管理は自分たちで
一方で、デメリットも理解しておく必要があります。
EC2はあくまで「箱(仮想サーバー)」を提供してくれるサービスです。その箱の中で動くOSのアップデートや、Webサーバーソフト(ApacheやNginxなど)の設定、ウイルス対策などは、利用者である私たちが自分で行う必要があります。
「クラウドだから何もしなくていい」わけではありません。サーバー室の掃除や電源の管理はAWSがやってくれますが、サーバーの中身のメンテナンスは、これまで通りシステム管理者の腕の見せ所というわけです。
今後の学習の指針
EC2というサービスが、Webサーバー構築の土台になることがわかりましたね。
好きな性能(インスタンスタイプ)を選び、好きなOS(AMI)を選び、鍵(キーペア)を持ってアクセスする。仕組みは意外とシンプルです。
でも、説明を聞くだけではピンとこない部分もあるでしょう。百聞は一見にしかずです。
次回は、実際にAWSの管理画面を触っているつもりになって、Webサーバーを構築する手順を体験してみましょう。「えっ、こんなにあっさり立ち上がるの?」という感動を、ぜひ味わってください。
AWSでWebサーバーを立ち上げる
前回は、AWSでサーバーを作るための「EC2」というサービスについて、その仕組みや選ぶべき3つの要素をお話ししました。
「理屈はわかったけれど、実際の画面を見ないとイメージが湧かないよ」
そんな声が聞こえてきそうです。ごもっともです。マニュアル本を読んだだけで自転車に乗れるようにならないのと同じで、サーバー構築も実際に手を動かす(あるいは動かす様子を想像する)ことが大切です。
今回は、実際にAWSの管理画面を操作して、Webサーバーを1台立ち上げる手順をシミュレーションしてみましょう。画像はありませんが、私が実況中継しますので、頭の中で一緒にクリックしながら進んでくださいね。
司令室「マネジメントコンソール」へようこそ
まず、AWSにログインすると「AWSマネジメントコンソール」という画面が表示されます。これがすべての操作を行う司令室です。
画面には無数のアイコンやメニューが並んでいて、初めて見たときは「うわっ、なんだこれ……」と圧倒されるかもしれません。でも、大丈夫です。飛行機のコックピットと同じで、全部のスイッチを理解する必要はありません。私たちが使うのは、ほんの一部です。
検索バーに「EC2」と入力してクリックします。すると、EC2のダッシュボード(管理画面)に移動します。
ここにある、鮮やかなオレンジ色のボタン。「インスタンスを起動」を見つけてください。これをクリックすると、サーバー構築ウィザードが始まります。ここからが本番です。
サーバー構築のステップバイステップ
画面が切り替わり、サーバーの設定画面になります。以前は紙芝居のように画面を遷移していましたが、今は縦に長い1枚のページで設定が完了します。上から順に見ていきましょう。
1. 名前を付ける
まずは、生まれたばかりのサーバーに名前を付けてあげましょう。「Name」という欄に、「MyFirstWebServer」とでも入力しておきます。これで愛着が湧いてきますね。
2. OS(AMI)を選ぶ
次にOSを選びます。アイコンが並んでいますが、ここでは一番左にある「Amazon Linux」を選びます。これはAWSが用意してくれている標準的なOSで、無料で使える枠に含まれていることが多いので、練習用には最適です。
3. インスタンスタイプを選ぶ
サーバーのスペック選びです。「t2.micro」や「t3.micro」というタイプが表示されているはずです。ここには大抵「無料利用枠の対象」というラベルが付いています。
中小企業のシステム管理者にとって、この「無料利用枠」は神様のような存在です。最初の1年は、一定の範囲内ならタダでサーバーを動かせるのです。迷わずこれを選びましょう。
4. キーペア(鍵)の作成
ここが最大の山場です。「キーペア(ログイン)」という項目があります。
「新しいキーペアの作成」をクリックし、鍵に名前を付けます(例えば my-key など)。そして「キーペアを作成」ボタンを押すと……。
お使いのパソコンに、ファイルが1つダウンロードされます。これが「秘密鍵」です。
このファイルは、一度しかダウンロードできません。もし誤って削除してしまうと、二度とこのサーバーに入れなくなってしまいます。絶対に無くさないように、大切なフォルダに保存してください。
5. ネットワーク設定とセキュリティ
ここでは「ファイアウォール」の設定をします。「セキュリティグループ」という項目です。
初期設定では「SSHトラフィックを許可」にチェックが入っています。これは「管理者であるあなたが、サーバーを遠隔操作するための通り道」を開ける設定です。
Webサーバーとして公開するには、本来なら「HTTPトラフィックを許可」にもチェックを入れる必要がありますが、今回はまず「サーバーを立てる」ことが目的なので、そのままで進みましょう。
6. いざ、起動!
設定は以上です。画面の右側にあるオレンジ色のボタン、「インスタンスを起動」をクリックしてください。
画面に「成功しました」というメッセージが表示されます。
サーバーが動き出す瞬間
インスタンスの一覧画面に戻ると、あなたが作った「MyFirstWebServer」が表示されています。
最初は「保留中(Pending)」というステータスになっていますが、数十秒待つと、緑色の「実行中(Running)」に変わります。
これでもう、AWSの巨大なデータセンターのどこかで、あなた専用の仮想サーバーが産声を上げ、動き始めました。
カップラーメンにお湯を入れて待つよりも早く、サーバー調達が完了してしまったのです。すごくないですか?
見積書も、稟議書も、納品待ちもありません。ただクリックしただけです。これがクラウドの威力です。
AWSで構築するメリットとデメリット
この体験を通じて感じていただけたかと思いますが、メリットとデメリットを整理しましょう。
メリット:圧倒的なスピードと手軽さ
ご覧の通り、物理的な作業は一切ありません。重いサーバーをラックに持ち上げる必要も、ケーブルを配線する必要もありません。思い立った瞬間に検証環境が手に入るスピード感は、ビジネスの速度を加速させます。
デメリット:設定ミスのリスク
簡単すぎるがゆえに、「とりあえずクリック」で進めてしまい、設定を間違えたまま放置してしまうリスクがあります。特にセキュリティ設定(ファイアウォール)を甘くしたままにしておくと、世界中から攻撃を受ける的になってしまいます。
今後の学習の指針
さて、サーバーは立ち上がりました。しかし、今の状態は「サーバーの電源が入っただけ」の状態です。まだWebサイトを表示する機能(Webサーバーソフト)は入っていませんし、ネットワークの設定もデフォルトのままです。
次回は、このサーバーがインターネットの世界とどのようにつながっているのか、「Webサーバーのネットワーク構成」についてお話しします。「IPアドレス」や「VPC」といった、少しとっつきにくい用語が出てきますが、わかりやすく噛み砕いて解説しますので安心してください。
AWSのネットワーク「VPC」と「IPアドレス」
前回は、AWSの管理画面でボタンを押して、仮想サーバー(EC2)を立ち上げるところまで体験しましたね。「意外と簡単だった!」と感じていただけたなら嬉しいです。
でも、ちょっと待ってください。サーバーが立ち上がったのはいいですが、そのサーバーは広いインターネットの海の「どこ」にあるのでしょうか? 私たちが普段スマホでWebサイトを見るとき、どうやってその場所を特定しているのでしょうか?
今回は、少しとっつきにくい「ネットワーク」のお話です。でも安心してください。難しい専門用語も、「家」や「住所」に置き換えればスルスルと頭に入ってきますよ。
あなた専用の区画「VPC」
AWSの世界には、世界中の企業が作ったサーバーが無数に存在しています。もし、あなたの会社のサーバーと、全然知らない会社のサーバーが、同じネットワークの中に混ざっていたらどうでしょう? 間違って接続してしまったり、データが見えてしまったりしたら大変ですよね。
そこで登場するのが「VPC(ブイ・ピー・シー)」です。Virtual Private Cloud(バーチャル・プライベート・クラウド)の略です。
これを現実世界に例えると、「AWS」という巨大な埋立地の中に、「自社専用の土地」を柵で囲って確保するようなものです。
このVPCという柵の中は、あなただけのプライベートな空間です。隣の土地(他社のVPC)とは完全に切り離されています。この中にWebサーバーやデータベースなどの建物を建てていくわけです。まずは「土地を確保しないと家は建てられない」と覚えておいてください。
サーバーの住所「IPアドレス」
土地(VPC)の中にサーバー(EC2)を建てました。次に必要なのは「住所」です。ネットワークの世界では、住所のことを「IPアドレス」と呼びます。「192.0.2.1」のような数字の羅列、見たことありますよね。
実は、AWSのEC2サーバーには、多くの場合「2つの住所」が割り当てられます。これが初心者を悩ませるポイントです。詳しく見ていきましょう。
1. パブリックIPアドレス(表札)
これは「インターネット上の住所」です。世界中のどこからでも、この住所を指定すればあなたのサーバーにたどり着けます。Webサーバーとして公開するときに、お客様がアクセスしてくるのはこの住所です。
郵便物が届く、正式な住所のようなものですね。
2. プライベートIPアドレス(内線番号)
こちらは「VPCの中だけで通じる住所」です。インターネットからは直接見えません。
例えば、家の中でお父さんを呼ぶとき、「東京都〇〇区……の山崎さん!」とは呼びませんよね。「お父さん」とか「内線1番」で通じます。
同じように、VPCの中にあるWebサーバーとデータベースサーバーが通信するときは、このプライベートIPを使ってやり取りをします。外に出る必要がないので、より安全で高速に通信できるのです。
ネットワークの玄関「ポート番号」
住所(IPアドレス)が分かって、サーバーの場所までたどり着けました。でも、建物の前にはドアがたくさん並んでいます。どのドアから入ればいいのでしょうか?
このドアに付いている番号を「ポート番号」と言います。
サーバーは一度にいろんな仕事をします。「Webサイトを表示する仕事」もあれば、「メールを送る仕事」もあります。それぞれの仕事ごとに、専用の受付窓口(ドア)が決まっているのです。
- Webサイトの閲覧(HTTP):通常は「80番」のドアを使います。
- 安全なWebサイトの閲覧(HTTPS):鍵のかかった「443番」のドアを使います。
- 管理者が遠隔操作で入る(SSH):裏口のような「22番」のドアを使います。
前回登場した「セキュリティグループ」は、このドアの前に立つ警備員です。「80番のドアは誰でも通していいよ」「22番のドアは管理者しか通しちゃダメだよ」というルールを決める役割を持っています。
メリット:見えない壁で守られる安心感
AWSのネットワーク構成(VPC)を利用する最大のメリットは、「論理的な隔離」です。
物理的なケーブルをつなぎ変えなくても、画面上の設定だけで「このサーバーとあのサーバーは通信させない」といった強固な壁を作ることができます。まるで魔法のように、安全なプライベート空間を一瞬で作れるのです。
デメリット:設計の自由度が高すぎて迷う
逆にデメリットは、自由度が高すぎることです。
「サブネット」や「ルートテーブル」といった、さらに細かい設定も可能なのですが、最初は「どこをどう設定すればつながるの?」と迷子になりがちです。
まずは、「VPCという土地の中に、IPアドレスという住所を持ったサーバーがあり、ポート番号というドアが開いている」という3点セットだけ押さえておけば大丈夫です。
今後の学習の指針
ここまでで、土地(VPC)があり、建物(EC2)があり、住所(IPアドレス)も決まりました。
でも、建物の中身はまだ空っぽです。ただの空き家です。これではWebサイトを表示することはできません。
次回は、この空っぽのサーバーの中に、Webサーバーとしての機能(ソフトウェア)をインストールして、実際に「サービスを追加」する作業を行います。黒い画面(ターミナル)にコマンドを打ち込む、エンジニアっぽい作業がいよいよ始まりますよ。
Apacheインストール
前回は、AWSの中にあなた専用の住所(IPアドレス)を持ったサーバー(EC2)を用意するところまで進みましたね。
しかし、今のサーバーは、ピカピカの店舗物件を契約しただけの状態です。建物はありますが、中には商品もなければ、レジもありませんし、何より「いらっしゃいませ!」とお客様を迎える店員さんがいません。これでは、誰もお店を利用できませんよね。
今回は、この空っぽのサーバーに「Webサーバーソフト」という店員さんを雇い入れて、実際にWebサイトとして機能するように命を吹き込んでいきます。
ここからは、多くのシステム管理者が恐れる「黒い画面(コマンド操作)」が登場します。でも、大丈夫。呪文の意味さえわかれば、魔法使いになった気分で楽しくなりますよ。
サーバーへの入り口「SSH接続」
まず、あなたのパソコンから、AWS上にあるサーバーの中に入り込む必要があります。このときに使うのが「SSH(エス・エス・エイチ)」という通信手段です。
これは、あなたのパソコンとAWSのサーバーの間に、誰にも覗かれない「秘密のトンネル」を通すようなものです。
前回ダウンロードした「キーペア(秘密鍵)」を覚えていますか? あの鍵を使って、このトンネルの扉を開けます。Windowsなら「Tera Term」や「PowerShell」、Macなら「ターミナル」というソフトを使って接続します。
恐怖の(?)黒い画面「コマンドライン」
SSHで接続すると、文字だけの画面が表示されます。マウスカーソルもありません。あるのは点滅するカーソルだけ。
「うわっ、ハッカー映画で見るやつだ……」と尻込みしてしまうかもしれません。これは「CUI(キャラクター・ユーザー・インターフェース)」と呼ばれます。
普段私たちが使っているマウスで操作する画面(GUI)は、アイコンをクリックすることで「これを開いて」とコンピュータにお願いしています。
一方、このCUIは、コンピュータに直接「文字」で命令を下します。
- GUI:レストランでメニューの写真を指差して注文する
- CUI:厨房のシェフに直接「塩を3グラム入れて強火で炒めてくれ」と指示する
CUIの方が、より細かく、より正確に、そして慣れれば圧倒的に早く指示が出せるのです。
店員さん「Apache」を雇う
さて、いよいよサーバーに店員さんを配置します。
世界で最も有名なWebサーバーソフトの一つ、「Apache(アパッチ)」をインストールしましょう。
やることはシンプルです。黒い画面に向かって、以下のようにお願い(コマンド入力)をするだけです。
sudo yum install -y httpd
突然の英語で驚きましたか? これを日本語に翻訳してみましょう。
sudo(スドゥ):管理者権限でお願いします(店長として命令します)yum(ヤム):パッケージ管理ツールを使って(人材派遣会社を通して)install(インストール):導入してください(雇ってください)-y:途中の質問には全部イエスと答えますhttpd:Apacheというソフトを(Apacheの正式なパッケージ名です)
つまり、「店長権限で、人材派遣会社に連絡して、Apacheさんを即採用して連れてきて!」と言っているわけです。
これを入力してエンターキーを押すと、画面に文字がダダダッと流れ、あっという間にインストールが完了します。
店員さんを叩き起こす
インストールしただけでは、Apacheさんはまだ裏で寝ています。シフトに入ってもらいましょう。
sudo systemctl start httpd
systemctl(システムコントロール):システムの管理機能を使ってstart:起動してくださいhttpd:Apacheさんを
これでApacheさんが「はい!いらっしゃいませ!」と立ち上がりました。
これ以降、あなたのサーバーに誰かがアクセスしてくると、このApacheさんが「ヘイ、Webページですね、どうぞ!」とデータを返してくれるようになります。
テストページを作ってみる
せっかくなので、簡単な看板も作っておきましょう。
サーバーの中の特定の場所にファイルを作ると、それがWebページとして公開されます。
echo "Hello World from AWS" > /var/www/html/index.html
これは、「Hello World from AWS」という文字を書いた紙(index.html)を、お店のショーウィンドウ(/var/www/html/)に貼り付けた、という意味です。
メリット:すべてをコントロールできる自由
このようにコマンドで構築するメリットは、何と言っても「自由自在」であることです。
必要な機能だけを厳選してインストールしたり、設定を細かくチューニングしたりすることで、サーバーの性能を極限まで引き出すことができます。
また、この一連のコマンドをメモしておけば、2台目、3台目のサーバーを作るときは、それをコピー&ペーストするだけで、全く同じ環境を一瞬で再現できます。これはマウス操作では真似できない芸当です。
デメリット:学習コストとメンテナンス
デメリットは、やはり「覚えることが多い」ことです。コマンドを一文字間違えただけで動かなかったり、最悪の場合データを消してしまったりするリスクもあります。
また、ソフトのバージョンアップやセキュリティパッチの適用も、基本的には自分でコマンドを打って行わなければなりません。「自動で勝手にやってくれる」スマホアプリとは、そこが大きく異なります。
今後の学習の指針
おめでとうございます! これであなたのサーバーには、Webサイトを表示する機能が備わりました。
しかし、まだ世界中の人はあなたのサイトを見ることができません。なぜなら、前回お話しした「ファイアウォール(セキュリティグループ)」のドアが、まだWeb閲覧用には開いていないからです。
次回は、いよいよこのWebサーバーを世界に向けて公開します。「AWSの公開Webサーバー」として、自分のスマホから実際にアクセスできるように設定を変更していきましょう。
Webサーバーを公開してブラウザで表示させる
前回は、サーバーの中に「Apache」という店員さんを雇い入れ、仕事ができる状態にセットアップしましたね。黒い画面でのコマンド操作、本当にお疲れ様でした。
さて、いよいよ感動の瞬間が迫っています。
今はまだ、お店の準備が整ったのに、入口のシャッターが降りたままの状態です。店員さんは中で待機していますが、外のお客様は中に入れません。
今回は、このシャッター(ファイアウォール)を開けて、あなたのスマホやパソコンから、作ったばかりのWebサーバーにアクセスしてみましょう。自分のブラウザに、あの文字が表示されたときの感動は格別ですよ。
シャッターを開ける「セキュリティグループ」の設定
前回の章で「セキュリティグループは警備員のようなもの」とお話ししたのを覚えていますか?
今、この警備員さんは「管理者(SSH:22番ポート)だけは通していいよ」という指示を受けています。しかし、一般のお客様(HTTP:80番ポート)については何も指示を受けていないため、門前払いにしている状態です。
そこで、AWSの管理画面に戻り、警備員さんに新しい指示を出します。
インバウンドルールの変更
具体的には、セキュリティグループの「インバウンドルール(入ってくる通信のルール)」という設定を変更します。
ここに、「タイプ:HTTP」「ポート範囲:80」「ソース:0.0.0.0/0」というルールを追加します。
この「0.0.0.0/0」というのは、「世界中のどこからでも」という意味です。
これで警備員さんは、「Webサイトを見に来た人(HTTP)なら、誰でも通していいんだね!」と理解し、お店のシャッターをガラガラと開けてくれます。
いざ、アクセス!
さあ、準備は整いました。
AWSの管理画面で、あなたが作ったサーバー(インスタンス)の情報を確認してください。「パブリックIPv4アドレス」という数字(例:203.0.113.10)が表示されているはずです。
この数字をコピーして、普段使っているChromeやEdgeなどのブラウザのアドレスバーに貼り付け、エンターキーを押してください。
どうでしょう?
真っ白な画面に、Hello World from AWS という文字が表示されましたか?
もし表示されたなら、おめでとうございます!
その瞬間、あなたが作ったサーバーは、インターネットという広大な海を通じて、あなたの手元のパソコンと繋がりました。それはもう、誰にも邪魔されない、あなただけのWebサイトです。
スマホの4G回線からアクセスしても、同じ文字が見えるはずです。これが「Webサーバーを公開する」ということです。
住所が変わってしまう問題「Elastic IP」
しかし、ここで一つ大事な落とし穴があります。
実は、今使っている「パブリックIPアドレス」は、仮の住所なんです。
AWSの仕様で、サーバーを一度停止して、もう一度起動すると、このIPアドレスは勝手に別の数字に変わってしまいます。
これでは困りますよね。せっかく「ここが私のお店です」と名刺(IPアドレス)を配ったのに、翌日にはお店の場所が変わっているようなものです。
そこで登場するのが、「Elastic IP(エラスティック・アイピー)」というサービスです。
これは「固定IPアドレス」とも呼ばれ、一度取得すれば、サーバーを再起動しても変わらない、あなた専用の「固定の表札」になります。
Webサーバーとして本格的に運用するなら、このElastic IPを取得して、サーバーに紐付けておくのが定石です。これで、いつアクセスしても同じ住所にお店がある状態を作ることができます。
メリット:世界中とつながる力
Webサーバーを公開するメリットは、言うまでもなく「世界中の人に情報を届けられること」です。
中小企業のホームページであれ、社内システムであれ、インターネットに公開することで、場所を選ばずに仕事ができる環境を提供できます。AWSなら、その公開範囲も「全世界」にするか、「特定の会社のIPからだけ」にするか、柔軟にコントロールできます。
デメリット:攻撃のリスクも公開される
一方で、Webサーバーを公開するということは、同時に「攻撃者からも見えるようになる」というデメリットと隣り合わせです。
「0.0.0.0/0(全公開)」の設定にした瞬間から、世界中の悪意あるボットやハッカーが、あなたのサーバーのドアをガチャガチャと回し始めます。「鍵の閉め忘れはないか?」「古いバージョンのソフトを使っていないか?」と常に探ってくるのです。
怖がらせてしまったかもしれませんが、これはインターネットに家を建てる以上、避けては通れない現実です。だからこそ、正しいセキュリティ対策が必要になります。
今後の学習の指針
これで、あなたのWebサーバーは全世界に公開されました。
しかし、今の状態は「とりあえず鍵を開けただけの状態」です。通信は暗号化されていませんし(httpのまま)、OSの中身のセキュリティ設定も最低限です。
そこで次回は、この連載の最終回として「AWSの公開Webサーバーのセキュリティ」について解説します。
攻撃者からどうやってサーバーを守るのか、最低限やっておくべき施策は何なのか。安心して夜眠れる管理者になるための、最後の仕上げを行いましょう。
必須セキュリティ対策
ついにここまで来ましたね! あなたのWebサーバーは今、インターネットの大海原に公開され、世界中のどこからでもアクセスできる状態になりました。システム管理者として、これは大きな一歩です。
でも、この連載の最後として、少し怖いけれど絶対に知っておかなければならない「現実」をお伝えします。
インターネットにサーバーを公開するということは、「泥棒や強盗がうろついている通りに、ガラス張りのお店を出す」のと同じことなのです。
もし、鍵をかけ忘れたり、金庫を開けっ放しにしていたりしたらどうなるでしょうか? 悪意のある攻撃者は、あなたが寝ている間も、休んでいる間も、24時間365日、侵入できる隙間を探し続けています。
最終回となる今回は、そんな攻撃者から大切なサーバーを守るための「セキュリティ対策」についてお話しします。難しそうに聞こえるかもしれませんが、やるべきことはシンプルです。一緒に見ていきましょう。
鉄則1:管理者用のドア(SSH)を絞る
前回の設定で、Webサイトを見るためのドア(80番ポート)を世界中(0.0.0.0/0)に開放しました。これはお店の入り口なのでOKです。
しかし、管理者が出入りするための「裏口(SSH:22番ポート)」はどうなっていますか? もしここも「世界中からアクセス可能」になっていたら、非常に危険です。
世界中のハッカーが、あなたの裏口のドアノブをガチャガチャと回し続け、パスワードや鍵の突破を試みてくるでしょう。
【対策】
AWSのセキュリティグループ設定で、SSH(22番ポート)の許可範囲を「マイIP」に変更してください。
これは「今、私が使っているインターネット回線の住所からしか、裏口は見えなくする」という設定です。
こうすれば、攻撃者からは裏口のドアそのものが存在しないように見えます。これだけで、侵入されるリスクは劇的に下がります。
鉄則2:建物を常に最新にする(アップデート)
サーバーの中に入っているソフト(OSやApacheなど)は、人間が作ったものです。そのため、どうしても「バグ」や「セキュリティの穴(脆弱性)」が見つかることがあります。
攻撃者は、この「穴」を狙ってきます。「古いバージョンのApacheを使っているな。よし、あの有名な抜け穴から侵入しよう」といった具合です。
【対策】
定期的にサーバーの中で以下のコマンドを実行し、ソフトを最新の状態に保ちましょう。
sudo yum update -y
これはスマホの「アプリアップデート」と同じです。面倒くさがらずにこまめに実施することで、発見された穴を塞ぐことができます。
「昨日までは安全だった建物が、今日見つかった穴のせいで危険になる」のがセキュリティの世界です。最新こそが最強の防御です!
鉄則3:万が一のために保険をかける(バックアップ)
どれだけ対策しても、人間が操作する以上、ミスは起きます。設定を間違えて動かなくなったり、最悪の場合、ランサムウェアのようなウイルスに感染してデータが人質に取られたりすることもあるかもしれません。
そんなとき、唯一の救いとなるのが「バックアップ」です。
【対策】
AWSには「AMI(アミ)」や「スナップショット」という機能があります。これを使うと、「その瞬間のサーバーの状態」を丸ごと写真に撮るように保存できます。
もしサーバーが壊れても、保存しておいた写真(スナップショット)から、「壊れる直前の状態のサーバー」を数分で復元できます。
定期的にこのバックアップを取っておくことは、システム管理者の心の平穏を守るために最も重要な仕事と言えるでしょう。
セキュリティ対策のメリットとデメリット
セキュリティ対策を行うことの意味を改めて整理します。
メリット:ビジネスの信頼を守る
Webサイトが改ざんされたり、顧客情報が漏洩したりすれば、会社としての信頼は地に落ちてしまいます。適切なセキュリティ対策を行うことは、会社のブランドと資産を守る「鎧」となります。
また、AWSの機能を使えば、高価なセキュリティ機器を買わなくても、クリック数回でプロレベルの防御機能を導入できるのも大きなメリットです。
デメリット:利便性とのトレードオフ
セキュリティを高くすると、使い勝手は悪くなる傾向にあります。
例えば、「会社のパソコンからしかサーバーに入れない(IP制限)」ようにすると、カフェや自宅から急いで対応したいときにアクセスできなくて困る、といったことが起きます。
「安全性」と「便利さ」のバランスをどこで取るか、これはシステム管理者が悩み続ける永遠のテーマです。
AWSのセキュリティは「二人三脚」
最後に、「責任共有モデル」という言葉を贈ります。
AWSは、データセンターの建物や、物理的なサーバー機器のセキュリティには絶対の責任を持ってくれます(クラウド事業者の責任)。
しかし、そのサーバーの中で「どんなパスワードを使うか」「どのポートを開けるか」「ソフトを更新するか」は、すべて利用者であるあなたの責任です(ユーザーの責任)。
「クラウドだから勝手に守ってくれるだろう」という油断が一番の敵です。AWSという頼もしいパートナーと協力して、二人三脚で守っていく意識を持ってください。
シリーズのまとめと、今後の学習の指針
全7回にわたり、AWSを使ったWebサーバー構築についてお話ししてきました。いかがでしたでしょうか。
最初は「雲の上の話」のようだったクラウドが、今では「自分の手で操作できる道具」に変わっているはずです。
- クラウドとは:所有から利用への転換
- EC2:必要なときにすぐ使える仮想サーバー
- 構築体験:クリックだけでインフラが手に入る
- VPC:自分専用の土地と住所
- Apache:サーバーに魂を吹き込む
- 公開:世界とつながる感動
- セキュリティ:責任を持って守る意識
この連載は、AWSという巨大な山の入り口に立ったに過ぎません。
AWSには、サーバーだけでなく、データベース(RDS)、ストレージ(S3)、AI、IoTなど、200以上のサービスがあります。
ここから先は、ぜひあなたの好奇心の赴くままに学習を続けてください。「データベースを切り離して管理するには?」「アクセスが増えたら自動でサーバーを増やすには?」といった疑問が、次のステップへの道しるべになります。
システム管理者という仕事は大変ですが、自分の作った仕組みが会社のビジネスを支え、世界とつながる瞬間は、何にも代えがたい喜びがあります。
来月の請求書で青ざめないための「お片付け」講座
前回の記事で、セキュリティ対策を学び、本連載のカリキュラムはすべて修了しました。「これで終わりじゃないの?」と思われたかもしれません。
しかし、あなたが「次」を求めてくれたおかげで、実は最も重要かもしれない話をすることができます。それは「作ったものを壊す(削除する)」方法です。
オンプレミスのサーバーなら、電源を切れば電気代はかかりません。しかし、AWSのようなクラウドサービスは、設定によっては「サーバーを止めていても料金がかかる」ものが存在します。
「勉強のためにちょっと触っただけなのに、翌月に数千円、数万円の請求が来た!」というのは、初心者が必ず通る(そして避けるべき)失敗談の筆頭です。
今回は番外編として、お財布を守るための正しい「お片付け手順」を解説します。家に帰るまでが遠足であるように、リソースを削除するまでがAWS学習です!
手順1:サーバー(EC2)を「終了」する
まずは、立ち上げたサーバーを削除しましょう。
AWSでは、サーバーを一時停止することを「停止(Stop)」、完全に削除することを「終了(Terminate)」と呼びます。ここが紛らわしいので注意してください。
- 停止(Stop):電源をOFFにした状態。サーバーの中身(データ)は残るため、保管料(ストレージ料金)がかかり続けます。
- 終了(Terminate):サーバーを破棄した状態。データも消えます。料金はかからなくなります。
学習が終わって、もうこのサーバーを使わないのであれば、迷わず「インスタンスを終了」を選んでください。
管理画面から対象のインスタンスを選び、「インスタンスの状態」メニューから「インスタンスを終了」をクリックします。
数分後、ステータスが「終了済み(Terminated)」になれば、サーバー本体の課金は止まります。
手順2:ここが罠!「Elastic IP」の解放
初心者が一番ハマる罠がこれです。
前回、固定IPアドレス(Elastic IP)のお話をしましたね。「サーバーを再起動しても住所が変わらない便利な機能」ですが、実はこれ、「サーバーに使っていないときはお金がかかる」という特殊な料金体系になっています。
なぜかというと、IPアドレスは世界的に貴重な資源だからです。「使わないなら他の人に譲ってね」というペナルティ料金(1時間あたり0.5円程度ですが、ちりも積もれば山となります)が発生するのです。
【操作手順】
- EC2のメニューから「Elastic IP」を選びます。
- 取得したIPアドレスを選択します。
- アクションメニューから「Elastic IP アドレスの解放」を選びます。
これでリストからIPアドレスが消えればOKです。サーバー(EC2)を終了しただけでは、このIPアドレスは残り続け、ひっそりと課金され続けます。必ず手動で解放してください。
手順3:請求ダッシュボードの確認
最後に、本当に課金が止まっているか、あるいは今いくら使っているかを確認する癖をつけましょう。
AWSの画面右上のアカウント名をクリックし、「請求ダッシュボード(Billing Dashboard)」を開きます。
ここには、現在の利用料金の速報値が表示されています。
「AWS 予算(Budgets)」という機能を使えば、「月の利用料が10ドルを超えそうになったらメールで通知する」といった設定も可能です。転ばぬ先の杖として、最初に設定しておくことを強くおすすめします。
まとめ:キレイに消して、また次を作る
お疲れ様でした! これで本当に、AWSのWebサーバー構築体験は完了です。
クラウドの良いところは「スクラップ&ビルド(作っては壊す)」が簡単なことです。
今回、せっかく作ったサーバーを消すのは少し寂しいかもしれませんが、また作りたくなったら、前回の記事を見ながら数分で作ればいいのです。
「作って、動かして、壊す」
このサイクルを何度も繰り返すことで、操作は指に馴染み、AWSへの理解は深まっていきます。
この連載が、あなたの中小企業システム管理者としてのスキルアップに、そしてあなたの会社のDX(デジタルトランスフォーメーション)に少しでも役立つことを願っています。
【演習レベル1】「名刺サイト」を作る
前回のヒントでは少し難しそうなコマンドを紹介してしまいましたが、ここでは手順を噛み砕いて、「なぜそのコマンドを打つのか」を解説しながら進めていきます。
これは、あなたのサーバーに「表札」と「自己紹介カード」を貼り付ける作業です。一緒にやってみましょう。
事前準備
まず、以下の状態になっていることを確認してください。
- PCからAWSのサーバー(EC2)にSSH接続できている(黒い画面が開いている)。
- Webサーバーソフト(Apache)がインストールされ、起動している。
もし不安なら、以下のコマンドで店員さん(Apache)が働いているか確認しましょう。
sudo systemctl status httpd
画面に緑色の文字で active (running) と出ていれば準備OKです。q キーを押して元の画面に戻ります。
ステップ1:HTMLファイルという「画用紙」
Webサイトの正体は、実はただのテキストファイルです。
index.html という名前のファイルが、Webサイトの「表紙」として扱われます。
このファイルは、サーバーの中の /var/www/html/ という場所に置くルールになっています。ここは、いわば「お店のショーウィンドウ」です。ここに置いたものだけが、外の世界から見えます。
ステップ2:タイトルを書き込む(上書き保存)
では、ショーウィンドウにある画用紙に、大きくタイトルを書き込みましょう。
以下のコマンドをコピーして、黒い画面に貼り付け、エンターキーを押してください。
sudo sh -c 'echo "<h1>ようこそ!〇〇のサーバーへ</h1>" > /var/www/html/index.html'
(※「〇〇」の部分は、好きな名前に書き換えてもOKです)
このコマンドの意味
少し長いので、分解して解説します。
sudo:管理者権限で実行します(これがないと書き込めません)。sh -c '...':シングルクォートの中身をコマンドとして実行します。echo "...":「...」という文字を叫びます(出力します)。>:ここが重要です! 「叫んだ内容で、ファイルを上書きする」という記号です。/var/www/html/index.html:書き込み先のファイル場所です。
つまり、「管理者権限を使って、『ようこそ...』という文字で index.html を新しく作り変えろ!」という命令です。
ステップ3:自己紹介を書き足す(追記保存)
タイトルだけでは寂しいので、その下にメッセージを書き足します。
先ほどと少しだけ記号が違うので、注意して見てください。
sudo sh -c 'echo "<p>現在はAWSの勉強中です。毎日成長しています!</p>" >> /var/www/html/index.html'
このコマンドの意味
>>:先ほどは>(1個)でしたが、今回は>>(2個)です。- これは「今の内容を消さずに、一番下に行を追加する」という意味です。
もしここで間違って >(1個)を使ってしまうと、せっかく書いたタイトルが消えて、自己紹介文だけになってしまいます。
「> は上書き(破壊)」、「>> は追記(やさしい)」と覚えておきましょう。
使っているタグの意味
今回使った英語の記号は「HTMLタグ」と呼ばれるものです。
<h1> ... </h1>:見出し(Heading)の1番。文字が一番大きく太く表示されます。<p> ... </p>:段落(Paragraph)。通常の文章を表示するときに使います。
ステップ4:ブラウザで確認する
さあ、書き込みは終わりました。実際に見てみましょう。
- AWSの管理画面で、EC2インスタンスの「パブリックIPv4アドレス」をコピーします。
- Chromeなどのブラウザのアドレスバーに貼り付けて、エンターキーを押します。
画面に、あなたが書いたタイトルとメッセージが表示されましたか?
もし、「ようこそ!〇〇のサーバーへ」という文字がドーンと表示されていれば、大成功です!
あなたは今、世界に一つだけのWebサイトを、自分の手で作り上げました。
うまく表示されないときは?
- ずっと読み込み中のままになる
- セキュリティグループ(ファイアウォール)の設定で、HTTP(80番ポート)が開いていない可能性があります。「0.0.0.0/0」で許可されているか確認してください。
- 「接続が拒否されました」と出る
- Apacheが起動していない可能性があります。
sudo systemctl start httpdを実行してみてください。
- Apacheが起動していない可能性があります。
- 文字化けする
- 日本語が変な記号になっている場合、ブラウザが文字コードを勘違いしています。今回は簡易的な作成方法なので気にしなくて大丈夫ですが、本来は
<meta charset="UTF-8">というおまじないを書くことで直ります。
- 日本語が変な記号になっている場合、ブラウザが文字コードを勘違いしています。今回は簡易的な作成方法なので気にしなくて大丈夫ですが、本来は
今後の学習の指針
今回はコマンド一発でファイルを作りましたが、本来は「vi(ヴィアイ)」や「nano(ナノ)」という、黒い画面の中で動く「テキストエディタ(メモ帳のようなソフト)」を使って編集するのが一般的です。
もし余裕があれば、「Linux vi 使い方」などで検索して、エディタでの編集にも挑戦してみてください。これが使えるようになると、もっと長い文章や、複雑なWebページも作れるようになりますよ。
まずはこの「名刺サイト」が表示された喜びを噛み締めてくださいね!
【演習レベル2】セキュリティグループでアクセス制限をかける方法
レベル1のクリア、おめでとうございます! 自分の名前がブラウザに表示されたときの感動、忘れないでくださいね。
さて、次は「レベル2」です。
前回作ったWebサイトは、実は今、世界中の誰からでも見られる状態になっています。もし、そこに「未発表の新商品情報」や「社外秘のマニュアル」が書いてあったら……ゾッとしますよね。
今回は、AWSの強力なバリア機能「セキュリティグループ」の設定を書き換えて、「あなただけしか見られない秘密のWebサイト」に変身させます。
これをマスターすれば、「工事中のサイトを関係者だけでチェックする」といった、プロっぽい運用ができるようになりますよ。
レベル2のミッション
- Webサーバーの公開設定(0.0.0.0/0)をやめる。
- 「今、あなたが使っているパソコン」だけを特別扱いして通す設定にする。
- 本当に他の人(スマホなど)から見えなくなったか実験する。
ステップ1:警備員(セキュリティグループ)を探す
まずは、設定画面に行きましょう。
- AWSマネジメントコンソールで「EC2」の画面を開きます。
- 左側のメニューから「インスタンス」をクリックし、あなたが作ったサーバー(MyFirstWebServerなど)にチェックを入れます。
- 画面の下の方にある「セキュリティ」というタブをクリックします。
- そこに「セキュリティグループ」という青いリンク(例:sg-01234abc...)があるので、それをクリックします。
これで、サーバーを守っている警備員さんの「指令書」の画面に飛びました。
ステップ2:招待リストを書き換える
今は、指令書(インバウンドルール)に「HTTP(80番)は、誰でも(0.0.0.0/0)通してよし!」と書いてあります。これを書き換えます。
- 画面右上の「インバウンドのルールを編集」ボタンをクリックします。
- 「タイプ:HTTP」の行を見つけてください。
- 「ソース」という欄が
0.0.0.0/0になっているはずです。ここにある0.0.0.0/0を「×」ボタンで消します。 - 空になったソース欄の右側をクリックすると、メニューが出てきます。そこから「マイIP」を選んでください。
すると、AWSが自動的に「今あなたがアクセスしているインターネットのIPアドレス」を検知して、数字を入力してくれます。便利ですね!
- 最後に右下の「ルールを保存」をクリックします。
これで警備員さんに、「これからは、この特定の住所(あなたのPC)から来た人だけ通してね。それ以外の人は無視して!」という新しい指令が渡りました。
ステップ3:検証実験A「自分は見えるか?」
まずは、許可されたあなた自身がアクセスできるか確認です。
- PCのブラウザで、先ほどのWebサイト(IPアドレス)にもう一度アクセス(リロード)してください。
どうですか? さっきと同じように「ようこそ!〇〇のサーバーへ」が表示されましたか?
表示されていればOKです。あなたは「招待リスト」載っているので、警備員さんが通してくれました。
ステップ4:検証実験B「他人は見えないか?」
ここからが面白くなります。本当に「他人」がシャットアウトされているか確かめましょう。
一番手軽な「他人」は、あなたのスマートフォンです。
【超重要ポイント】
スマホのWi-Fiを必ずOFFにしてください!
Wi-Fiに繋いでいると、PCと同じインターネット回線(同じ住所)になってしまうため、見えてしまいます。4Gや5Gなどの携帯回線にすることで、「外部の他人」になりきることができます。
- スマホのWi-Fiを切る。
- スマホのブラウザ(SafariやChrome)を開く。
- アドレスバーに、サーバーのIPアドレス(数字)を入力してアクセスする。
……どうなりましたか?
画面の上にある青いバーが、いつまで経っても進まず、ずっと読み込み中のままになっていませんか?
そして最後に「ページを開けません」「応答時間が長すぎます(タイムアウト)」という冷たいメッセージが出たはずです。
大成功です!
これは、スマホからのアクセスが警備員(セキュリティグループ)によって無視され、門前払いを受けた証拠です。
「接続拒否」と「タイムアウト」の違い
ここで一つ、エンジニアらしい知識をお伝えします。
もし、サーバーの中の「Apache(店員さん)」が止まっている場合は、すぐに「接続できません」というエラーが出ます。これを「接続拒否(Connection Refused)」と言います。「家までは行けたけど、誰も出てこない」状態です。
一方、今回のようにセキュリティグループでブロックされた場合は、「タイムアウト(Time out)」になります。これは、「家の場所すら教えてもらえず、手紙を送っても無視され続けている」状態です。
この違いがわかると、「あ、今はファイアウォールで弾かれているな」とすぐに判断できるようになります。
今後の学習の指針
これであなたは、Webサイトの公開範囲を自由自在にコントロールできるようになりました。
- 全世界に見せたいときは
0.0.0.0/0 - 自分だけに見せたいときは
マイIP - 会社のメンバーに見せたいときは
会社のIPアドレス
この使い分けは、実際の現場で毎日のように行われています。
ぜひ、「マイIP」の便利さと、スマホで見られなくなったときの「守られている感」を楽しんでくださいね。
【演習レベル3】リアルタイム監視
レベル2の「鉄壁の防御」、お見事でした。
自分だけが入れる秘密のWebサイトなんて、なんだか秘密基地みたいでワクワクしますよね。
さて、今回の「レベル3」は、少し趣向を変えて「監視」です。
あなたのサーバーに誰かがアクセスした瞬間、その記録(ログ)がどのように残るのかを見たことはありますか?
映画やドラマで、ハッカーが黒い画面を見つめながら「…来た!奴が動いたぞ!」なんて言っているシーン。あれを実際にあなたの手で再現してみましょう。
これができるようになると、何かトラブルが起きたときに「いつ、誰が、何をしたか」を瞬時に突き止めることができるようになります。探偵の推理道具を手に入れるようなものです。
レベル3のミッション
- 黒い画面(ターミナル)で、アクセスログをリアルタイムで表示し続ける状態にする。
- 自分のブラウザからWebサイトにアクセスして、画面に文字が流れるのを目撃する。
- ログに書かれている「暗号」の意味を解読する。
ステップ1:監視カメラのスイッチを入れる
まずは、いつものようにTera Termやターミナルを使って、EC2サーバーにSSH接続してください。
黒い画面が出たら、以下のコマンドを入力します。これが「監視カメラのモニターをONにする」魔法の言葉です。
sudo tail -f /var/log/httpd/access_log
このコマンドの意味
tail(テイル):ファイルの「しっぽ(末尾)」を表示するコマンドです。-f(フォロ-):ここが重要! 「最新の追記をずっと追いかけ続ける(Follow)」というオプションです。これがないと、現在の状態を1回表示して終わってしまいます。/var/log/httpd/access_log:Apache(店員さん)が業務日誌をつけているファイルの場所です。
エンターキーを押しても、カーソルが点滅したままで、何も起きないかもしれません。
でも、それで正常です。今は「誰も来ていないから、何も書くことがない」状態です。カメラは回っています。じっと待ち構えているのです。
ステップ2:足跡を残してみる
では、その状態でブラウザ(Chromeなど)を開き、あなたのWebサイトにアクセスしてみてください。
(※レベル2で制限をかけたままの場合は、許可されたPCからアクセスしてくださいね)
ブラウザの更新ボタン(F5キー)を連打してみましょう。
チラッと黒い画面の方を見てください。
……どうですか?
あなたがブラウザを更新するたびに、黒い画面に文字がダダダッ!と流れてきませんか?
これがリアルタイムログ監視です。あなたの行動が、即座にサーバー側に伝わり、記録されている瞬間を目撃したのです。
ステップ3:暗号を解読せよ
流れてきた文字の羅列、一見すると難しそうですが、実は決まったフォーマットで書かれています。
典型的なログの1行を、日本語訳してみましょう。
【実際のログ(例)】
203.0.113.10 - - [23/Dec/2025:10:15:00 +0000] "GET / HTTP/1.1" 200 45
【翻訳】
- 203.0.113.10
- 「誰が」:アクセスしてきた人の住所(IPアドレス)です。これはあなたのPCのIPですね。
- [23/Dec/2025:10:15:00 +0000]
- 「いつ」:アクセスがあった日時です。世界標準時(UTC)なので、日本時間より9時間遅れて表示されることが多いです。
- "GET / HTTP/1.1"
- 「何を」:「トップページ(/)のデータをください(GET)」という注文内容です。
- 200
- 「結果」:ここが一番大事です! これは「ステータスコード」と呼ばれます。
- 200:成功!「はい、どうぞ」と正常に返しました。
- 404:Not Found。「そんなファイルはありません」
- 500:サーバーエラー。「内部でエラーが起きました」
つまりこの1行は、「203.0.113.10さんが、12月23日の10時15分にトップページを見に来たので、正常に表示しましたよ」という報告書なのです。
監視を終了する方法
この tail -f コマンドは、あなたが止めるまで永遠に監視を続けます。
元の黒い画面(コマンド入力ができる状態)に戻るには、以下のキー操作を行ってください。
- Ctrl キーを押しながら C キー
これは「Cancel(中断)」の合図です。これでカーソルが戻ってきます。
今後の学習の指針
システム管理者の現場では、Webサイトの調子が悪いとき、まず最初にこのコマンドを打ちます。
「画面が真っ白なんです!」という問い合わせが来ても、ログを見て 200 が並んでいれば「サーバーは正常だから、お客さんのスマホの電波が悪いだけかも?」と推測できます。
逆に 500 が出ていれば「わっ、プログラムが壊れてる! すぐ直さなきゃ!」と判断できます。
ログは「サーバーの健康診断書」です。
何かあったら、まずは tail -f 。これを合言葉にしてください。
さあ、次はいよいよ最終試練「レベル4」です。
自分でサーバーを壊して、自分で直す。マッチポンプのようなトラブルシューティング訓練です。準備はいいですか?
【演習レベル4】「つながらない」の原因を突き止める
ついに最終試練、レベル4に到達しましたね!
ここまでのあなたは、言われた通りにコマンドを打ち、正しく動くものを作ってきました。これは「建設」のスキルです。
しかし、現場のシステム管理者に本当に求められるのは、「動かないときに、なぜ動かないのかを見抜く力」、つまり「診断」のスキルです。
今回は、正常に動いているサーバーを、あえて自分の手で壊してみます。
「えっ、壊すの?」と怖がる必要はありません。どこをどう壊すと、どんなエラーが出るのかを知っておけば、将来本当にトラブルが起きたときに、慌てずに原因を特定できるようになるからです。
それでは、システム管理者の腕の見せ所、トラブルシューティングの訓練を始めましょう!
レベル4のミッション
- Webサーバーソフト(Apache)を停止させ、ブラウザのエラー画面を確認する。
- セキュリティグループの設定を削除し、ブラウザのエラー画面を確認する。
- それぞれの「つながらない」症状の違いを体感し、原因を特定できるようになる。
実験1:店員さんが急に帰っちゃった事件(Connection Refused)
まずは、サーバーのプログラム自体が止まってしまった状態を再現します。
お店(サーバー)の鍵は開いていますが、中にお客さん対応をする店員さん(Apache)がいません。
1. 破壊工作を行う
黒い画面(SSH接続)で、以下のコマンドを入力してください。
sudo systemctl stop httpd
stop:起動(start)の逆で、「停止しろ」という命令です。- 何もエラーが出ずにコマンドが終われば、Apacheは停止しました。
2. 症状を確認する
ブラウザで、あなたのWebサイトにアクセス(リロード)してください。
【結果】
一瞬で、すぐにエラー画面が出ませんでしたか?
画面には「このサイトにアクセスできません」「接続が拒否されました(ERR_CONNECTION_REFUSED)」といったメッセージが表示されているはずです。
3. 解説と復旧
これは「門前払い」です。
「おーい」と声をかけたら、即座に「誰もいません!」と返事が来たような状態です(厳密にはOSが「そのポートで待ってるソフトはないよ」と即答しています)。
このエラーが出たら、「ネットワークは繋がっているけれど、Webサーバーソフトが死んでいる(落ちている)」と判断できます。
【復旧コマンド】
店員さんを叩き起こしましょう。
sudo systemctl start httpd
ブラウザを更新して、元通り表示されることを確認してください。
実験2:お店への道が封鎖された事件(Time out)
次は、もっと厄介な「ネットワーク遮断」を再現します。
店員さんは元気ですが、お店にたどり着くまでの道が塞がれている状態です。
1. 破壊工作を行う
- AWSの管理画面で、EC2の「セキュリティグループ」を開きます(レベル2で操作した画面です)。
- 「インバウンドのルールを編集」をクリックします。
- HTTP(80番ポート)のルールを「削除」ボタン(ゴミ箱アイコンなど)で消してください。
- 「ルールを保存」をクリックします。
これで、Webサイトへの入り口が完全に塞がれました。
2. 症状を確認する
ブラウザで、もう一度Webサイトにアクセス(リロード)してください。
【結果】
今度は、さっきと様子が違いませんか?
エラー画面がすぐに出ず、タブのアイコンがずっとグルグル回り続けているはずです。
そして、長い時間待たされた挙句、最後に「応答時間が長すぎます」「タイムアウトしました(ERR_CONNECTION_TIMED_OUT)」と表示されます。
3. 解説と復旧
これは「無視」です。
あなたが「おーい」と呼びかけても、ファイアウォール(セキュリティグループ)がその声を握りつぶしているため、返事が来ません。ブラウザは「返事が来るかも……」と待ち続けた結果、時間切れで諦めたのです。
このグルグル(タイムアウト)が出たら、「サーバーソフトの問題ではなく、ネットワークやファイアウォールの設定ミスだ」と判断できます。
【復旧手順】
- セキュリティグループの編集画面に戻ります。
- 「ルールを追加」をクリック。
- タイプ「HTTP」、ソース「マイIP(または0.0.0.0/0)」を設定して保存します。
ブラウザを更新して、元通り表示されることを確認してください。グルグルせずにパッと表示されるはずです。
レベル4まとめ:エラー画面は「答え」を教えてくれる
お疲れ様でした! 2つの「つながらない」の違い、肌で感じ取れましたか?
| 症状 | エラーメッセージ | 原因の可能性 | 対処法 |
| 一瞬でエラー | 接続が拒否されました (Refused) | Apacheが止まっている | sudo systemctl start ... |
| ずっとグルグル | タイムアウト (Timed Out) | セキュリティグループの設定ミス | AWS管理画面の設定確認 |
初心者のうちは、どっちも「つながらない!壊れた!」とパニックになりがちです。
でも、この違いを知っているあなたは、エラー画面を見た瞬間に「あ、これはファイアウォールだな」「これはApacheが落ちたな」と冷静に切り分けることができます。
これが、プロのシステム管理者の第一歩です。
シリーズ完結!次なる冒険へ
これにて、全4レベルのハンズオン演習はすべて終了です。
名刺サイトを作り、セキュリティで守り、ログを監視し、トラブルを解決する。この短期間で、あなたはこれだけの経験を積みました。
今のあなたは、もう「AWSって何?」と言っていた頃のあなたではありません。
自信を持ってください。そして、これからも恐れずに新しい技術に触れていってください。
最後に、遊び終わったサーバー(EC2)は、課金を防ぐために「インスタンスを終了」し、「Elastic IPを解放」することを忘れずに!(番外編のお片付け手順を思い出して!)
長い間、本当にありがとうございました。
あなたのエンジニアとしての未来が、クラウドのようにどこまでも晴れ渡ることを祈っています!
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年12月23日クラウドサービス入門 ~AWSでWebサーバーを公開するための知識~
山崎講師2025年12月23日失敗しないエンジニアへの第一歩!「前提条件」を言葉にするだけで仕事が劇的に変わる理由
山崎講師2025年12月20日【新人エンジニア向け】素数が無限に続く不思議!ユークリッドの証明をサクッと理解しよう
山崎講師2025年12月20日【超入門】「世界で一番大きな数は存在しない」を証明せよ!小学生でもわかる背理法