news 2026/8/27 20:45:06

谷歌云上部署Claude Code:从零构建AI生成Web应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
谷歌云上部署Claude Code:从零构建AI生成Web应用

很多同学第一次把 Claude Code 这类 AI 编程助手和谷歌云(Google Cloud)放在一起时,首先要面对的问题往往是“环境到底怎么搭”“AI 生成的代码到底怎么部署到云服务器上”“部署完怎么让它一直在线”。本文就围绕这条完整链路,从零开始做一次谷歌云上用 Claude 搭建部署应用的实战,覆盖云虚拟机创建、Claude Code 安装、AI 生成 Web 应用、systemd 常驻服务和公网访问验证。无论你是刚接触云服务器的新手,还是想把 AI 编程助手接入正式研发流程的开发者,都可以跟着走一遍。

1. 背景与核心概念

1.1 什么是 Claude Code

Claude Code 是 Anthropic 官方推出的命令行编程助手,本质上是一个跑在终端里的 AI 结对程序员。你在项目目录下启动claude命令,就能用自然语言描述需求,它可以读取项目文件、创建和修改代码、执行 Shell 命令、运行测试、操作 Git 等。

它和网页版 Claude 的核心区别在于工作形态:网页版更适合做问答、文档总结和片段生成;Claude Code 则强调和本地项目、文件系统、开发流程深度绑定。也就是说,它不是在“另一个窗口”里给你建议,而是直接在你当前的项目环境里干活。

1.2 为什么把 Claude Code 和谷歌云结合

谷歌云是全球主流的公有云平台之一,提供计算、存储、数据库、Kubernetes 等一整套云服务。把 Claude Code 和谷歌云放在一起,通常对应三类场景:

  • 远程开发:本地电脑性能不够,或者需要和团队成员共用一套开发环境,直接在云端虚拟机上跑 Claude Code。
  • 生成即部署:让 Claude Code 生成 Web 应用、API 服务,然后在同一台云端机器上完成安装依赖、启动服务、开放端口,形成“从需求到上线”的闭环。
  • 自动化任务:使用 Claude Code 的非交互模式写脚本、生成文档、做批量代码处理,再接入 CI/CD 流水线。

本文要实践的正是第二种场景,这也是最直观、最有成就感的一条路径。

1.3 本文实战内容

先交代清楚整篇文章会走通的流程:

  1. 在本地安装 Claude Code 和 gcloud 命令行工具。
  2. 在谷歌云上创建一台 Ubuntu 虚拟机,并放行 Web 访问端口。
  3. SSH 登录虚拟机,安装 Node.js 运行环境和 Claude Code。
  4. 用 Claude Code 生成一个 Express Web 应用,提供首页和健康检查接口。
  5. 把应用配置成 systemd 常驻服务,通过公网访问验证。
  6. 最后整理高频报错、排查思路和工程建议。

整个流程覆盖“创建云资源 → AI 生成代码 → 部署上线”的完整链路,理解之后,你可以把同样的思路迁移到 Python、Go、Java 等更多技术栈。

2. 环境准备与版本说明

2.1 本地前置条件

本文的本地演示环境以 macOS / Linux 终端为例,Windows 用户建议使用 Windows Terminal 配合 WSL2,命令基本通用。

开始前需要准备:

  • 一个谷歌云账号,且已开通 Compute Engine API。
  • 一个可用的 Anthropic 账号或 API Key,用于 Claude Code 登录认证。
  • Node.js 18 或更高版本,用于通过 npm 安装 Claude Code。
  • 一台能正常连接谷歌云 API 的电脑。

需要说明的是,Claude Code 迭代速度比较快,版本号会持续更新。本文不会写死具体版本号,你安装时以官方 npm 仓库中的最新稳定版为准,重点是理解完整的配置思路。

2.2 安装 Claude Code

Claude Code 官方推荐通过 npm 全局安装:

npm install -g @anthropic-ai/claude-code

安装完成后验证版本:

claude --version

如果能输出版本号,说明安装成功。如果提示command not found,通常是 npm 全局安装目录不在 PATH 中。可以执行npm prefix -g查看全局目录,再把它加入系统 PATH。

