显示页面讨论过去修订反向链接回到顶部 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== 06 Windows/IIS 生产部署 ====== ===== 部署主线 ===== Windows/IIS 是 RhinoCompute 生产部署的主线。IIS 位于最前面,负责接收请求并启动/托管 ''rhino.compute.exe''。''rhino.compute'' 再启动一个或多个 ''compute.geometry'' 子进程执行实际求解。 典型链路: <code> 客户端 / Hops / 业务后端 | v IIS | v rhino.compute.exe | v compute.geometry.exe 子进程 | v Rhino.Inside + Rhino + Grasshopper </code> ===== 为什么生产环境使用 IIS ===== 直接启动 ''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 的部署脚本。 ===== Bootstrap 安装流程 ===== 官方部署流程使用 PowerShell bootstrap 脚本安装 Rhino、IIS、Compute,并配置 IIS 站点。教学中应强调: * 在全新 VM 上执行最简单。 * 用管理员权限打开 PowerShell。 * 脚本会提示输入邮箱、API Key、Rhino Token。 * 安装完成后,IIS 应能在收到请求时启动 RhinoCompute。 不要把生产 token 或 API key 写进教学截图、共享文档或代码仓库。 ===== web.config 的作用 ===== IIS 通过 ''web.config'' 启动 ASP.NET Core 应用。部署后常见路径: <code> C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\rhino.compute\web.config </code> 其中 ''aspNetCore'' 节点的 ''arguments'' 可配置 RhinoCompute 启动参数,例如: <code xml> <aspNetCore processPath=".\rhino.compute.exe" arguments="--port 80 --childcount 4" stdoutLogEnabled="true" stdoutLogFile="..\..\..\..\..\logs\LogFiles\W3SVC1\" hostingModel="InProcess" /> </code> 修改前建议备份 ''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。两者要配合: * IIS Idle Timeout 应略大于 Compute 的 ''idlespan''。 * 否则 IIS 可能先关闭 ''rhino.compute'',导致子进程管理和日志不清晰。 * idlespan 太短会增加冷启动延迟;太长会增加服务器计费时间。 ===== 部署后测试 ===== 在客户端机器上测试: <code> http://server-ip:80/version http://server-ip:80/healthcheck http://server-ip:80/activechildren http://server-ip:80/sdk </code> 然后在 Hops 中配置: * Hops-Compute server URL:''http://server-ip:80/'' * API Key:部署时输入的 API Key 最后运行一个最小 Hops 定义,而不是直接运行完整业务定义。 ===== HTTPS 与反向代理 ===== 公网服务建议使用 HTTPS。可以按官方“Configure Compute to use HTTPS”流程配置,也可以在企业架构中把 HTTPS 终止放到更前面的负载均衡或网关层。 基本原则: * 不要在公网裸露无 API Key 的 Compute。 * API Key 不等于完整用户权限系统,只适合保护 Compute 服务入口。 * 多用户业务应由外层业务服务完成用户认证、授权、限流和审计。 ===== 更新 Compute ===== 生产服务器更新分两类: * 更新 Rhino。 * 更新 RhinoCompute。 更新前应: * 记录当前 Rhino 版本、Compute 版本、插件版本。 * 备份 ''web.config'' 和部署脚本配置。 * 在测试 VM 上验证业务 GH 定义和自定义端点。 * 安排维护窗口。 ===== 本章检查点 ===== * IIS 是否能启动 RhinoCompute? * ''/healthcheck'' 和 ''/sdk'' 是否能从客户端访问? * Hops 使用远程 URL 和 API Key 是否能求解最小定义? * 日志目录是否能看到当天日志? * idlespan 与 IIS Idle Timeout 是否协调? ===== 参考资料 ===== * [[https://developer.rhino3d.com/guides/compute/deploy-to-iis/|Deployment to Production Servers]] * [[https://developer.rhino3d.com/guides/compute/core-hour-billing/|Licensing & Billing]] * [[https://developer.rhino3d.com/guides/compute/compute-faq/|Compute FAQ]] 登录 Detach Close 该主题尚不存在 您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。 rhino二次开发/rhinocompute_7/production_windows_iis.txt 最后更改: 2026/06/05 17:03由 张叶安 登录