rhino二次开发:rhinocompute_7:production_windows_iis

06 Windows/IIS 生产部署

Windows/IIS 是 RhinoCompute 生产部署的主线。IIS 位于最前面,负责接收请求并启动/托管 rhino.compute.exerhino.compute 再启动一个或多个 compute.geometry 子进程执行实际求解。

典型链路:

客户端 / Hops / 业务后端
  |
  v
IIS
  |
  v
rhino.compute.exe
  |
  v
compute.geometry.exe 子进程
  |
  v
Rhino.Inside + Rhino + Grasshopper

直接启动 rhino.compute.exe technically 可行,但生产环境还需要:

  • 机器重启后自动恢复服务。
  • 进程异常退出后自动拉起。
  • 与 Windows Server/IIS 运维体系集成。
  • 配置端口、HTTPS、日志、应用池空闲策略。
  • 让 Compute 不必一直运行,按请求唤醒,空闲后关闭子进程以控制计费。

因此生产环境建议按官方 IIS 部署指南执行。

  • Windows Server 2019 或更高版本。
  • 可远程登录服务器的 RDP 权限。
  • Rhino 下载所需邮箱。
  • Compute API Key:自定义的高强度密钥,用于客户端认证。
  • RhinoToken:从 Licenses Portal 获取的 Core-Hour Billing token。
  • 明确使用 Rhino 8 还是 Rhino 7 的部署脚本。

官方部署流程使用 PowerShell bootstrap 脚本安装 Rhino、IIS、Compute,并配置 IIS 站点。教学中应强调:

  • 在全新 VM 上执行最简单。
  • 用管理员权限打开 PowerShell。
  • 脚本会提示输入邮箱、API Key、Rhino Token。
  • 安装完成后,IIS 应能在收到请求时启动 RhinoCompute。

不要把生产 token 或 API key 写进教学截图、共享文档或代码仓库。

IIS 通过 web.config 启动 ASP.NET Core 应用。部署后常见路径:

C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\rhino.compute\web.config

其中 aspNetCore 节点的 arguments 可配置 RhinoCompute 启动参数,例如:

<aspNetCore processPath=".\rhino.compute.exe"
            arguments="--port 80 --childcount 4"
            stdoutLogEnabled="true"
            stdoutLogFile="..\..\..\..\..\logs\LogFiles\W3SVC1\"
            hostingModel="InProcess" />

修改前建议备份 web.config。修改后重启 IIS 或回收应用池。

参数 推荐理解
–port 80 IIS/Compute 监听端口。除非清楚网络配置,不要随意改。
–childcount 4 子进程数量。提高并发,但增加内存和授权占用。
–idlespan 3600 子进程空闲关闭时间,单位秒。默认常见为 1 小时。
–spawn-on-startup 启动 Compute 时立即拉起子进程。生产常保持 false,按请求唤醒。
–load-grasshopper false 不需要 GH 求解时可关闭 Grasshopper 加载,缩短启动。
–max-request-size N 调整最大请求体。大模型或大 DataTree 可能需要提高。
–timeout N 调整服务端超时。长耗时 Grasshopper 定义可能需要提高。
–apikey KEY 会覆盖环境变量中的 API Key。生产更推荐环境变量或部署脚本管理。
–block-private-urls 公网服务建议启用,防止服务端 URL 抓取访问云元数据或内网资源。

idlespan 控制 compute.geometry 子进程空闲多久后关闭。IIS 应用池也有自己的 Idle Timeout。两者要配合:

  • IIS Idle Timeout 应略大于 Compute 的 idlespan
  • 否则 IIS 可能先关闭 rhino.compute,导致子进程管理和日志不清晰。
  • idlespan 太短会增加冷启动延迟;太长会增加服务器计费时间。

在客户端机器上测试:

http://server-ip:80/version
http://server-ip:80/healthcheck
http://server-ip:80/activechildren
http://server-ip:80/sdk

然后在 Hops 中配置:

最后运行一个最小 Hops 定义,而不是直接运行完整业务定义。

公网服务建议使用 HTTPS。可以按官方“Configure Compute to use HTTPS”流程配置,也可以在企业架构中把 HTTPS 终止放到更前面的负载均衡或网关层。

基本原则:

  • 不要在公网裸露无 API Key 的 Compute。
  • API Key 不等于完整用户权限系统,只适合保护 Compute 服务入口。
  • 多用户业务应由外层业务服务完成用户认证、授权、限流和审计。

生产服务器更新分两类:

  • 更新 Rhino。
  • 更新 RhinoCompute。

更新前应:

  • 记录当前 Rhino 版本、Compute 版本、插件版本。
  • 备份 web.config 和部署脚本配置。
  • 在测试 VM 上验证业务 GH 定义和自定义端点。
  • 安排维护窗口。
  • IIS 是否能启动 RhinoCompute?
  • /healthcheck/sdk 是否能从客户端访问?
  • Hops 使用远程 URLAPI Key 是否能求解最小定义?
  • 日志目录是否能看到当天日志?
  • idlespan 与 IIS Idle Timeout 是否协调?

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • rhino二次开发/rhinocompute_7/production_windows_iis.txt
  • 最后更改: 2026/06/05 17:03
  • 张叶安