【第1回】Azureで学ぶサーバ構築（Webサーバ）

## はじめに
インフラエンジニア必須知識であるWeb/DNS/メールサーバについて構築から学びたいと思い立ち、備忘録として記事にしました。
Azure環境で構築したため、どなたかの参考になればと思います。
以下の通り全3回に分けて実施していきます。

第1回：ApacheでWebサーバ構築 　　 <--　今回
　①仮想マシンでLinuxサーバを構築する
　②ApacheでWebサーバを構築する
　③Webサーバでコンテンツを表示する
<font color="Grey">第2回：BindでDNSサーバ構築
第3回：Postfixでメールサーバ構築</font>

今回の最終構成は以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/da70fd66-8222-46fa-c0f7-1b366466fc94.png)

## １．仮想マシンでLinuxサーバを構築する
まずはWebサーバの土台となる仮想マシンとネットワーク環境をAzure上で作成していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/058f0018-4c41-a7fa-758b-747a72309abc.png)


最初にAzureリソースの箱である、リソースグループを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/5bb9bccd-a34b-956f-4c20-3e410b86599a.png)

リソースグループ名は適当、リージョンは東日本で。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/98c4675a-f627-a227-b7e9-fa870e790746.png)


その後、作成したリソースグループに入って、左上の作成ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/b3e51d1a-4ad6-8f8e-c435-a6609fd8ad84.png)


マーケットプレースから仮想マシンを検索して作成していく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/b6bbf0ed-f964-b3fc-90ea-5552c8bba640.png)


今回はCentOSベースで作っていきます。仮想マシン名などその他は任意で。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/0b8a8689-71a7-3b5e-48b8-1770b92eee40.png)


サイズは安いB シリーズを選択。ほぼ動かさないので一番安い1コアのもので十分です。
月額9.93ドルなので大体月1500円です。（2022年10月現在猛烈な円安。。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/b7d5e14e-ae66-4042-f918-75eef66aa4a5.png)


ディスク設定は安いローカル冗長ストレージを選択。
検証用なのでCMKを持ち込まずAzureで自動生成のPMKでOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/b6411dcc-50a2-1e9d-51c8-5513f8e12cab.png)


次にネットワーク設定。仮想ネットワークを事前に作成していなかったのでここで作ります。
アドレス空間はデフォルトで、今回のWebサーバは外部からアクセスするためパブリックサブネットとして作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/e518dd39-e144-f258-25e0-fd87f62bb57e.png)


外部からアクセスできるようパブリックIPも作成します。
コマンドベースでログインしたいので受信ポートは一旦SSHで。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/16342699-6817-5651-7e47-00097f16f942.png)


今回冗長化しないので負荷分散はいりません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/568e8c58-fc9e-3886-05c3-9ecb81c8468d.png)


他はデフォルトで、検証OKとなったらVM作成！
ここで忘れずSSHキーのダウンロード。　※後ほどVMへのログイン時に使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/5c99f607-8ac8-0640-f42f-4a9bf0fc782e.png)


pemがダウンロードできていることを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/06aa34b0-a64d-5edc-fe9e-5a7d020aef26.png)


開いてみると、RSA公開鍵が作成されていることがわかります。
こちらの鍵を使ってSSH接続しますのでなくさないように
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/ffb58762-1045-6b27-c9e6-7c73adb5d8b4.png)


デプロイ完了！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/30286243-34e3-0a03-2eae-a1323a6778b3.png)


## ２．ApacheでWebサーバを構築する
次に、作成した仮想マシンに対してSSHで操作してApache Webサーバをインストールしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/c4959c69-ef9c-2444-b7b1-ff34cb1ab4ba.png)


SSHでログインするため、VMのパブリックIPアドレスを控えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/9f9d199d-9c60-295d-ac55-d3d889c209f9.png)


私はいつもRLoginというターミナルソフトを使っているのでこちらで解説させていただきます。
以下URLからダウンロードください。
https://kmiya-culti.github.io/RLogin/#INSTALL
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/6d96f7af-1dfe-afbd-0e27-bffd5fa51cda.png)


