【備忘録】IISのサイトを構築するバッチファイル

@echo off
REM ———————————————-
REM #### 新規にサイトを構築する ####
REM Parameter 1: サイト名称
REM Parameter 2: サイトID
REM Parameter 3: 仮想ドメイン1
REM Parameter 4: 仮想ドメイン2
REM Parameter 5: 仮想ドメイン3
REM ———————————————-
setlocal
REM ————————————
REM 設定
REM ————————————
set docDir1=D:\docroot
set docDir2=\dir1
set docDir3=\dir2
set docDir4=\dir3
REM ————————————
REM ドキュメントルート設定
REM ————————————
set domaindir=%docDir1%%serverCat%\%1%docDir2%%docDir3%%docDir4%
set vardir=%docDir1%%serverCat%\%1%docDir2%%docDir3%
set logdir=D:\Logs\IIS_Logs\%1
REM ————————————
REM 物理フォルダの作成
REM ————————————
REM ①ドキュメントルート
REM ————————————
if not exist “%domaindir%” (
mkdir “%domaindir%”
)
REM ————————————
REM ②IISログ
REM ————————————
if not exist “%logdir%” (
mkdir “%logdir%”
)
REM ————————————
if not exist “%logdir%\%1” (
mkdir “%logdir%\%1”
)
REM ————————————
REM サイト関連
REM ————————————
REM ①Webサイト作成
REM ————————————
%systemroot%\system32\inetsrv\appcmd add site /name:”%1″ /id:”%2″ /bindings:http://”%3″:80 /physicalPath:”%domaindir%”
REM ————————————
REM ホスト名追加①
REM ————————————
if not “%4″==”” (
%systemroot%\system32\inetsrv\appcmd.exe set site /site.name:”%1″ /+bindings.[protocol=’http’,bindingInformation=’:80:%4′] ) REM ———————————— REM ホスト名追加② REM ———————————— if not “%5″==”” ( %systemroot%\system32\inetsrv\appcmd.exe set site /site.name:”%1″ /+bindings.[protocol=’http’,bindingInformation=’:80:%5′]
)
REM ————————————
REM アプリケーションプール関連
REM ————————————
REM ①アプリケーションプール作成
REM ————————————
%systemroot%\system32\inetsrv\appcmd add apppool /name:”%1″ /managedRuntimeVersion:v4.0 /managedPipelineMode:Integrated /enable32BitAppOnWin64:true
REM ————————————
REM ②アプリケーションプール変更(①で作成したサイト名称のアプリケーションプールを利用)
REM ————————————
%systemroot%\system32\inetsrv\appcmd set app /app.name:”%1/” /path:/ /applicationPool:”%1″
REM ————————————
REM 仮想ディレクトリ関連
REM ————————————
REM ①共通利用の『dir2』
REM ————————————
%systemroot%\system32\inetsrv\appcmd add vdir /app.name:”%1/” /path:/dir2 /physicalPath:”%vardir%”
REM ————————————
REM IISログ関連
REM ————————————
REM ①ログ出力フォーマット指定(W3C)
REM ————————————
%systemroot%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites /[name=’%1′,id=’%2′].logFile.logFormat:”W3C” /commit:apphost
REM ————————————
REM ②ログ記録フィールド指定(W3C)
REM ————————————
%systemroot%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites /[name=’%1′,id=’%2′].logFile.logExtFileFlags:”Date, Time, ClientIP, ComputerName, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, UserAgent, Referer, ProtocolVersion, Host, HttpSubStatus” /commit:apphost
REM ————————————
REM ③ログ出力指定(C:\Logs\IIS_Logs\サイト名称)
REM ————————————
%systemroot%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites /[name=’%1′,id=’%2′].logFile.directory:”%logdir%” /commit:apphost
endlocal
echo on
REM pause エラーが無いかを確認してください。

仕事で使っているIIS用のサイト構築バッチです。以下のように使います。

call set_IIS_Site.cmd サイト名 サイトID ドメイン1 ドメイン2 ドメイン3

コマンドプロンプトで直接たたいたりバッチファイルにして起動します。

なお1つのサイトのバインド設定が最大3あるためこのような形になっています。
※外部公開用、外部公開用(お客様独自ドメイン)、内部検証用 すべて80番ポートで使用。

httpsサイトもありますが、ロードバランサーで設定しているため、IISではすべて80番ポートでの運用になっています。

なお、IIS7.0とIIS10.0では動作しました。

Windowsのhostsファイルを編集する

LANやDNSに登録されていないIPアドレスのホストをドメインで参照したい場合、hostsファイルを編集することで実現できます。

Windowsの場合は

C:\Windows\system32\drivers\etc

以下にあります。
※Windowsのバージョンに関係なくここにあります。

なおWindows10の場合は直接編集できないのでセキュリティで権限を付与するか、以下のフリーソフトを使うと編集が便利です。

http://softwarefactory.jp/ja/products/hostsfilemanager/download.html

注意:

Windowsのhostsファイルは1レコードに登録できるドメインが9個までという制限があるそうです。

そのため同じIPで10個以上になる場合は、別のレコードにしてやると閲覧可能になります。