【エンジニア０年生】Azure 仮想マシンにWEBサーバを立てる

こんにちは。インフラエンジニア歴マイナス1カ月（内定承諾後、未入社）のdessinです。同じく未経験の方に向けて、復習を兼ねて検証したことを書いていきます。
今勉強しているAzureで、仮想マシンをWEBサーバにするところから始めます。
# 概要
1. 仮想マシンの作成
1. SSH接続
1. webサーバを立てて確認

# 環境
Azure（無料枠）
ローカルPCはWindows11
# 作業
リソースグループを1個作成し、その中に仮想ネットワーク、さらにその中に仮想マシンを作成します。仮想マシンを作成すると、例えばパブリックIPやインターフェイスのようなほかのリソースが自動的に作成され、紐づけられます。これらは後から変更できますが、作成時に設定するほうがずっと楽なので間違わないように。とくにリソースグループの変更はめんどうです。
## リソースの作成
作業の大部分はポータルからポチポチです。
### リソースグループ作成
まずはリソースグループを作成します。リソースグループ名はtest（なんでも可）としておきます。リージョンはJapan East（近いので）にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/501b55e6-69c6-70ae-7d49-2fdc3efdb5d8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/c0eb7587-d898-48a0-5ce4-2a0412bc3eee.png)

リソースグループができたら、今後はこのリソースグループ内に仮想マシン（や、その他リソース）を立てていきます。
### 仮想ネットワーク作成
次に、検索のところに「仮想ネットワーク」と入力して仮想ネットワークを作成します。基本タブでは、サブスクリプション、リソースグループ、リージョンをリソースグループと同様に設定してください。名前はなんでも可（testVnetとしました）。その他の項目はいじらずにそのまま確認・作成します。

### サブネット作成
作成した仮想ネットワークに移動して、左ペインから「サブネット」を見つけてください。サブネットは仮想ネットワークを分割します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/3500700a-6090-604c-27fa-ded751db92d8.png)

デフォルトで10.0.0.0/24のサブネットがあるので、これを使いましょう。やることはありません。
### 仮想マシン作成
いよいよ仮想マシンを作成します。まずは「リソースの作成」から「仮想マシン」の「作成」から始めます。選択するポイントが複数ありますが、今回はこんな構成です。Ubuntuにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/71bddd2e-3a47-3fd4-62e1-730f1523f0cb.png)
ネットワークのタブでは、注意点がいくつかあります。
先ほど確認したデフォルトのサブネットになっていることを確認してください。仮想ネットワークの中にあったサブネットです。さらにこの中に仮想マシンが作られるわけですね。
また、パブリックIPアドレスを取得します。操作しなくても「webserver (仮想マシン名）-ip」という名前のリソースとして、取得されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/b38b2ce7-8e6e-8b44-7ef8-b74bbf24bdb5.png)
仮想マシンを作成するとNIC（ネットワークインターフェイス）が自動作成され、仮想マシンに紐づけられます。このNICを、仮想マシンの削除時に一緒に消すかのオプションがあります。最初は✓を入れておいたほうが単純でいいかと思います。

認証の種類ですが、今回は「パスワード」方式にします。検証用に使いやすいものをユーザー名、パスワードに設定してください。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/1ae59b03-3869-4864-7cd7-76d8d6f2ad8b.png)
メモ帳（Windows+Rを押してからnotepadと入力）に貼っておくと便利です。
管理タブ以降の設定はデフォルトで大丈夫です。
### 初心者向けtips
補足ですが、ユーザー名やパスワードは打ち間違えると馬鹿らしいのでコピペして使うようにしてください。個人的な経験ですが、通信に失敗して困っていたのに、原因はユーザー名が間違っていただけだった、なんてことがあります。貼り付けにはWindows+Vを使うと、コピーした履歴が出てきて、本当に便利です。


## SSHで接続
ローカルPC（今触ってるパソコンです）にRloginというソフトをインストールしましょう。
Rloginを起動したら、Server Selectで「新規」ボタンをクリック、出てきた次の画面で仮想マシンの情報を入力します。入力するのは、「エントリー」、「ホスト名（サーバーIPアドレス）」「ログインユーザー名」「パスワードorパスフレーズ」です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/85f223fa-b5b9-c064-d2c4-78f6d0d611c5.png)

* 「エントリー」・・・単なる表示名です。test-webserverなどなんでも可。
* 「ホスト名（サーバーIPアドレス）」・・・Azureポータルで、仮想マシンに割り振られたパブリックIPアドレスです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/e05b43fa-c0e6-527c-c9e3-b02f614f55ba.png)

* 「ログインユーザー名」と「パスワードorパスフレーズ」・・・仮想マシン作成時に設定したものです。
OKをクリックし、再びServer Selectに戻ったら、今入力した行（エントリー）を選択し、OKをクリックします。すると、仮想マシンにSSHで接続されます。Ubuntuが入った仮想マシンなので見えているのはbashと呼ばれる画面です。
## WEBサーバ作成
[この記事](https://yamapan.tokyo/?p=2542#google_vignette)と同じことをやります。私が当初わからなかったことを書いておきます。
### 「適当なフォルダにindex.htmlを作る」の部分
SSHで入ったあと、viコマンドでファイルを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/afece986-f3ef-069a-afd5-f901cc1db346.png)
viコマンドの使い方については[参照したサイト](https://eng-entrance.com/linux-command-vi)をご覧ください。ざっくり書くと、iで編集開始、Escキーで編集修了、:wqで保存して終了です。とっつきづらいですが、記事通り（文字列は変えていい）のhtmlファイルを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/f4efafb8-65c7-c7b3-6b32-19e62abd07bf.png)

続いて'python3 -m http.server 8080'と入力します。これをやると、この仮想マシンはポート番号8080で待ち受けている状態です。「ファイルをサーブするぞ～～」となっていてまさしくサーバーです。仮想マシンに割り当てられたパブリックIPアドレスをブラウザに入れてあげるとこのファイルを受け取れるはずです。
## WEBサーバにローカルPCからアクセス
自分のパソコンで次のように作業します。
ブラウザを立ち上げ、検索窓に、「パブリックアドレス:8080」を入力してください。作成したページが現れれば、検証成功です。
と、思ったら、このままでは接続できないようです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/aaa3af44-1cb4-7027-6500-3c55ec12ea03.png)

仮想マシンに紐づいているセキュリティに関する設定を確認しましょう。
## ネットワークセキュリティグループ
通信に関することを探していると、「仮想マシン」のページの左ペインに「ネットワーク設定」というものがみつかり、そこから「ネットワークセキュリティグループ」が紐づいていることが確認できます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/199f9019-340b-4c6e-b507-74190ec6a410.png)
初期設定だと、SSHのため22番ポートだけが許可されており、WEBサーバが待ち受けている8080番は許可されていません。そのため、セキュリティの設定を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/f664362d-cdda-0926-299e-0ef872afe133.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/93ea038a-f2f2-69ea-b307-65b2f7c7bbf8.png)
追加したら再度アクセスしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/b09782d0-5f35-12db-a4c1-d88a76611c7d.png)
今度はうまくいきました。先ほど通信に失敗した原因は、セキュリティグループの設定にありました。お疲れ様です。


# まとめ
仮想マシンを作成し、ローカルPCからパブリックIPアドレスを用いて（インターネットから）SSH接続した。
仮想マシンでWEBサーバを立ち上げ、セキュリティグループの受信規則を設定し、インターネットからアクセスした。