AzureでUbuntu仮想マシンをデプロイする（Webサーバ用途）

船井総研デジタルのよもぎたです。
今回は、AzureにUbuntu仮想マシンをデプロイして、そこにWebサーバを構築してみたいと思います。WebサーバはApacheとNginxの2パターンを考えているので、共通の仮想マシンデプロイの記事（本記事）と、[Apacheの構築記事](https://qiita.com/t_ymgt/items/2015e0b7d90fb015e9d3)と[Nginxの構築記事](https://qiita.com/t_ymgt/items/fca75992e0e311a29f98)に分けたいと思います。

# ネットワークを準備する
まずは、仮想マシンをデプロイするネットワークの準備をします。

## 仮想ネットワークを作成する
Azureのサービスの検索で＠「仮想ネットワーク」と検索し、「仮想ネットワーク」を選びます。このとき、「仮想ネットワーク（クラッシック）」も検索にヒットしますが、こちらはワナです。

![スクリーンショット 2023-01-09 150145.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/042e140f-babc-c0ee-379c-81924ee267d8.png)

基本情報で、サブスクリプションとリソースグループを選び、名前を指定してリージョンを選択します。![スクリーンショット 2023-01-09 150406.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/d4792733-65f8-23a4-22bd-34ae8d908241.png)

今回は仮想ネットワークのアドレスは``192.168.0.0/16``、サブネットのアドレスは``192.168.1.0/24``としました。
セキュリティとタグは今回はデフォルトのままなので、ここで「確認及び作成」をクリックしてします。
![スクリーンショット 2023-01-09 150632.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/f75d8458-53fb-3d3b-83f5-04deb406a05b.png)

## ネットワークセキュリティグループの作成
サービスの検索で「セキュリティグループ」で検索し「ネットワークセキュリティグループ」を選びます。ここでも「～～（クラッシック）」は無視します。

ネットワークセキュリティグループの作成は、仮想ネットワークと同じサブスクリプション、リソースグループ、リージョンで作成します。名前は任意でつけてください。ここで「確認および作成」をクリックしてネットワークセキュリティグループを作成します。トラフィックの許可は作成後に設定します。
![スクリーンショット 2023-01-09 151310.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/c9edbf47-cb16-6fc7-85c3-8c1539154628.png)

作成出来たら、リソースに移動します。

## ネットワークセキュリティグループの設定

### Webサーバ用のポートを開放する
Webサーバなので、HTTP（TCP80番ポート）とHTTPS（TCP443番ポート）をAnyから許可します。左のメニューから「受信セキュリティ規則」をクリックし、右のペインが切り替わったら「追加」をクリックします。
![スクリーンショット 2023-01-09 151818.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/e0bcdd15-af2b-a2a1-b812-cac0683ef8ba.png)

「受信セキュリティ規則の追加」で「サービス」のプルダウンメニューから「HTTP」を選び、追加をクリックします。「宛先ポート範囲」と「プロトコル」がグレーアウトして「80」と「TCP」に固定になります。同様の手順で「HTTPS」も追加します。
![スクリーンショット 2023-01-09 152003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/cf922442-4a58-0c3a-b7ff-4408b1ed9685.png)

### 構築作業用のポートを開放する
構築作業用に、SSHのポートを開放します。手順はHTTP/HTTPSと同じですが、「ソース」（IPアドレス）を「My IP address」に、サービスを「SSH」にします。
![スクリーンショット 2023-01-09 153333.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/96bad9a6-acab-2a95-31e9-2ddc47e25104.png)

### ネットワークセキュリティグループの確認
作成して、HTTP、HTTPS、SSHの3件の許可が追加されていること、HTTPとHTTPSについてはソースは任意、SSHについてはソースが自分のグローバルIPアドレスになっていることを確認します。
![スクリーンショット 2023-01-09 153753.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/3b41882c-3d07-82b1-3fba-2b4aa77eb88f.png)

## ネットワークセキュリティグループの適用
ホームの最近使ったリソースから、先ほど作成した仮想ネットワークを選びます。仮想ネットワークの左のメニューで「サブネット」を選び、先ほど作成したサブネットを選びます。右側に追加のメニューが開きます。
追加のメニューのなかの「ネットワークセキュリティグループ」のプルダウンメニューから、先ほど作成したネットワークセキュリティグループを選び「保存」をクリックします。
![スクリーンショット 2023-01-09 154234.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/9d06d4ed-2f2d-d799-2d0d-54738c0ca66f.png)

## パブリックIPアドレスの作成
Azureのサービスの検索から「パブリックIP」で検索し「パブリックIPアドレス」を選択します。
![スクリーンショット 2023-01-09 155728.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/ba6954f1-d4d0-8043-694f-8db98415e50b.png)

パブリックIPアドレスの作成メニューに入り、値を選択していきます。IPバージョンはIPv4，SKUはStandard、レベルは地域を選択します。名前は任意の名前を付けます。サブスクリプション、リソースグループ、場所は用意したネットワークと同じものを選択します。これで「作成」をクリックします。
![スクリーンショット 2023-01-09 155944.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/421456ba-4549-228b-8252-d4fa83416657.png)

これで、ネットワークの準備が整いました。

# 仮想マシンをデプロイする

Azureのサービスの検索から「virtual machines」を検索し、「Virtual Machines」を選択します。
![スクリーンショット 2023-01-09 154612.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/364c28ff-6cd7-b89d-d628-2af9d0f2c3f8.png)

Virtual Machinesのメニューから「作成」を選択「Azure仮想マシン」を選択します。

![スクリーンショット 2023-01-09 154846.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/94f64190-0399-fa72-ae47-f4081c90b9ce.png)

仮想マシンの作成メニューに入ります。
基本タブでは、サブスクリプション、リソースグループ、リージョンは準備したネットワークと同じものを選択します。
仮想マシン名は任意で設定します。イメージは「Ubuntu Server 22.04 LTS」を選択します。仮想マシンのサイズは任意で構いませんが、今回は「Standard＿B1ls」を選択しました。
管理者アカウントは「SSH公開キー」を選択し、ユーザー名はせっかく任意のものが設定できるので、任意の名前に変更します。
![スクリーンショット 2023-01-09 155033.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/b33309e8-6427-0fed-3026-ad86f8226e94.png)

ディスクタブはデフォルトのままでスキップします。

ネットワークタブでは、仮想ネットワーク、サブネット、パブリックIPをそれぞれ準備したものをプルダウンメニューから選択します。「NICネットワークセキュリティグループ」は「なし」になっていることを確認します。サブネットにネットワークセキュリティグループが適用されているので、これで問題ありません。
![スクリーンショット 2023-01-09 160458.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/f275dbfa-e67f-ba59-ba7b-a4c3300e0a76.png)

「確認および作成」をクリックし「作成」をクリックします。
「新しいキーの組の生成」というダイアログが表示されるので「秘密キーのダウンロードとリソースの作成」を選択します。
秘密鍵がダウンロードできるので、大切に保管します。
![スクリーンショット 2023-01-09 160757.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/2cb3ae06-d850-42d5-a56a-f979a135b3c1.png)

少し待つと、リソースのデプロイが完了します。

仮想マシンのグローバルIPアドレスは、仮想マシンの概要で確認できます。

![スクリーンショット 2023-01-09 161601.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822136/ef8de8f7-909c-b9dc-0fca-f68827f12569.png)

# OSをアップデートする

## 仮想マシンへのログイン

ここからはWSL2で操作します。
先程ダウンロードしたSSH秘密鍵を ~/.ssh にコピーてパーミッションを設定します。

```bash
$ cp WebSv_key.pem ~/.ssh
$ cd ~/.ssh
$ chmod 600 WebSv_key.pem
```

仮想マシンにログインします。``-l <username>``は仮想マシンデプロイ時に設定したユーザー名を指定してください。
```bash
$ ssh -l t_ymgt -i WebSv_key.pem xx.xx.xx.xx
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-1029-azure x86_64)
---snip---
t_ymgt@WebSv:~$
```

ssh configを設定する場合は次のようにします。こうすると、hostで指定した名前（下記の場合はAzWebSV）でsshできるようになります。
```bash
$ grep -A3 AzWebSV ~/.ssh/config
host AzWebSV
        hostname XX.XX.XX.XX
        identityfile ~/.ssh/WebSv_key.pem
        user t_ymgt
$ ssh AzWebSV
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-1029-azure x86_64)
---snip---
t_ymgt@WebSv:~$
```

OSのアップデートをします。
```bash
$ sudo apt update -y
$ sudo apt upgrade -y
```

Apache、Nginx共通の手順はここまでです。インストールしたいWebサーバに応じて以下の記事を参照してください。

[ApacheWebサーバのインストールとHTTPS対応まで](https://qiita.com/t_ymgt/items/2015e0b7d90fb015e9d3)

[NginxサーバのインストールとHTTPS対応まで](https://qiita.com/t_ymgt/items/fca75992e0e311a29f98)

最後までお読みいただきありがとうございました。