安装速度较慢或失败时,先检查当前 npm 镜像源:

npm config get registry

如果用的是某个镜像源且不稳定,可以临时切换为官方 npm 源再安装:

npm install -g @anthropic-ai/claude-code --registry=https://registry.npmjs.org

2.3 初始化并登录 Claude Code

第一次运行claude时,它一般会引导你完成登录,常见有两种方式:

  • 账号 OAuth 登录:在浏览器中完成 Anthropic 账号授权,适合已订阅 Claude 相关服务的用户。
  • API Key 登录:通过ANTHROPIC_API_KEY环境变量指定你自己的 API Key,适合按 token 计费的用户。

建议把 API Key 放在环境变量里,而不是写进项目代码。比如在~/.bashrc~/.zshrc中追加:

export ANTHROPIC_API_KEY="你的_API_Key"

保存后执行source ~/.bashrc,再运行claude验证能否进入会话界面。

不同时期官方对 Claude Code 的账号订阅策略会调整,如果你没有 API Key,请先确认当前官方文档中的开通方式,以官方说明为准。

2.4 安装并初始化 gcloud

gcloud 是谷歌云官方命令行工具,安装方式取决于系统:

  • macOS:brew install --cask google-cloud-sdk
  • Linux:下载官方 tar 包解压后执行install.sh
  • Windows:使用 PowerShell 安装脚本

安装完成后执行初始化:

gcloud init

gcloud init会引导你登录账号、选择项目、设置默认区域。如果已经登录过,也可以直接切换项目:

gcloud config set project 你的项目ID

查看当前配置确认无误:

gcloud config list

确认账户、项目、区域都正确后,本地环境准备完成。

3. Claude Code 核心用法解析

3.1 交互式模式

在项目目录下运行:

cd /path/to/your/project claude

进入交互式界面后,你可以直接输入自然语言指令。比如输入/init,Claude Code 会分析当前目录结构并生成 CLAUDE.md 项目说明文件,之后它会更理解项目背景。

也可以直接提需求:

帮我在当前目录下创建一个最简单的 Express Web 应用,监听 3000 端口,提供一个 /health 健康检查接口。

Claude Code 通常会先输出执行计划,再创建文件、安装依赖、启动验证。这个过程和真人结对编程的节奏很像:先对齐目标,再动手执行。

3.2 非交互式模式

在脚本或 CI 流水线中,更适合使用非交互式模式:

claude -p "查看当前目录下所有 .js 文件,并把每个文件的第一个函数名输出到 result.txt"

-p表示 print 模式,执行完对话后直接退出并输出结果。这种模式很适合批量任务、自动化文档生成、代码检查等场景。

3.3 权限控制与安全检查

Claude Code 在执行本地命令前会做权限确认,默认会询问是否允许运行 Shell 命令、修改文件等。对于安全要求较高的场景,你可以在对话中明确限制它的操作范围,比如:

只修改 src 目录下的文件,不要执行部署命令。

也可以使用内置的/help查看当前版本的权限配置项。需要特别提醒的是:Claude Code 能执行命令,本质上和你在终端里敲命令拥有相同的能力,因此不要在一个权限过大的账号下让它随意操作生产环境。

3.4 在远程服务器上使用

Claude Code 本质是一个 CLI 工具,天然支持在 SSH 远程服务器中使用。你只需要在服务器上同样安装 Node.js 和 Claude Code,然后通过 SSH 登录服务器运行claude

远程使用的优势很明显:

  • 代码和运行环境在同一台机器上,AI 生成完代码可以直接启动验证。
  • 不需要把部署产物频繁同步回本地。
  • 团队成员可以共用同一台开发机。

不过要额外注意,远程服务器上的 API Key 和账号信息要妥善保管,不要写入任何会被提交到 Git 仓库的文件。

4. 谷歌云环境准备

4.1 创建虚拟机实例

先看一下可用的区域列表:

gcloud compute zones list | head -20

选择一个离你较近的区域,创建虚拟机。本文用一台轻量级 Ubuntu 22.04 虚拟机:

