Azure VMでWebサーバー構築|IIS/Nginxの導入から公開までの全手順
生徒
「クラウドを使って自分専用のWebサイトを公開したいのですが、Azure(アジュール)のVirtual Machines(バーチャルマシン)を使えば可能ですか?」
先生
「もちろんです!Azure Virtual Machines(通称:Azure VM)は、インターネット上に自分だけの専用パソコン(サーバー)を借りるような仕組みです。WindowsならIIS、LinuxならNginx(エンジンエックス)というソフトを入れることで、世界中にサイトを公開できますよ。」
生徒
「難しそうですが、初心者でも手順通りに進めれば構築できますか?」
先生
「大丈夫です。設定のポイントを一つずつ丁寧に解説していきますね。まずはWebサーバーが動く仕組みから見ていきましょう!」
1. Azure Virtual MachinesとWebサーバーの基本
Azure Virtual Machines(アジュール・バーチャル・マシン)とは、マイクロソフトが提供するクラウドサービス「Microsoft Azure」の中で、仮想的なコンピューターを作成できるサービスです。物理的な機械を自分で用意する必要がなく、マウス操作だけで高機能なサーバーを手に入れることができます。
Webサーバーとは、インターネットを通じてWebサイトのデータをブラウザ(Google ChromeやEdgeなど)に届ける役割を持つソフトウェアのことです。代表的なものに、Windows向けのIIS(インターネット・インフォメーション・サービス)や、世界中で広く使われているNginx(エンジンエックス)があります。これらをAzure VMにインストールすることで、自分だけのホームページやWebアプリを公開する土台が完成します。
クラウドを利用するメリットは、必要なときだけ起動して、使わないときは止めておくことで料金を節約できる点です。まさに現代のITインフラ(基盤)には欠かせない技術となっています。
2. Azureポータルで仮想マシンの作成を開始する
まずは、Azureの管理画面である「Azureポータル」にログインして、新しい仮想マシンを作成します。リソースの作成画面から「Virtual Machine」を選択しましょう。ここで設定する主な項目は以下の通りです。
- リソースグループ: 関連するサービスをまとめる箱の名前です。新しく作成しましょう。
- 仮想マシン名: 自分で識別しやすい名前(例:my-web-server)を付けます。
- 地域: 日本であれば「Japan East(東日本)」などを選びます。
- イメージ: Windows Server 2022(IIS用)や、Ubuntu 22.04(Nginx用)などのOS(オーエス)を選択します。
- サイズ: スペック(性能)を選びます。初心者の学習用なら「B1s」などの安価なプランで十分です。
管理者のアカウント名とパスワードは、後でサーバーにログインするために必要なので、必ずメモしておきましょう。このパスワードが漏れると、第三者にサーバーを操作される危険があるため、複雑なものに設定するのがルールです。
3. ネットワーク設定とポートの開放
Webサーバーを公開するために最も重要なのが「ネットワーク設定」です。デフォルトの状態では、セキュリティのために外部からの通信が遮断されています。これを「ファイアウォール」と呼びます。Webサイトを見られるようにするためには、HTTP(エイチティーティーピー)とHTTPS(エイチティーティーピーエス)という通信路を開ける必要があります。
Azureの「ネットワークセキュリティグループ(NSG)」という設定画面で、以下のポート番号を許可する受信規則を追加します。
- ポート80: 標準的なWeb通信(HTTP)用
- ポート443: セキュリティで保護された通信(HTTPS)用
- ポート3389: Windowsのリモートデスクトップ接続用
- ポート22: LinuxのSSH接続用
これらの鍵を開けることで、ようやく外の世界からあなたのサーバーにアクセスできるようになります。これを設定し忘れると、どんなにサーバー側の設定を頑張ってもサイトは表示されません。
4. Windows ServerでIISをインストールする手順
Windows Serverを選択した場合、IISを導入してWebサーバー化します。リモートデスクトップでサーバーにログインしたら、「サーバーマネージャー」を開きます。「役割と機能の追加」ウィザードを進め、役割の一覧から「Web Server (IIS)」にチェックを入れます。
インストールが完了すると、自動的にWebサーバーが動き出します。試しに、自分のパソコンのブラウザから、Azureポータルで確認した「パブリックIPアドレス」を入力してみてください。IISの青い初期画面が表示されれば成功です!
以下は、IIS上で動かすための非常にシンプルなHTMLファイルの例です。これを「C:\inetpub\wwwroot\index.html」として保存すれば、あなたのサイトが書き換わります。
<!DOCTYPE html>
<html>
<head>
<title>Azure Webサーバーテスト</title>
</head>
<body>
<h1>IISが正常に動作しています!</h1>
<p>これはAzure VM上で動いているWebページです。</p>
</body>
</html>
5. Linux(Ubuntu)でNginxを導入する手順
次に、Linux(Ubuntu)を選んだ場合のNginx構築方法を解説します。Linuxは「コマンド」を入力して操作するのが一般的です。まずはSSH接続でサーバーに入りましょう。画面が真っ暗なターミナルが表示されたら、以下のコマンドを順番に打ち込みます。
sudo apt updateは、ソフトウェアのリストを最新にする命令です。その後にNginx本体をインストールします。Linuxの世界では、管理者の権限で命令を実行する際に「sudo(スードゥー)」という言葉を頭につけます。
sudo apt update
sudo apt install nginx -y
systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2026-03-27 10:00:00 UTC; 1min ago
Active: active (running)という文字が見えたら、無事にNginxが動き出しています。WindowsのIISと同様に、ブラウザからIPアドレスを入力して確認してみましょう。「Welcome to nginx!」という画面が表示されるはずです。
6. Webコンテンツの配置と公開設定
サーバーが動いたら、次は自分オリジナルのコンテンツを配置しましょう。Nginxの場合、公開するファイルは通常「/var/www/html」というフォルダに置きます。ここにファイルを転送することで、世界中の人があなたのサイトを見ることができるようになります。
例えば、Python(パイソン)などのプログラミング言語を使って動的なサイトを作ることも可能ですが、まずは静的なHTML(エイチティーエムエル)ファイルから始めるのがおすすめです。ファイルを編集する際は、nanoやvimといったテキストエディタ(文字を書くソフト)をコマンドライン上で使います。
以下は、サーバー上のファイルを更新した後に、設定を反映させるためのコマンドです。設定ファイルを書き換えた後は、必ずこの再起動命令が必要になります。
sudo systemctl restart nginx
(出力なし)
7. セキュリティと保守の重要ポイント
サーバーを公開した瞬間から、あなたのサーバーは世界中の攻撃にさらされます。そのため、セキュリティ対策(守り)は絶対に欠かせません。初心者でもすぐにできる対策をいくつか紹介します。
- OSのアップデート: 常に最新の状態に保ち、脆弱性(ウイルスなどが入り込む隙間)を塞ぎます。
- 不要なポートの閉鎖: 3389番や22番のポートは、作業が終わったら閉じるか、自分の家のIPアドレスからしか繋がらないように制限します。
- パスワードの強化: 推測されやすい名前や誕生日は避け、記号を混ぜた長いパスワードを使います。
また、Azureには「自動シャットダウン」という便利な機能があります。夜間の使わない時間に自動で電源を切るように設定しておけば、うっかり消し忘れて高い料金が請求されることを防げます。クラウドを賢く使うための必須テクニックです。
8. データベースサーバーとの連携(SQL入門)
本格的なWebアプリを作るなら、データを保存する「データベース」が必要になります。Azure VMの中に、MySQL(マイエスキューエル)やSQL Serverをインストールしてみましょう。Webサーバーと連携させることで、ユーザー情報の登録や検索ができるようになります。
例えば、Webサイトの利用者を管理するためのテーブルをデータベース内に作成してみます。以下のようなデータ構造を想像してみてください。id(識別番号)やname(名前)、email(メールアドレス)を保存します。
id | name | age | email
---+--------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋次郎 | 22 | jiro@example.com
このデータから、20歳以上のユーザーだけを取り出す魔法の言葉(SQL)を書いてみましょう。これをプログラムから実行することで、画面に表示する内容を自由に変えられます。
SELECT *
FROM users
WHERE age >= 20;
実行した結果、以下のように条件に合う人だけが抽出されます。これがWebサービスの裏側で行われている仕組みです。
id | name | age | email
---+--------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋次郎 | 22 | jiro@example.com
9. 公開後の確認とトラブルシューティング
最後に、サイトが正しく表示されない時のチェックリストを確認しましょう。初心者がつまずきやすいポイントは決まっています。慌てずに一つずつ見直すことが、エンジニアとしての第一歩です。
- AzureのNSG設定: 80番ポートの許可を忘れていませんか?
- サーバーソフトの状態: IISやNginxが停止していませんか?
- パブリックIPアドレス: Azureポータルの概要欄に表示されている正しいアドレスを使っていますか?
- ファイアウォール(内部): WindowsやLinux自体の壁が邪魔をしていませんか?
これらの問題を解決して、ブラウザにあなたの作ったページが表示された時の感動は、何物にも代えがたいものです。Azure VMを使ったWebサーバー構築は、インフラの知識を深めるのに最適な教材です。ぜひ、自分なりのカスタマイズを加えて、素敵なWebサイトを運営してみてください!
まとめ
ここまで、マイクロソフトが提供するクラウドサービスであるアジュール・バーチャル・マシンを活用したウェブサーバー構築の全手順を詳しく解説してきました。クラウドを利用することで、物理的な機材を自宅に用意することなく、インターネット上に自分だけの専用サーバーを即座に立ち上げることが可能です。ウィンドウズ・サーバーで動作するインターネット・インフォメーション・サービスや、リナックス環境で圧倒的なシェアを誇るエンジンエックスの導入方法を学ぶことで、ウェブサイト公開の第一歩を踏み出せたはずです。
ウェブサーバーの構築において最も重要なポイントは、単にソフトをインストールすることだけではありません。ネットワークセキュリティグループによるポート開放の設定や、パブリックアイピーアドレスの正しい管理、そして何より公開後のセキュリティ対策が不可欠です。ポート番号の八十番や四百四十三番といった通信の入り口を適切に制御し、ファイアウォールの役割を理解することは、安全なサイト運営に直結します。また、データベースとの連携についても触れましたが、構造化されたデータを扱うためのエスキューエル言語を習得することで、より高度なウェブアプリケーションの開発が可能になります。
クラウド技術は日々進化しており、アジュールのようなプラットフォームを使いこなすスキルは、これからのアイティー業界で非常に高く評価されます。初心者のうちは、コマンド入力や設定画面の多さに戸惑うこともあるかもしれませんが、一つ一つの手順を丁寧に見直すことで、必ず思い通りのサーバーを構築できるようになります。万が一、ブラウザにページが表示されないトラブルが発生しても、今回紹介したチェックリストを参考に原因を特定してみてください。自分自身でサーバーを管理し、世界中に情報を発信する喜びをぜひ体感してください。
最後に、実用的なサンプルとして、サーバーの状態をチェックしたり、簡単なデータベース操作を行ったりするためのプログラム例をいくつか紹介します。これらを活用して、構築した環境が正しく動作しているか確認してみましょう。
サーバー情報の表示サンプル(シーシャープ)
ウィンドウズ・サーバー上で、現在のサーバー名やアイピーアドレス情報を取得して表示する簡単なプログラムです。
using System;
using System.Net;
class ServerCheck
{
static void Main()
{
string hostName = Dns.GetHostName();
Console.WriteLine("サーバー名を表示します。");
Console.WriteLine("ホスト名: " + hostName);
IPAddress[] adrList = Dns.GetHostAddresses(hostName);
foreach (IPAddress address in adrList)
{
Console.WriteLine("アイピーアドレス: " + address.ToString());
}
}
}
上記のプログラムを実行した際の出力結果は、以下のようになります。
サーバー名を表示します。
ホスト名: azure-web-vm-01
アイピーアドレス: 10.0.0.4
データベース管理の基礎(エスキューエル)
ウェブサイトの訪問者ログを管理するためのテーブルを作成し、データを抽出する例です。まずは、現在の訪問者リストを確認しましょう。
id | visitor_name | visit_date | page_views
---+--------------+------------+-----------
1 | 佐藤健太 | 2026-03-20 | 5
2 | 鈴木愛子 | 2026-03-21 | 12
3 | 高橋洋介 | 2026-03-22 | 2
4 | 田中直樹 | 2026-03-23 | 8
5 | 伊藤美咲 | 2026-03-24 | 15
6 | 渡辺和也 | 2026-03-25 | 1
次に、ページ閲覧数が五回以上の熱心な訪問者だけを抽出するクエリを実行します。
SELECT visitor_name, page_views
FROM site_logs
WHERE page_views >= 5
ORDER BY page_views DESC;
実行結果は以下の通りです。人気のあるユーザーを特定することができました。
visitor_name | page_views
-------------+-----------
伊藤美咲 | 15
鈴木愛子 | 12
田中直樹 | 8
佐藤健太 | 5
リナックス環境でのログ確認(コマンド)
エンジンエックスのアクセスログを確認して、どのようなアクセスが来ているかリアルタイムで監視するコマンドです。
tail -f /var/log/nginx/access.log
192.168.1.1 - - [27/Mar/2026:17:00:00 +0000] "GET / index.html HTTP/1.1" 200
192.168.1.5 - - [27/Mar/2026:17:05:00 +0000] "GET /images/logo.png HTTP/1.1" 200
生徒
「先生、ありがとうございました!アジュールで仮想マシンを作って、実際にウェブページが表示されたときは本当に感動しました。最初は難しそうだと思っていましたが、一つずつ設定を確認していけば自分でもできるんですね。」
先生
「その感動こそがエンジニアとしての原動力ですよ。ウィンドウズのアイアイエスとリナックスのエンジンエックス、両方の構築方法を学んだことで、インフラの基礎知識がかなり身に付いたはずです。特にネットワーク設定のポート開放については理解できましたか?」
生徒
「はい!八十番ポートを開けないと、外から自分のサイトが見られないという理由がよく分かりました。あと、データベースのエスキューエルを使って、特定の条件でデータを取り出す仕組みも面白かったです。これからもっと複雑なサイトを作ってみたいです。」
先生
「素晴らしい意気込みですね。次は、セキュリティをさらに強化するためにエスエスエル証明書を導入して、エイチティーティーピーエス化することに挑戦してみましょう。クラウドの世界は奥が深いですが、学び続けることで自由自在にシステムを操れるようになりますよ。」
生徒
「次は安全な通信ですね!もっと勉強して、立派なエンジニアになれるように頑張ります。アジュールの自動シャットダウン設定も忘れずにやって、お財布にも優しい運用を心がけます!」