Skip to content
VDS · Windows Server

IIS:Windows上でのサイト公開

VPSにIIS Webサーバーをインストールし、独自ドメインで最初のサイトを公開し、証明書を取得し、ログの肥大化を防ぐ方法を解説します。

更新日 2026年8月23日

IISはWindows Serverに組み込まれているWebサーバーです。ASP.NETアプリケーション、静的コンテンツ、そしてローカルポートで待ち受けるサービスの前段に置くリバースプロキシとして問題なく動作します。

インストール

Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Install-WindowsFeature Web-Asp-Net48, Web-Http-Redirect, Web-Dyn-Compression

ファイアウォールでポートを開放します。

New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

コントロールパネルの「概要」/hosting/vds/m/<id>に表示されるマシンのアドレスでスタートページが開くことを確認してください。開かない場合はWindowsファイアウォールを参照してください。

最初のサイト

Import-Module WebAdministration
New-Item -ItemType Directory C:\sites\example
Set-Content C:\sites\example\index.html "<h1>It works</h1>"

New-WebAppPool -Name "example"
New-Website -Name "example" -Port 80 -HostHeader "example.ru" `
  -PhysicalPath "C:\sites\example" -ApplicationPool "example"

ホストヘッダー(-HostHeader)を使うと、1つのアドレスで複数のサイトを運用できます。IISはドメインによってサイトを区別します。ドメインはAレコードでマシンのアドレスを指している必要があります。

サイトに必要なのはディレクトリに対する最小限の権限、つまり読み取りだけです。

icacls C:\sites\example /grant "IIS AppPool\example:(OI)(CI)R" /T

HTTPS証明書

無料の証明書を取得する最も簡単な方法はwin-acmeクライアントです。wacs.exeをダウンロードし、管理者として実行して、一覧からサイトを選択してください。証明書が発行され、サイトにバインドされ、更新タスクが作成されます。

バインドを確認するには次のコマンドを実行します。

Get-WebBinding -Name "example"
New-WebBinding -Name "example" -Protocol https -Port 443 -HostHeader "example.ru" -SslFlags 1

証明書を発行するには、外部からポート80が開放されている必要があります。ドメインの検証はこのポートを通じて行われます。

IISの背後で動かすアプリケーション

サービス(Node、Python、.NET Kestrel)が127.0.0.1:5000で待ち受けている場合は、URL RewriteモジュールとApplication Request Routingモジュールをインストールし、プロキシを有効にして、サイトのweb.configに以下を追加します。

<rule name="proxy" stopProcessing="true">
  <match url="(.*)" />
  <action type="Rewrite" url="http://127.0.0.1:5000/{R:1}" />
</rule>

こうすることで、証明書を持つIISだけが外部に公開され、アプリケーションはlocalhostに留まります。

運用

Get-Website | Select-Object Name, State, PhysicalPath
Restart-WebAppPool example
Get-WebAppPoolState

ログはC:\inetpub\logs\LogFilesに保存され、際限なく増えていきます。40 GBのディスクではすぐに容量を圧迫します。IISマネージャーの「ログ記録」セクションでローテーション(日単位のファイル)を設定し、古いログはスケジュールタスクで削除してください。

Get-ChildItem C:\inetpub\logs\LogFiles -Recurse -File |
  Where-Object LastWriteTime -lt (Get-Date).AddDays(-30) | Remove-Item -Force

よくあるエラー

  • エラー 500.19 — web.configの破損、またはモジュールの不足です。ローカルからの要求に対して詳細メッセージを有効にすると、エラー本文に正確な原因が表示されます。
  • アプリケーションプールが勝手に停止する。 ラピッドフェイル保護が働いています。サイトがクラッシュし、IISがそれを停止させています。アプリケーションログ(Get-WinEvent -LogName Application -MaxEvents 30)で原因を確認してください。
  • サイトはアドレスでは開くがドメインでは開かない。 ホストヘッダーが一致していないか、DNSがまだ更新されていません。
  • 公開後に403が返る。 アプリケーションプールにディレクトリの権限が付与されていません。

サイトのディレクトリはC:\inetpubの外に置き、C:\sitesのような別のフォルダーにしてください。バックアップが簡単になり、データを失うことなくシステムを再インストールできます。