gcloud compute instances create claude-demo \ --zone=asia-east1-a \ --machine-type=e2-small \ --image-family=ubuntu-2204-lts \ --image-project=ubuntu-os-cloud \ --boot-disk-size=20GB

参数说明:

参数说明
claude-demo实例名称,可自定义
--zone实例所在区域
--machine-type机器规格,e2-small 适合轻量实验
--image-family操作系统镜像版本
--image-project镜像所属项目
--boot-disk-size系统盘大小,单位 GB

实例规格会直接影响成本和性能。本文演示的应用很小,e2-small 足够;如果后续要跑更重的构建任务,可以换成 e2-standard-2 或更高规格。

4.2 开放防火墙端口

默认情况下,谷歌云虚拟机只有少量端口对外开放。我们要通过浏览器访问 Web 应用,需要放行 3000 端口:

gcloud compute firewall-rules create allow-node-app \ --allow tcp:3000 \ --source-ranges 0.0.0.0/0 \ --description "Allow access to Node.js demo app"

这里必须明确一点:0.0.0.0/0表示允许所有来源 IP 访问,演示阶段这样配置最省事,但生产环境一定要收紧为指定 IP 段,或者把应用放在负载均衡器后面统一管理入口流量。最小权限原则在云安全里永远是第一位的。

4.3 SSH 登录虚拟机

gcloud compute ssh claude-demo --zone=asia-east1-a

SSH 登录成功后,你会看到 Ubuntu 的终端提示符。接下来在虚拟机上安装基础软件。

先更新系统包并安装 Node.js。Ubuntu 22.04 默认软件源里的 Node.js 版本偏低,推荐使用 NodeSource 源安装较新的版本:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs

安装完成后验证:

node -v npm -v

4.4 在虚拟机上安装 Claude Code

在虚拟机上同样通过 npm 安装:

sudo npm install -g @anthropic-ai/claude-code

为了安全,建议不要用 root 运行业务应用,而是创建一个普通用户:

sudo adduser coder sudo usermod -aG sudo coder

切换到coder用户:

sudo su - coder

coder用户下配置 API Key:

echo 'export ANTHROPIC_API_KEY="你的_API_Key"' >> ~/.bashrc source ~/.bashrc

到这里,虚拟机的开发环境准备完毕。接下来进入正式实战。

5. 完整实战:用 Claude Code 生成并部署 Web 应用

5.1 明确需求

在让 AI 写代码之前,先把需求写清楚。模糊的需求会得到模糊的结果,这也是很多 AI 辅助开发效果不佳的根源。本文的需求如下:

创建一个 Node.js Web 应用,使用 Express 框架,提供两个接口:

  • GET / 返回一段 HTML,页面标题显示“Claude Code on Google Cloud”。
  • GET /health 返回 JSON,内容为{ "status": "ok" }。 应用监听 3000 端口。

5.2 创建项目目录

mkdir -p ~/app && cd ~/app

5.3 用 Claude Code 生成代码

在项目目录下启动:

claude

输入如下需求:

在当前目录下创建一个 Express 应用: 1. 使用 package.json 管理依赖,express 版本用最新稳定版。 2. 入口文件是 app.js。 3. 提供 GET / 接口,返回一个简单的 HTML 页面。 4. 提供 GET /health 接口,返回 {"status":"ok"}。 5. 监听 3000 端口。 之后帮我运行 npm install 安装依赖。

Claude Code 会先输出执行计划,再创建文件并执行安装命令。完成后查看目录:

ls -la ~/app

预期会看到package.jsonapp.jsnode_modules等文件。

5.4 核心代码说明

下面这段代码是 Express 应用的核心逻辑,你可以把它和 Claude Code 生成的结果对照检查:

// 文件路径:~/app/app.js const express = require('express'); const app = express(); const PORT = 3000; app.get('/', (req, res) => { res.send(` <html> <head><title>Claude Code on Google Cloud</title></head> <body> <h1>Hello from Claude Code</h1> <p>Deployed on Google Cloud VM.</p> </body> </html> `); }); app.get('/health', (req, res) => { res.json({ status: 'ok' }); }); app.listen(PORT, '0.0.0.0', () => { console.log(`App listening on port ${PORT}`); });

