目录

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

为什么生产环境使用 IIS

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

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

前置条件

Bootstrap 安装流程

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

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

web.config 的作用

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 与 IIS Idle Timeout

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

部署后测试

在客户端机器上测试:

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

然后在 Hops 中配置:

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

HTTPS 与反向代理

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

基本原则:

更新 Compute

生产服务器更新分两类:

更新前应:

本章检查点

参考资料