ESC

開始輸入,可搜尋發票、服務、域名、工單,以及 更多...

搜尋... Ctrl+K
Windows 伺服器

Windows Server IIS 建站教程:安裝 IIS、繫結獨立 IP、免費 SSL 與 PHP

5 個步驟 8 分鐘閱讀 15 次閱讀 0
本文目錄

如果你習慣 Windows 環境,或者要執行 ASP.NET 程式,Windows Server IIS 建站是最直接的選擇。本文以 Windows Server 2016/2019/2022 為例,介紹用 PowerShell 安裝 IIS、把網站繫結到指定 IP 和主機頭(多 IP 站群伺服器非常實用)、用 win-acme 申請免費 SSL 證書並自動續期,以及通過 IIS FastCGI 執行 PHP 的基本思路。

步驟 1:用 Install-WindowsFeature 安裝 IIS

以管理員身份開啟 PowerShell 執行下面的命令,幾分鐘即可裝好 IIS 和管理工具。如果之後要跑 PHP,順便安裝 CGI 元件(包含 FastCGI)。安裝完成後在瀏覽器訪問伺服器 IP,能看到 IIS 歡迎頁即表示成功。

Install-WindowsFeature -Name Web-Server -IncludeManagementTools
# Optional: CGI/FastCGI support (needed for PHP)
Install-WindowsFeature -Name Web-CGI

Get-WindowsFeature Web-Server, Web-CGI
安裝 IIS 時系統會自動啟用“全球資訊網服務(HTTP 流量入站)”防火牆規則。HTTPS 的 443 埠如未放行,請參考“Windows 防火牆開放埠”教程。

步驟 2:建立 IIS 網站並繫結 IP 與主機頭

一個 IIS 繫結由“IP 地址 + 埠 + 主機頭”三部分組成。下面建立站點 site1,只在 203.0.113.11 這個 IP 上響應 www.example.com,並再新增不帶 www 的主機頭。請把 IP 和域名換成你自己的,並先在域名 DNS 中把 A 記錄指向該 IP。

Import-Module WebAdministration
New-Item -ItemType Directory -Path C:\inetpub\site1 -Force
Set-Content -Path C:\inetpub\site1\index.html -Value "site1 OK"

New-Website -Name "site1" -PhysicalPath "C:\inetpub\site1" -IPAddress "203.0.113.11" -Port 80 -HostHeader "www.example.com"
New-WebBinding -Name "site1" -IPAddress "203.0.113.11" -Port 80 -HostHeader "example.com"

Get-WebBinding -Name "site1"

步驟 3:多 IP 站群伺服器的 IIS 繫結方式

在 IMIDC 的多 IP / 站群伺服器上,常見需求是每個網站使用獨立 IP。做法是先把所有 IP 新增到網絡卡(參考“Windows 新增 IP 地址”教程),再為每個站點繫結一個 IP。不填主機頭時,該 IP 上的所有域名都由這個站點響應。同時建議停用預設網站,避免它佔用“全部未分配:80”而搶走請求。

# One site per IP, no host header (answers any domain pointed at that IP)
New-Website -Name "site2" -PhysicalPath "C:\inetpub\site2" -IPAddress "203.0.113.12" -Port 80
New-Website -Name "site3" -PhysicalPath "C:\inetpub\site3" -IPAddress "203.0.113.13" -Port 80

# Stop the Default Web Site so it does not catch *:80
Stop-Website -Name "Default Web Site"
Set-ItemProperty "IIS:\Sites\Default Web Site" -Name serverAutoStart -Value $false
同一個“IP + 埠 + 主機頭”組合只能屬於一個站點,重複繫結會導致站點無法啟動。新增大量站點前,先用 Get-WebBinding 檢查現有繫結。

步驟 4:用 win-acme 為 IIS 申請免費 SSL 證書

win-acme(wacs.exe)是 Windows 上常用的 Let's Encrypt 客戶端,可以自動識別 IIS 站點、完成驗證、安裝證書並建立續期計劃任務。請從 win-acme 官方網站或其 GitHub 釋出頁下載 x64 壓縮包,解壓到 C:\tools\win-acme 後執行。按提示選擇“使用預設設定建立證書”,再選擇對應的 IIS 站點和域名即可;工具會自動新增 443 繫結。

cd C:\tools\win-acme
.\wacs.exe

# Check the renewal task created by win-acme
Get-ScheduledTask | Where-Object TaskName -like "win-acme*"

申請前務必確認:域名已解析到該站點繫結的 IP,80 埠可從外網訪問(HTTP 驗證需要),且站點繫結中已包含要申請證書的主機頭。

步驟 5:通過 IIS FastCGI 執行 PHP

從 PHP 官方 Windows 下載站獲取對應版本的 NTS(非執行緒安全)x64 壓縮包,解壓到 C:\PHP,安裝對應的 Visual C++ 執行庫,並把 php.ini-production 複製為 php.ini。然後用 appcmd 註冊 FastCGI 程式、新增 *.php 處理程式對映,並把 index.php 加為預設文件:

$appcmd = "$env:windir\System32\inetsrv\appcmd.exe"
& $appcmd set config /section:system.webServer/fastCgi /+"[fullPath='C:\PHP\php-cgi.exe']"
& $appcmd set config /section:system.webServer/handlers /+"[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='C:\PHP\php-cgi.exe',resourceType='Either']"
& $appcmd set config /section:defaultDocument /+"files.[value='index.php']"

Set-Content -Path C:\inetpub\site1\info.php -Value "<?php phpinfo();"
iisreset

訪問 http://你的域名/info.php,看到 PHP 資訊頁即表示配置成功。測試完成後請刪除 info.php,避免洩露伺服器資訊。

常見問題

站點啟動報錯“另一個網站可能正在使用該埠”?

說明有其他站點佔用了相同的 IP + 埠 + 主機頭,最常見的是預設網站。停止預設網站或調整其繫結後重新啟動站點即可。

win-acme 驗證失敗怎麼辦?

檢查域名 A 記錄是否指向正確 IP、80 埠是否能從外網開啟,以及是否有 CDN 或重定向規則攔截了 /.well-known/acme-challenge/ 路徑。

IIS 和寶塔哪個更適合我?

執行 ASP.NET、MSSQL 等微軟技術棧時選 Windows + IIS;以 PHP/MySQL 為主的網站,Linux + 寶塔面板通常更省資源,可參考“寶塔面板安裝”教程。

如按以上步驟仍無法解決,請提交工單聯絡 IMIDC 7×24 技術支援,並附上伺服器 IP、作業系統版本、執行過的命令和報錯截圖,方便工程師快速定位問題。

這篇文章有幫助嗎?

相關教程