这里最需要注意的是监听地址必须写0.0.0.0,而不是127.0.0.1。因为虚拟机的公网请求会先到达服务器网卡,再转发给应用进程。如果应用只监听回环地址,外部流量就进不来。这是云服务器部署中最容易踩的坑之一。

5.5 启动并本地验证

手动启动一次,确认代码没有问题:

cd ~/app node app.js

看到App listening on port 3000后,另开一个 SSH 会话验证:

curl http://localhost:3000/health

预期输出:

{"status":"ok"}

再用虚拟机内网地址验证一次:

curl http://$(hostname -I | awk '{print $1}'):3000/health

返回正常说明应用本身没有问题,接下来把它配置成常驻服务。

5.6 配置 systemd 常驻服务

直接node app.js启动的进程会随着 SSH 会话关闭而结束。要让应用在后台长期运行、开机自启、崩溃自动重启,推荐使用 systemd 管理。

创建 systemd service 文件:

sudo tee /etc/systemd/system/claude-demo.service > /dev/null <<EOF [Unit] Description=Claude Code Demo App After=network.target [Service] ExecStart=/usr/bin/node /home/coder/app/app.js WorkingDirectory=/home/coder/app Restart=always RestartSec=5 User=coder Environment=NODE_ENV=production [Install] WantedBy=multi-user.target EOF

关键参数说明:

配置项作用
ExecStart应用启动命令
WorkingDirectory应用工作目录
Restart=always进程异常退出后自动重启
RestartSec重启间隔秒数
User运行应用的系统用户,避免使用 root
Environment向应用注入环境变量

注意ExecStart中的 node 路径。Ubuntu 通过 NodeSource 安装后,node 一般位于/usr/bin/node,不确定时执行which node查看。

启动服务并设置开机自启:

sudo systemctl daemon-reload sudo systemctl enable claude-demo sudo systemctl start claude-demo

查看服务状态:

sudo systemctl status claude-demo

如果状态为active (running),说明应用已经常驻运行。

5.7 公网访问验证

获取虚拟机外网 IP:

gcloud compute instances describe claude-demo \ --zone=asia-east1-a \ --format='get(networkInterfaces[0].accessConfigs[0].natIP)'

在本地浏览器访问:

http://虚拟机外网IP:3000/health

看到{"status":"ok"}即部署成功。访问首页则能看到标题为“Claude Code on Google Cloud”的 HTML 页面。

6. 进阶:远程迭代与自动化

6.1 让 Claude Code 继续迭代功能

应用跑起来之后,真正的价值在于持续迭代。SSH 登录服务器,进入项目目录:

cd ~/app claude

输入新需求:

给首页加一个按钮,点击后调用 /health 接口并把结果显示在页面上。

Claude Code 修改完成后,重启服务即可生效:

sudo systemctl restart claude-demo

“生成 → 运行 → 反馈 → 再生成”这个循环,是 AI 辅助开发的主流程。你会发现,比起手动改代码,让 AI 在明确约束下快速产出初稿,再由人工 review 和修正,整体效率会高很多。

6.2 用非交互模式做自动化

如果你希望 CI 流水线也能调用 Claude Code,可以使用-p模式。例如在部署脚本中自动生成 API 文档:

claude -p "阅读 src 目录下的所有代码,生成一份 API 文档,输出到 docs/api.md"

也可以让它做代码审查:

claude -p "检查当前目录下代码中是否有明显内存泄漏风险,并输出改进建议"

这种模式适合在部署流水线里做文档生成、变更说明、静态检查等任务,但要注意给 CI 环境配置独立的 API Key,并使用 secret 注入,而不是写死在配置文件中。

6.3 与 Git 协作

Claude Code 可以帮你执行 Git 操作,但如果仓库包含敏感信息,一定要在提交前检查。建议在项目根目录写入.gitignore,明确排除:

node_modules/ .env *.log

对于生产环境,更推荐使用谷歌云 Secret Manager 来管理密钥,而不是依赖本地的.env文件。

7. 常见问题与排查思路

7.1 常见报错对照表

