Skip to content

Releases: YoungsunLi/aca

v0.7.0

Choose a tag to compare

@YoungsunLi YoungsunLi released this 18 Oct 11:33

新命令

  • aca rdp <实例>:经云助手会话管理打开服务器的远程桌面,不用公网 IP,安全组也不用放行 3389,用服务器上的 Windows 账号登录。Windows 上 aca 启动 mstsc;其他系统或加 --no-launch 时打印本机地址,用 RDP 客户端连接。隧道只在 aca 运行时有效。
  • --resolution 1280x720:指定 aca 启动的 mstsc 窗口大小。
  • 单条会话的带宽上限 200 kbit/s(约 25 KB/s),传文件用 aca push、aca pull,不要走远程桌面。

其他

  • skill:AI Agent 会用 aca rdp 打开远程桌面;查 IIS 日志时按每台服务器实际的配置找目录,aca logs -n 只是样本。

升级

  • aca rdp 需要账号已开通会话管理、RAM 有 ecs:StartTerminalSession 和 ecs:DescribeCloudAssistantStatus、服务器上开着远程桌面(监听 3389)、云助手客户端在 2.1.3.256 及以上,见 README 的 aca rdp。
  • 升级后跑一次 aca skill install,装给 Claude Code、Codex 的 skill 才会更新。
npm install -g @ninesols/aca-cli

v0.6.0

Choose a tag to compare

@YoungsunLi YoungsunLi released this 30 Sep 12:16

新命令

  • aca reboot <实例...>:aca 按给出的顺序重启服务器,一台服务器恢复了才重启下一台;服务器上有站点配了负载均衡时,aca 重启前先把这台服务器摘出负载均衡,恢复后放回。
  • aca push <实例> <本机文件> <服务器上的路径>:aca 把本机的一个文件经 OSS 送到服务器上,比如服务器上不了外网时要装的安装包;服务器上已有这个文件时 aca 报错,不覆盖。

负载均衡

  • 支持 ALB、NLB 和 CLB 的虚拟服务器组:站点配置里的 alb、nlb 写服务器组 ID,clb 也能写虚拟服务器组 ID(rsp-);aca 发布、回退、重启每台服务器前先把它摘出这个组,成功后放回。

其他

  • aca status 显示站点首页的状态码:站点和应用池都开着时,aca 在服务器本机请求首页,状态写成 Started, home <状态码>,5xx 或 unreachable 多半是应用没起来。aca status <站点> 也显示站点的这个状态。
  • skill:AI Agent 用 aca run 改服务器前,先在脚本里备份要改的东西,把要执行的脚本和退回用的脚本一起给你看,改完站点或服务用 aca status 核对;重启服务器前先给你看 aca reboot --check 的输出,用 aca push 前先和你确认目标服务器、本机文件和服务器上的路径。

修复

  • 国际站账号也能用 aca certs cloud 和 aca certs replace --from-cloud:以前 aca 只查中国站的接入点,国际站账号列出的是空表,按 ID 取证书报 NotFound。

升级

  • aca clb 改名为 aca lb,用到它的脚本要跟着改;配置里的 clb 字段不变。
  • 给站点配 alb、nlb 或 CLB 虚拟服务器组之前,RAM 权限要加上对应的几项,见 README 的凭证和权限。
  • 升级后跑一次 aca skill install,装给 Claude Code、Codex 的 skill 才会更新。
npm install -g @ninesols/aca-cli

v0.5.0

Choose a tag to compare

@YoungsunLi YoungsunLi released this 24 Sep 15:48

新命令

  • aca events <站点或服务>:aca 列出每台服务器的系统日志、应用程序日志里和这个站点或服务有关的 Windows 事件,站点报 503、应用池自己停了、服务意外停止或起不来时用它找原因;-n、--since、--until 的用法和 aca logs 一样。

