MacでVirtualHost

古い本を読んでいたらVirtualHostを使い
異なるドメイン間でのシミュレーションの説明があったが、その当時設定では動いてくれなかった

現行Mac(BigSur 11)で動く設定を備忘録として記録します

コンソールからapacheを動かす

```
sudo apachectl start
```

ブラウザで下記URLを確認すると"It Works"と表示されるのを確認する

```
http://localhost
```

コンソールからVIMでHostを編集する

```
sudo vi /etc/hosts
```

下記の仮装ドメインを追加して保存

```
127.0.0.1 dummy-host.example.com
127.0.0.1 dummy-host2.example.com
```

コンソールからapacheを再起動

```
sudo apachectl restart
```

追加したドメインにアクセスしてもForbiddenとなる・・・？！

apacheの設定ファイルを編集

```
sudo vi /etc/apache2/httpd.conf
```

Virtual hostsの記述箇所を検索する
/vhoとキーインしてnを２回おすと下記の部位を見つけられる筈

```
# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf
```

#Includeの＃を消してコメントアウトして保存（viを閉じる）

コメントアウトした設定ファイルを編集する(テンプレートを取っておきたい場合は退避)

```
sudo vi /private/etc/apache2/extra/httpd-vhosts.conf
```

テンプレートを全消して代わりに下記の内容を書き込み保存する（xxxxxの部分は自分のIDに変える）
仮装ホストのルートとするデイレクトリ等を設定している

```
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/Users/xxxxx/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
  <Directory /Users/xxxxx/docs/dummy-host.example.com>
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Users/xxxxx/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
  <Directory /Users/xxxxx/docs/dummy-host.example.com>
    Require all granted
  </Directory>
</VirtualHost>
```

httpd-vhosts.confで指定したルートディレクトリを作っておく
(chmodでパーミッションの設定もやっておく)

```
sudo mkdir -p /Users/xxxxx/docs/dummy-host.example.com
sudo mkdir -p /Users/xxxxx/docs/dummy-host2.example.com
```

コンフィグをチェックする

```
sudo apachectl configtest
Syntax OK
```

コンソールからapacheを再起動

```
sudo apachectl restart
```

ログを確認する(追加設定したドメイン別にログが出力されている)

```
$ cd /var/log/apache2/
$ ls -al
total 16
drwxr-xr-x   8 root  wheel   256  9  5 14:57 .
drwxr-xr-x  47 root  wheel  1504  9  5 00:37 ..
-rw-r--r--   1 root  wheel  2643  9  5 14:49 access_log
-rw-r--r--   1 root  wheel     0  9  5 14:57 dummy-host.example.com-access_log
-rw-r--r--   1 root  wheel     0  9  5 14:57 dummy-host.example.com-error_log
-rw-r--r--   1 root  wheel     0  9  5 14:57 dummy-host2.example.com-access_log
-rw-r--r--   1 root  wheel     0  9  5 14:57 dummy-host2.example.com-error_log
-rw-r--r--   1 root  wheel  3912  9  5 14:57 error_log

```

仮装ドメインのコンテンツを作る

```
cd /Users/xxxxx/docs/dummy-host.example.com
sudo vim test.html
```
下記のように編集する

```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1> example01 </h1>
</body>
</html>
```

ブラウザで下記URLを確認

```
http://dummy-host.example.com/test.html
```

xample01が見えればOK

見えなければログを確認する

```
tail /var/log/apache2/dummy-host.example.com-error_log
```