Microsoft Azure(アジュール)は、クラウド上で仮想マシン(VM)を構築できる柔軟なプラットフォームです。今回は、Azure VM 上に Nginx を使って簡易的な Web サーバーを構築し、外部公開する手順をご紹介します。
この記事は、これから Azure を活用してみたい方や、クラウド上でサーバー構築を試してみたい方を対象としています。
今回はシンプルに構築を行うため、SSL(HTTPS)化は対象外とします。
Microsoft Azure では様々なクラウドサービスが提供されていますが、仮想マシン(VM)は「IaaS」に該当します。
IaaS とは、インフラをクラウド上で提供するサービスのことです。
具体的には、サーバーやストレージ、ネットワークなどの基盤はクラウドが管理しますが、OS やアプリケーションの設定・運用はユーザーが行います。
つまり、VM を使えば自分専用のサーバー環境を手軽に構築できるということです。
| 層 | オンプレミス | IaaS | PaaS | SaaS |
| ⑨ データ | 自分で管理 | 自分で管理 | 自分で管理 | アプリ上で入力したデータや設定の範囲のみ (保存場所・バックアップはクラウド管理) |
| ⑧ アプリケーション | 自分で管理 | 自分で管理 | 自分で管理 | クラウド管理(利用のみ) |
| ⑦ ランタイム(例:Node.js, Python) | 自分で管理 | 自分で管理 | クラウド管理 | クラウド管理 |
| ⑥ ミドルウェア(例:Webサーバー[Apache / Nginx / Tomcat], DB[MySQL / PostgreSQL]) | 自分で管理 | 自分で管理 | クラウド管理 | クラウド管理 |
| ⑤ OS(例:Red Hat Enterprise Linux, Ubuntuなど) | 自分で管理 | 自分で管理 | クラウド管理 | クラウド管理 |
| ④ 仮想化 | 自分で管理 | クラウド管理 | クラウド管理 | クラウド管理 |
| ③ サーバー(ハードウェア) | 自分で管理 | クラウド管理 | クラウド管理 | クラウド管理 |
| ② ストレージ | 自分で管理 | クラウド管理 | クラウド管理 | クラウド管理 |
| ① ネットワーク | 自分で管理 | クラウド管理 | クラウド管理 | クラウド管理 |
| 構成要素 | 内容 |
|---|---|
| Azure VM | Ubuntu Linux(22.04 LTS) |
| Webサーバー | Nginx |
| ファイアウォール | UFW(Uncomplicated Firewall) |
| ネットワーク制御 | NSG(Network Security Group) |
作業時間の目安はおよそ2〜3時間です。
リソースグループとは、Azure上で関連リソースをまとめて管理するための「入れ物」です。プロジェクト単位や開発・テスト・本番のような環境単位などユーザーが自由に作成できます。
| 項目 | 設定値 |
|---|---|
| リソースグループ名 | rg-vm-handson(任意でOK) |
| リージョン | Japan East(もしくはJapan West) |
次に、Azure上に Ubuntu ベースの仮想マシンを作成します。今回は学習・検証用の最小構成です。
| 項目 | 設定内容 |
|---|---|
| リソースグループ | rg-vm-handson(手順4で作成したリソースグループ名) |
| 仮想マシン名 | vm-nginx-demo(任意) |
| リージョン | Japan East(またはJapan West) |
| イメージ | Ubuntu Server 22.04 LTS |
| サイズ | Standard_B1s(1 vCPU / 1 GiB RAM) |
| 認証の種類 | SSH 公開鍵 |
| ユーザー名 | azureuser |
| 受信ポート | SSH(22)、HTTP(80) |
なお、作業中にリージョンを誤って「East US」を選択しVMを作成しようとしたら
「割り当てに失敗しました。このゾーンには要求されたVMサイズのために十分な容量がありません。」というエラーになってしまいました。
この場合、該当のサブスクリプションに対してそのリージョンで VM を作成するためのキャパシティが不足している可能性があります。
リージョンを変更するか、 Azure サポートに連絡することで対応しましょう。
今回はリージョンは「Japan East」または「Japan West」を選択します。

自動シャットダウンを有効にすることで、使用していない時間帯に VM をシャットダウンして費用を削減することが可能です。
最後に「確認および作成」をクリックし、検証後「作成」を実行。数分でVMがデプロイされます。

AzureポータルでVMの「接続」>「SSH」
受信ルールに以下があることを確認
※ 不要なポートが開いていないことを必ず目視確認。
※ 今回は省略化のため特に制限なく SSH ポートを公開していますが、通常は IP アドレス制限や VNet からの接続のみを許可する設定を行うべきです。
VMのデプロイが完了したら、AzureポータルでVMの「接続」>「SSH」を選択し、表示されるコマンドをコピーしてターミナルから接続します。
ssh -i ~/.ssh/<秘密鍵ファイル> azureuser@<パブリックIP> 初回は「yes」を入力して続行します。
sudo apt update && sudo apt upgrade -ysudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginxUbuntuの簡易ファイアウォール「UFW」を有効化して、HTTP 通信を許可します。
sudo ufw allow OpenSSH
sudo ufw allow "Nginx Full"
sudo ufw enable
sudo ufw statusAzure ポータルで VM の「パブリック IP アドレス」を確認し、ブラウザからアクセスします。
http://<パブリックIPアドレス>
「Welcome to nginx!」と表示されれば、成功です 。

コンソールからHTMLファイルを書き換えて、ブラウザで表示確認してみます。
sudo tee /var/www/html/index.html >/dev/null <<'HTML'
<!doctype html>
<html lang="ja">
<head><meta charset="utf-8"><title>My First Azure VM Site</title></head>
<body>
<h1>Azure VMで公開に成功しました!</h1>
<p>このページは Ubuntu + Nginx で提供されています。</p>
</body>
</html>
HTMLこのように表示確認されると成功です。

今回は、Azure VM を使って Ubuntu + Nginx の Web サーバーを構築し、外部公開する手順を紹介しました。手軽に試せるのでご興味のある方はぜひお試しください。
弊社ではAzure構築・導入支援サービスを提供しております。
マイクロソフト出身、 Azure 認定資格を保持するエンジニアが Azure に関するアドバイスや、環境構築などのご支援をいたします。
200を超えるAzureのサービスの中から、どのようなサービスを利用すれば良いのか、どういう組み合わせで利用できるのか、ランニングコストはどれくらいかかるのかなど、様々な角度から生じるお客様の疑問にお答えし、弊社にて Azure 環境の構築や Azure の導入をサポートします。
Azure をより活用し、最適な構成を構築するご支援をいたしますので、ご検討の方はお気軽にお問い合わせください。