排查

  • aca logs --httperr:aca 改读 HTTP.sys 的错误日志,要同时给 --since。站点报 503 或连接被断开、IIS 日志里却找不到这些请求时,用它看没进到 IIS、由 HTTP.sys 自己回了错误或断开的请求。
  • aca run -o <本地文件>:aca 把脚本的输出经 OSS 存进这个文件、不打印,不受云助手 24 KB 的输出上限;错误、警告和 Write-Host 照常打印。
  • 输出超过云助手的上限时,aca 改在输出前面提示丢了多少字节。
  • skill:站点报 503、应用池停了、服务起不来时,AI Agent 先用 aca events 找原因,站点的请求在 IIS 日志里找不到时再用 aca logs --httperr;要拿全的清单、查询结果用 aca run -o 存,你没说存到哪里时存到系统临时目录。

发布

  • 支持用 dotnet.exe 启动 .dll 的 Windows 服务:aca 核对服务跑的程序在不在配置的 dir 里时,认的是 dotnet.exe 后面的 .dll;用 aca discover 也能找到这类服务。
  • 预检查核对单文件发布(.NET 5 起)的 .NET Core 程序要的共享框架:aca 从 exe 里读出打包在里面的 runtimeconfig.json。
  • 包根目录的 appsettings*.json 和服务器上那份不一样时,预检查提示会整份覆盖:服务器上那份里加过的设置(如连接串)会丢,服务器上自己维护的要列进 exclude。

修复

  • 用 aca diff 比服务时,aca 也比 .NET Core 的 *.runtimeconfig.json 和 *.deps.json:以前只比 .dll 和 .exe,几台服务器上的这两种文件不一样时查不出来。

升级

  • 升级后跑一次 aca skill install,装给 Claude Code、Codex 的 skill 才会更新。
npm install -g @ninesols/aca-cli

v0.4.0

Choose a tag to compare

@YoungsunLi YoungsunLi released this 23 Sep 17:00

aca run

  • aca run 支持从文件读脚本,用 --file <文件>:写在命令行上的脚本要先经本机 shell 处理,$、引号、换行都可能被悄悄改掉;文件要是 UTF-8。
  • skill:排查服务器问题、给服务器做体检时 AI Agent 也会用上 aca;AI Agent 把 aca run 的脚本先写进文件再用 --file 发,装完东西也不把安装程序的 3010、3009 退出码原样 exit 出去,云助手客户端见到这两个退出码会接着重启或关掉服务器。

修复

  • aca run 的脚本里有 GBK 以外的字符(如 emoji、✓)时,aca 拒绝发送:系统区域不是英语(美国)的服务器上,云助手客户端会把这样的脚本执行成空脚本、照样报成功;aca 发之前不知道服务器的系统区域,所以英语(美国)的服务器上也拒绝。
  • 装了 .NET 4.8 的 Server 2019 及更早系统上,查证书、换证书和 https 绑定的首页检查不再握手失败。
  • 系统区域不是中文的服务器上,输出里的中文不再变成问号。
  • 超时时云助手客户端连同脚本启动的进程一起杀掉。
  • 输出超过云助手上限时,aca discover、aca certs 的结果里基本不再混进切口处拼成的行:云助手客户端只保留输出的开头和结尾、丢掉中间,切口那一行由两截拼成。
  • 预检查比较 .NET Core 共享框架的版本时带上预览号:比如程序要 10.0.0-rc.2、服务器上只有 10.0.0-rc.1,以前不提示。
  • Server 2016 及更早的系统打不开 AES 加密的 PFX 时,aca 提示的重新导出命令改用 3DES 参数:原来提示的 -legacy 要 OpenSSL 的 legacy 模块,有的 OpenSSL(如 Git for Windows 自带的)没带。

升级

  • 升级后跑一次 aca skill install,装给 Claude Code、Codex 的 skill 才会更新。
npm install -g @ninesols/aca-cli

v0.3.0

