开始输入,可搜索发票、服务、域名、工单,以及 更多...
如果你习惯 Windows 环境,或者要运行 ASP.NET 程序,Windows Server IIS 建站是最直接的选择。本文以 Windows Server 2016/2019/2022 为例,介绍用 PowerShell 安装 IIS、把网站绑定到指定 IP 和主机头(多 IP 站群服务器非常实用)、用 win-acme 申请免费 SSL 证书并自动续期,以及通过 IIS FastCGI 运行 PHP 的基本思路。
以管理员身份打开 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 绑定由“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"在 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 $falsewin-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 验证需要),且站点绑定中已包含要申请证书的主机头。
从 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 + 端口 + 主机头,最常见的是默认网站。停止默认网站或调整其绑定后重新启动站点即可。
检查域名 A 记录是否指向正确 IP、80 端口是否能从外网打开,以及是否有 CDN 或重定向规则拦截了 /.well-known/acme-challenge/ 路径。
运行 ASP.NET、MSSQL 等微软技术栈时选 Windows + IIS;以 PHP/MySQL 为主的网站,Linux + 宝塔面板通常更省资源,可参考“宝塔面板安装”教程。
如按以上步骤仍无法解决,请提交工单联系 IMIDC 7×24 技术支持,并附上服务器 IP、操作系统版本、执行过的命令和报错截图,方便工程师快速定位问题。