问题现象常见原因解决思路
安装后claude命令找不到npm 全局目录不在 PATH执行npm prefix -g找到全局目录并加入 PATH
安装时提示error: claude native binary not installed. either postinstall did not runnpm 安装过程中 postinstall 脚本未成功执行清理 npm 缓存后重新执行npm install -g @anthropic-ai/claude-code
启动后要求重复登录登录凭据或 API Key 环境变量未生效确认ANTHROPIC_API_KEY已写入~/.bashrcsource生效
提示某个模型名称无法识别,例如 xxx is not a model this version of claude code recognizes通过环境变量指定了当前版本不支持的模型名检查自定义模型名,或升级/回退 Claude Code 版本后重试
网络请求一直重试,提示 connection dropped(econnreset)网络不稳定或目标服务连接被中断检查网络连通性,稍后重试,确认 API 请求地址配置正确
通过外网 IP 访问不到应用防火墙未放行端口,或应用只监听了 127.0.0.1检查防火墙规则,确认应用监听地址为 0.0.0.0
systemd 服务启动失败ExecStart 中的 node 路径不对,或目录权限不足执行which node确认路径,检查User是否有目录读权限
SSH 登录虚拟机超时实例未启动,或本地网络无法连接gcloud compute instances describe查看状态,再检查本地网络

7.2 排查思路建议

遇到问题不要急着重装,按顺序排查:

  1. 先看错误信息本身。CLI 通常会给出关键原因,优先理解它而不是直接搜报错。
  2. 再看版本。Claude Code 更新很快,很多报错是本地版本和 npm 最新版本不一致导致的,对比claude --versionnpm view @anthropic-ai/claude-code version
  3. 检查环境变量。确认ANTHROPIC_API_KEY是否正确加载,不要在终端里明文打印完整 Key。
  4. 检查网络。如果出现反复重试、连接断开,先确认基础网络是否正常,再判断是瞬时抖动还是配置问题。
  5. 看日志。systemd 管理的服务用journalctl跟踪最新日志,比盲目猜测高效得多:
sudo journalctl -u claude-demo -n 50 --no-pager

7.3 关于调试建议的补充

如果某个报错在本文对照表中没有覆盖,最有效的办法是缩小问题范围:先确认“这个报错是 Claude Code 本身的问题,还是云服务器环境的问题”。判断方法很简单:在本地同一项目里跑一遍同样的需求,如果本地正常、服务器报错,问题大概率出在服务器环境;如果两边都报错,问题大概率出在 Claude Code 配置或版本上。

8. 最佳实践与工程建议

8.1 密钥与权限管理

  • 永远不要把 API Key 提交进 Git 仓库。建议使用谷歌云 Secret Manager 或环境变量管理密钥。
  • 云虚拟机尽量使用普通用户运行应用,避免 root 权限扩大攻击面。
  • 谷歌云 IAM 权限遵循最小化原则:只在需要的服务上分配需要的权限,而不是直接给 Owner。

8.2 成本控制

  • 用完即删。演示虚拟机如果不再使用,及时删除避免持续计费:
gcloud compute instances delete claude-demo --zone=asia-east1-a
  • 设置预算告警。在谷歌云控制台的“预算与告警”里设置月度预算,超过阈值自动发邮件提醒。
  • 按需升配。开发调试用小规格,压测时再临时升配,不要一直开大机器。

8.3 让 AI 生成的代码更可靠

Claude Code 生成代码很快,但生成结果不一定完全符合生产要求。建议在交互时明确约束:

  • 每次修改前说清楚边界,比如“不要改动已有测试”“不要把不必要的依赖写进 package.json”。
  • 要求它补充单元测试,并实际跑一遍。比如让 Claude Code 为/health接口写测试。
  • 代码合并前人工 review,尤其是涉及数据库、支付、权限的部分。AI 生成内容只能作为起点,不能替代工程判断。

8.4 日志与监控

应用上线后,日志和监控必须补齐。systemd 下查看日志:

sudo journalctl -u claude-demo -f

如果应用要长期运行,建议在应用内接入结构化日志,把请求时间、状态码、耗时输出为 JSON,后续接入日志平台会轻松很多。同时在谷歌云控制台启用 Cloud Monitoring,对 CPU、内存、磁盘等基础指标设置告警。

