Microsoft Azure上の IIS で、物理パスを 共有ドライブ(Azure Files)のUNCパスに設定する方法

昨年、自宅サーバーで運営していたサイトを、Microsoft Azureへ移行した。
予算は月額1万円程度なので、低スペック(CPU数1、メモリ2GB)のサーバーしか選択できなかった。
でも、軽いWEBサイトを動かすくらいなら、特に問題ない。

Microsoft Azureは、月額1万円程度でも、
グローバルIPアドレスを固定で(設定が必要だが)5個まで使えて、
1TBくらいのディスクを「Azure Files」にしてNAS同様に使えるので、
活用次第では、十分にモトがとれるかもしれない。

操作は、リモートデスクトップ接続で普通に使えるし、
ファイルのアップロードも、エクスプローラのコピー&ペーストで
普通にできるので、自宅サーバーの時と比べても、全く違和感がない。

Azure Files」にしたストレージにドライブ番号(Dドライブ等)を割り当てれば、
自宅サーバーの時と同じように、robocopyコマンド等を使って
自動的にファイルをアップロードすることも可能なので、これも遜色ない。


さて、唯一、工夫が必要だったのが、
自動でアップロードするファイル、つまり定期更新する情報を
IIS上のウェブサイトへ即時に反映させる方法、である。

自宅サーバーの時は、
IISに設定しているドキュメントの物理パスが、
ローカルディスク内( D:\Inetpub\wwwroot\ 等)に存在していたけど、

Azure Files」だと、Dドライブに割り当てたとしても、
その実体は ネットワーク上の共有ドライブになるので、
そのまま D:\Inetpub\wwwroot\ と割り当てたとしても、
エラーが出て、うまくいかない。


「Azure Files」に限らず、IISのドキュメントの物理パスを
別マシンにある共有フォルダに設定したい場合は、
そのままではうまくいかないので、次のようにやる必要がある。


・共有フォルダにアクセス権のある「ローカルユーザー」を作成しておく。
 Administrator ではなく、専用のユーザーにした方がよい。
 「Azure Files」の場合は必ず、接続に使用するストレージアカウントの情報(80文字くらいのパスワード)を登録する。
20180303-00.png

・IISマネージャーから「規定のドキュメント」の設定で、右クリックして、「基本設定」を選択する。
20180303-01.png

・「物理パス」欄を、UNCパス形式(\\share\inetpub\wwwroot\ 等)で指定して「接続」ボタンを押す。
20180303-02a.png

・「パススルー接続」ではなく、「特定ユーザー」を選択して、「設定」ボタンを押す。
20180303-03.jpg

・「ローカルユーザー名」と、Azure Files接続用の長いパスワード(80字?) を指定して「OK」を押す。
20180303-04.png

・テスト接続を行って、認証が有効であることを確認する。
20180303-02b.png
20180303-05.png


表示するコンテンツ内のスクリプト(ASPやPHP等)側で、
絶対パスを指定している場合は、正しく修正する必要がある。

ちなみに、「Azure Files」を使わずに、
ローカルドライブ上に共有フォルダを設けて、直接、
VPN接続で更新すれば、上記のような余計な手順は必要ないけど、

月額1万円程度、という予算のなかで、
このVPN接続に関わる「ゲートウェイ使用料」が意外に高価なので、
つなぎっぱなしにしてしまうと、たくさん課金されてしまうで
VPN接続は使わないことに決めている

Microsoft Azureも今後、価格競争が進んで、料金が安くなれば、
VPN接続に変えてもよいかもしれない。