VirtualHostをLAN内のどこからでも見えるようにして快適開発をする話
ごきげんよう、まもなくクリスマスですが皆様いかがお過ごしでしょうか?宮野です。
この記事はNITKC ProLab Advent Calendar 2020](https://adventar.org/calendars/5345)を12月22日の記事として書かれています。
1日遅刻ですが課題と再試で記事どころではなかったのですまんかった
バーチャルホストを使う
バーチャルホスト(VirtualHost)は一つのサーバで複数のドメインを運用するためのヤツです。宮野は自宅のPCにApache2.4系を入れています。
php -S 0.0.0.0:3000
すりゃいい気もしますが、LAN内からいつでも見えてほしいツールもこのPCで動かしたいのでバーチャルホストを使ってApacheをちゃんと設定します。ちゃんと設定しとけば本番でも活用できるしね。
WindowsにインスコしたApache2.4でバーチャルホストを使うには初期設定が必要です。
httpd.conf をいじる
バーチャルホストを使うにはまずApacheの設定の根幹であるところのhttpd.confをいじって設定を有効にする必要があります。httpd.conf の下の方をずずずっと見てみます。
# Virtual hosts #Include conf/extra/httpd-vhosts.conf
ありました。Includeの前のコメントアウトを消してバーチャルホストの設定を読むようにします。
httpd-vhosts.conf をいじる
既に雛形がしっかりしている上コメントアウトでバッチリ解説してあるのでじゅんじゅんに読んでいきましょう。英語は気合で読め。
解説の通りここで設定したバーチャルホストのうち一番上にあるものがここで設定済みのサーバと一致しないすべてのリクエストに使われます。おうちサーバなら適当でいいかもですが本番環境で使うならばエラーを返すように設定するべきですね。
バーチャルホストの設定例はこんな感じ。
<VirtualHost *:80> ServerAdmin starrysky@dainsleif.miyacorata.net DocumentRoot "C:/Users/miyacorata/Documents/StarrySky/public" ServerName starrysky.dainsleif.f5.si ErrorLog "logs/starrysky.localhost-error.log" CustomLog "logs/starrysky.localhost-access.log" common <Directory "C:/Users/miyacorata/Documents/StarrySky/public"> Require all granted AllowOverride all </Directory> </VirtualHost>
ログ系はいらん人はいらんでもいいんじゃないかな しらんけど
ディレクトリの設定は書いておかないと特にAllowOverrideは.htaccessが聞かなくて泣きを見ます。
これでこのマシンに対して starrysky.dainsleif.f5.si
でアクセスするとStarrySkyが開くようになりました。
LAN内からどこからでもアクセスしたい
さて、先程のセクションでServerNameを starrysky.dainsleif.f5.si
にしていることにお気づきいただけるでしょう。starrysky.localhost
とかじゃないんだ、と。
*.localhostでも同じことが出来ますが自機からのアクセスからしか出来ない上になんか増やしたらhostsを書き換える必要があります。それはあまりにもアホ。LAN内からアクセスできるようにしてスマホや別端末からのアクセスも可能にしたいものです。
じゃあLAN内にDNSサーバを立てる?めんどくさい。パス。
mDNS?だめです。starrysky.dainsleif.local みたいなの(Windowsだと)設定できないっぽいし。
じゃあどうすっかな思案したところであるサービスの存在を知りました。
xip.io というサービスがある
ちょっと調べてみると xip.io というサービスがあるらしいです。
このサイトでできるのは実に単純で http://127.0.0.1.xip.io/ というふうにIPアドレスをくっつけてアクセスするとそのIPに飛ばしてくれるというものです。さらにサブドメインもぜんぶ飛ばしてくれるというスグレモノ。
とはいえ、IPが全部含まれるのは少々めんどくさいです。打ちづらいし。なにより見栄えが悪い。(見栄えを気にしてどうするんだというのはある)
しかし 宮野に 電流走る──
「適当なドメインを自機IPにポイントすればよいのでは?」
やることは実に単純明快です。まず自機のIPを固定、なにかほどよいドメインを用意し、そのドメインをワイルドカード込みで自機IPにポイントするのみ。
普通のと違うのはローカルIPをポイントするためLAN内からしかアクセスできないという点です。
IPの固定
やるだけ。ONUまたはルータによってやり方が違うので取説をみましょう。
ドメインをご準備
なんかドメイン取得してもいい気がしますがここは横着します。
DDNS NowというダイナミックDNSサービスを利用します。ダイナミックDNSというのは動的に変わるIPアドレスとドメインを対応付けるためのシステムです。
が、普通に設定画面からAレコード設定できるので普通に使っちゃっています。全然ダイナミックじゃねえ。
で自機のIPにポイントします。
できました
自宅のWi-Fiに繋げばスマッホからも見れます。いいですね。
ファイル保存用ストレージであるところのDドライブの閲覧だけLAN内限定でできるようにしました。過去撮った写真見れます。わーい。
では~