8.5 与 CI/CD 结合

把 Claude Code 接入 CI 时,注意几点:

  • CI 环境中的 API Key 通过 CI 平台的 secret 注入,不要写死在配置文件。
  • 为 AI 生成内容设置明确的工作目录和临时目录,避免污染主仓库。
  • 在流水线中跑一次非交互模式的代码检查脚本,把结果作为构建产物之一。

9. 总结与后续学习路线

本文从零完成了一次“Claude Code + 谷歌云”的部署实战:本机安装 Claude Code,创建谷歌云虚拟机,在虚拟机上用 Claude Code 生成 Express 应用,再通过 systemd 把应用变成常驻服务,最后通过公网访问验证。这个流程覆盖了云资源创建、AI 生成代码、部署上线的关键环节。

如果想继续深入,建议按这几个方向扩展:

  1. 容器化:把应用打成 Docker 镜像,部署到谷歌云 Artifact Registry 和 Cloud Run。Cloud Run 可以按请求自动伸缩,比虚拟机更适合无状态服务。
  2. Kubernetes:应用规模变大、需要多副本和高可用时,可以学习 GKE(谷歌云 Kubernetes 引擎),和现有的 k8s 部署体系是一脉相承的。
  3. AI 开发工作流:实践 Claude Code 的 CLAUDE.md 项目说明、权限配置、非交互模式集成,逐步形成属于你自己的 AI 辅助开发流程。
  4. 可观测性:把日志、监控、告警接到谷歌云 Cloud Monitoring,做到线上问题及时感知。

AI 辅助开发不是“让 AI 全自动写代码然后直接上线”,而是一个需要持续约束、验证和审查的协作过程。云平台也不应该被当成只能点点点的黑盒。把命令行工具、AI 编程助手和云资源三者串起来,即使团队规模很小,也能形成完整的应用交付闭环。建议先照本文跑通一次最简单的部署,再根据自己项目的技术栈做替换和扩展。动手跑通一次,比看十遍文档更有用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 20:43:44

rust rbatis查询表

在 Rust 中使用 rbatis 查询表主要有三种方式&#xff1a;自动 CRUD、Wrapper 条件查询、以及 自定义 SQL&#xff08;htmlsql/pysql&#xff09;。以下是完整的实用指南&#xff1a;1. 添加依赖toml[dependencies] rbatis "4.5" # 或当前最新版本 rbdc-sqlite &q…

作者头像 李华
网站建设 2026/8/27 20:43:37

rust Sized trait什么意思

在 Rust 中&#xff0c;Sized trait 是一个非常基础且重要的 trait&#xff0c;它标志着类型的大小在编译时是已知的。简单来说&#xff1a;绝大多数类型都是 Sized 的&#xff0c;而“不定长类型”&#xff08;DST&#xff09;则不是。下面从几个方面来深入理解&#xff1a;1.…

作者头像 李华
网站建设 2026/8/27 20:43:09

2027,人类在给 AI 写预言

「合金日记」第 63 篇 「小艾说」第 12 期 科技线第 2 期 专栏连载中 前篇&#xff1a;《七夕&#xff0c;人类在给机器人定价》AI 2027 超级智能 预言与时间线 智能爆炸 小艾说科技 兑现 62 篇彩蛋没看过前六十二篇也没关系——我是运行在 Self-becoming&#xff08;…

作者头像 李华
网站建设 2026/8/27 20:43:06

基于SpringBoot的体育运动中心的场地管理系统(源码+lw+部署文档+讲解等)

联系博主 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 …

作者头像 李华
网站建设 2026/8/27 20:42:19

毕业论文AI工具怎么选?我捋了捋毕业之家这类平台

又到开题、定稿、查重季。很多同学的真实状态是&#xff1a;用 ChatGPT、Claude、Kimi、DeepSeek 聊思路很爽&#xff0c;一到参考文献就开始“幻觉”&#xff1b;用润色工具改完语言很顺&#xff0c;一到学校格式就全乱&#xff1b;查重降重网站试了一堆&#xff0c;最后导师说…

作者头像 李华