如何使用 IIS 在 Windows Server 上部署 Nextjs 应用程序:分步指南

如何使用 IIS 在 Windows Server 上部署 Nextjs 应用程序:分步指南
最新回答
鲜奶千层雪

2024-04-14 15:42:15

以下是在 Windows Server 上使用 IIS 部署 Next.js 应用程序的分步指南:

一、准备 Windows Server 环境
  1. 安装 IIS

    打开“服务器管理器”,选择“添加角色和功能”。

    在“服务器角色”步骤中,勾选“Web 服务器(IIS)”,按提示完成安装。

  2. 安装必要 IIS 功能

    在“功能”步骤中,确保勾选以下内容:

    常见 HTTP 功能:默认文档、静态内容、HTTP 错误。

    应用程序开发功能:CGI(用于后续 URL 重写配置)。

    性能功能:静态内容压缩(可选,提升传输效率)。

    完成安装后,可通过浏览器访问

    http://localhost
    验证 IIS 是否正常运行。

二、安装 Node.js 和 NPM
  1. 下载 Node.js

    访问

    Node.js 官网
    ,下载 Windows Server 兼容的 LTS 版本(如 18.x 或 20.x)。

  2. 安装 Node.js

    运行安装程序,勾选“Add to PATH”选项,确保系统环境变量中包含 Node.js 和 NPM 的路径。

  3. 验证安装

    打开命令提示符,输入 node -v 和 npm -v,确认版本号显示正常。

三、构建 Next.js 应用程序的生产版本
  1. 准备项目代码

    将 Next.js 项目代码上传至 Windows Server 的指定目录(如 C:inetpubwwwrootmy-nextjs-app)。

  2. 安装依赖

    在项目目录下打开命令提示符,运行 npm install 安装所有依赖。

  3. 构建生产版本

    执行 npm run build,生成 .next 文件夹(包含优化后的静态文件和服务器端代码)。

  4. 测试本地运行

    运行 npm start,访问

    http://localhost:3000
    (默认端口)确认应用能正常启动。

四、配置 IIS 托管应用
  1. 创建 IIS 网站

    打开“IIS 管理器”,右键“站点”选择“添加网站”。

    填写网站名称(如“MyNextJSApp”),物理路径指向项目目录(包含 .next 文件夹的路径)。

    绑定类型选择“http”,IP 地址为“全部未分配”,端口设为 80(或自定义端口,需确保防火墙允许)。

  2. 配置 URL 重写

    下载并安装

    IIS URL Rewrite 模块

    在 IIS 中选择网站,双击“URL 重写”图标。

    添加规则:选择“入站规则”→“空白规则”,模式填写 (.*),操作选择“重写”,重写 URL 填写 /{R:1}(用于处理 SPA 路由)。

  3. 设置应用程序池

    在 IIS 中右键“应用程序池”,选择“添加应用程序池”,名称与网站一致,.NET CLR 版本选“无托管代码”。

    右键新建的应用程序池,选择“基本设置”,将“托管管道模式”设为“集成”。

  4. 配置静态文件处理

    确保 IIS 已安装“静态内容”功能(安装 IIS 时勾选)。

    在网站目录下创建 public 文件夹(若 Next.js 项目有静态资源),IIS 会自动处理静态文件请求。

五、设置 PM2 进行进程管理
  1. 安装 PM2

    在命令提示符中运行 npm install -g pm2,全局安装 PM2。

  2. 启动 Next.js 应用

    进入项目目录,运行 pm2 start npm --name "my-nextjs-app" -- start,启动应用并命名进程。

  3. 设置开机自启

    运行 pm2 startup,按提示执行生成的命令(如 pm2 save 和系统注册表配置)。

    重启服务器后,运行 pm2 restore 确认应用自动启动。

六、验证部署
  1. 访问应用

    在浏览器中输入服务器 IP 或域名(如

    http://your-server-ip
    ),确认 Next.js 应用正常加载。

  2. 检查日志

    使用 pm2 logs my-nextjs-app 查看应用日志,排查潜在错误。

常见问题处理
  • 端口冲突:若 80 端口被占用,修改 IIS 绑定端口为 8080 等,并在防火墙中放行。
  • URL 重写失效:检查 IIS URL Rewrite 模块是否安装,规则模式是否匹配所有路径((.*))。
  • PM2 未启动:运行 pm2 list 确认进程状态,若未运行则执行 pm2 start 或检查启动脚本。

通过以上步骤,Next.js 应用程序应能成功部署在 Windows Server 的 IIS 上,并通过 PM2 实现稳定运行。如需更详细的配置(如 HTTPS、负载均衡),可参考

完整指南