Choose a tag to compare

@YoungsunLi YoungsunLi released this 22 Sep 16:01

新命令

  • aca discover:aca 列出每台 Windows 服务器上的 IIS 站点、站点下的应用程序和 Windows 服务,最后给出配置草稿,只收配置里还没有的。

发布

  • 站点下的 IIS 应用程序可以作为发布目标:在 sites 里写成 站点名/路径,如 Default Web Site/api;发布时 aca 只停它自己的应用池。
  • aca 发布前确认 OSS 上的包不能被匿名读取:发布包不带凭证就读得到、或者 bucket policy 对匿名用户开放时,aca 报错退出,--check 也一样。
  • 首页检查支持 https 绑定:http 绑定跳到本站的 https 绑定时,aca 跟过去请求那个绑定;只有 https 绑定的站点也检查。

其他

  • aca certs replace --from-cloud 支持 ECC 证书。
  • aca instances 的输出多一列云助手客户端的版本,客户端离线时是 offline since <最后心跳>。
  • 云助手执行记录的命令名称写上 aca 命令行。
  • skill:没有配置文件时,AI Agent 先问你地域和 OSS bucket,再用 aca discover 起草配置;用 aca run 改服务器之前,AI Agent 把目标服务器和完整脚本给你看,等你确认再执行。

修复

  • aca 回退时连发布新建的目录一起删,只删回退后是空的;用 0.3.0 之前的 aca 做的发布没记下新建了哪些目录,回退它们仍会留下这些目录。
  • aca 在 Server 2012 上换 ECC 证书不再留下临时导入的私钥,服务器上的 .NET Framework 要 4.6.1 及以上。

升级

  • RAM 权限要加上 oss:GetBucketPolicyStatus,没有它 aca 在发布前就报错退出;要看云助手客户端的版本再加 ecs:DescribeCloudAssistantStatus。
  • 升级后跑一次 aca skill install,装给 Claude Code、Codex 的 skill 才会更新。
npm install -g @ninesols/aca-cli

v0.2.0

Choose a tag to compare

@YoungsunLi YoungsunLi released this 21 Sep 15:16

新命令

  • aca logs <站点>:取站点在每台服务器上的 IIS 日志,最新几行或某个时间段。
  • aca diff <站点或服务>:按内容哈希比对每台服务器上的文件,列出不一样的。
  • aca certs cloud:列出数字证书管理服务里的证书,aca certs replace --from-cloud <证书 ID> 直接换上去,PFX 由 aca 合成。

发布

  • 先预检查每台服务器,都通过了才逐台发布。
  • 预检查新增:按运行时的规则解析发布后的每个程序集引用,拦下这次发布会弄坏的;核对 .NET Framework 版本、程序集位数和 .NET Core 共享框架;列出服务器上那份环境配置缺的节、键和连接串、exclude 路径下不会发的新文件,以及包里那份和上次发布时不一样的被排除文件。
  • 环境配置:aca 把由构建决定的部分合进服务器上那份;配了 overwriteConfig 的随包整份发,ASP.NET Core 的 web.config 默认整份发。

回退和查看

  • aca rollback <站点> <发布 ID> 连同之后的发布一起回退;--check 列出每台服务器上的备份和占用空间。
  • aca status 不给目标时,列出每个站点和服务在每台服务器上的状态、最新文件时间和最后一条发布记录。
  • aca certs 显示剩余天数,握手不上的和快到期的排在最前。

修复

  • exclude 和 aca diff 的路径写成 conf 这类名字时不再失效。
npm install -g @ninesols/aca-cli

v0.1.0

Choose a tag to compare

@YoungsunLi YoungsunLi released this 20 Sep 12:37

通过阿里云云助手在 Windows ECS 上执行 PowerShell、发布和回退 IIS 站点与 Windows 服务、检查和更换 SSL 证书。

npm install -g @ninesols/aca-cli