RLoginで新規に接続を作成。先ほど作成したVMのパラメータを入力。
OKを押下して接続。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/e1444965-8d63-8fa2-3603-475e8473b806.png)


以下URLを参考にyumコマンドでApacheをインストールする。
https://weblabo.oscasierra.net/apache-installing-apache24-yum-centos7-1/

以下が実際に実行したコマンドです。
~~~md:Bash
[azureuser@infratest-vm ~]#sudo su - root     --> 管理者権限にスイッチ
[root@infratest-vm ~]# yum -y install httpd   --> httpdインストール
　(以下省略)
[root@infratest-vm ~]# httpd -version         --> バージョン確認
Server version: Apache/2.4.6 (CentOS)
Server built:   Mar 24 2022 14:57:57
[root@infratest-vm ~]# systemctl enable httpd.service    --> 自動起動設定
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@infratest-vm ~]# systemctl start httpd.service     --> httpd起動
[root@infratest-vm ~]# systemctl status httpd.service    --> httpd状態確認
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2022-10-11 23:12:02 UTC; 18s ago
　(以下省略)

~~~


準備ができたので、ローカルPCから作成したWebサーバが公開されているか稼働確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/30c9a003-9485-c4e5-4efb-184f62ff779a.png)


お待ちかねの動作確認タイム。httpでアクセスすると。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/4e2ad1db-b88c-e763-627d-e00eec980766.png)


AzureのNSGではじかれておりましたね。
今回はhttp通信を許可したいので80番ポートを穴あけしてあげましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/2405fb2b-48b3-733d-3da9-9f22b1f441ca.png)


NSGの受信セキュリティ規則タブから80番ポートのインバウンド通信を許可する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/902d3d66-d6d7-d5f6-9284-f59ff3caa861.png)


httpの80番ポートが追加されましたね
　※注意：VMのパブリックIPを知られると誰からでもhttpでアクセスできる状態になるので使わないときは閉じてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/8fb4cd0b-5a38-7570-1ad1-f602373075f8.png)


気を取り直してもう一度ブラウザで表示させると・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/9d4011bc-fc57-e031-7ff0-086b6f2f7ea1.png)
今度は無事成功しました！

## ３．Webサーバでコンテンツを表示する
最後に、WebサーバにHTMLを配置してブラウザで表示できるか確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/d702bad4-d6ad-459b-03bb-8c09d4098ac6.png)


RLoginに戻ります。
以下URLを参考にしながらHTMLファイルを配置します。
http://ossfan.net/setup/httpd-07.html

~~~md:Bash
[root@infratest-vm html]# grep "^DocumentRoot" /etc/httpd/conf/httpd.conf    --> ドキュメントルートを確認
DocumentRoot "/var/www/html"
[root@infratest-vm /]# cd /var/www/html   　　　　　　　　　　　　　　　　　　 --> HTMLを配置するパスへ移動
[root@infratest-vm html]# touch index.html   　　　　　　　　　　　　　　　　  --> touchコマンドでファイル作成
[root@infratest-vm html]# ll                                                   --> ファイルが作成されていることを確認
total 0
-rw-r--r--. 1 root root 0 Oct 14 16:50 index.html
[root@infratest-vm html]# vi index.html                                       --> HTMLの中身を編集
~~~

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/013342fe-2098-48eb-6216-f56d107cf47c.png)

~~~md:Bash
[root@infratest-vm html]# cat index.html                                      --> HTMLの中身が更新されているか確認
<!DOCTYPE html>
<html>Hello Qiita!!</html>
~~~


HTMLをWebサーバに配置できたので、
http://20.89.104.140 でアクセスすると・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609368/faadd589-9f81-2617-b2a9-287dbc6a08e6.png)
無事ブラウザに表示されました！
なお、VMは結構よいお値段するので使わないときは停止させておいてください。



Webサーバが構築できたので、次回はDNSサーバを構築していこうと思います。
また、今回Qiita初投稿でしたのでわかりづらい点あればコメント等いただけると嬉しいです。


## 参考URL
https://weblabo.oscasierra.net/apache-installing-apache24-yum-centos7-1/

https://qiita.com/renave/items/c05ca40baaf1f68c4d14

http://ossfan.net/setup/httpd-07.html