什么是部署
代码写完了,功能测过了,本地跑起来一切正常。然后呢?
用户访问不了你电脑上的 localhost:3000。要让全世界的人打开浏览器就能用到你的产品,需要把代码放到一台联网的服务器上运行。这个过程叫做「部署」(Deploy)。
对于 AI 产品出海来说,部署是技术链路的最后一环——也是最容易让新手感到困惑的一环。你会遇到一堆陌生的名词:Docker、Serverless、CI/CD、域名、HTTPS……每一个单独拿出来都能写一本书。但作为产品创始人或技术负责人,你不需要精通每一项,只需要理解它们是什么、怎么配合、怎么选。
这篇文章从「代码已经写好」这个时间点出发,一步步把部署这件事讲清楚。
部署到底在做什么
先建立一个最基本的认知。
你在本地开发时,代码跑在自己的电脑上。这台电脑既是开发者机器,也是运行服务的机器。但你的电脑不会 24 小时开着、连着一根稳定的网线、拥有一个全球可访问的地址。
部署,就是把你写的代码(或者代码编译后的产物)放到一台专门的、一直在线的、有公网 IP 的机器上,让它持续运行、等待用户访问。
这台机器可以是物理服务器,也可以是云服务器,还可以是一种抽象的运行环境——后面会详细展开。
用一个比喻来说:你写了一本书(代码),本地开发就像在自己书桌上校对,部署就是把印刷好的书放到书店货架上,让读者能买到。书店就是部署平台,书上架的过程就是部署。
三种主要部署方式
Web 产品的部署方式,经过二十多年的演进,目前主流有三类。它们不是替代关系,而是适用场景不同。
静态部署(Static Deployment)
如果你的产品是一个纯前端页面——比如用 Next.js 的 Static Export 生成的 HTML/CSS/JS 文件,或者用 Vite、Create React App 构建的 SPA——那最简单的方式就是静态部署。
静态部署做的事情很直接:把构建产物(一堆 .html、.css、.js、图片文件)上传到服务器或内容分发网络(CDN),用户访问时直接返回这些文件。不需要服务器端运行任何逻辑。
特点:
- 速度极快,文件直接从 CDN 边缘节点返回
- 成本极低,很多平台提供免费额度
- 不支持服务端逻辑(API 路由、数据库查询)
- 适合:营销页、文档站、纯前端 SPA
常见工具: Vercel(静态模式)、Netlify、Cloudflare Pages、GitHub Pages
容器部署(Container Deployment)
当你的产品有后端逻辑——比如 Next.js 的 API Routes、一个 Express 服务、一个 Python FastAPI 应用——你就需要一个能持续运行代码的环境。容器(Container)是目前最主流的解决方案。
容器的核心工具叫 Docker。它把你的应用和所有依赖(Node.js 版本、系统库、配置文件)打包成一个镜像(Image),这个镜像可以在任何安装了 Docker 的机器上运行,保证环境一致性。
你可以把容器想象成一个密封的外卖盒:你做好菜(代码),装进盒子(容器),不管送到哪栋楼(服务器),打开就能吃,不用操心厨房设备齐不齐全。
特点:
- 环境一致,「在我电脑上能跑」的问题消失
- 支持任意后端逻辑、长连接、定时任务
- 需要管理服务器或容器编排(Kubernetes)
- 适合:全栈应用、API 服务、后台任务
常见工具: Docker、Railway、Fly.io、AWS ECS、Google Cloud Run
Serverless 部署
Serverless 直译是「无服务器」,但并不是说没有服务器,而是你不需要关心服务器的存在。你只需要上传代码(通常是一个函数),平台负责在用户请求到来时启动它、处理完请求后回收资源。你按实际执行次数和时长付费。
Serverless 特别适合流量波动大的场景:白天用户多,自动扩容;凌晨没人访问,缩到零、不产生费用。
特点:
- 零运维,不用管服务器
- 自动弹性伸缩,按用量付费
- 冷启动延迟(函数闲置后再启动会有几百毫秒到几秒的延迟)
- 执行时长有限制(通常单次不超过 15 分钟)
- 适合:API 接口、定时任务、事件驱动型应用
常见工具: Vercel(Functions)、AWS Lambda、Cloudflare Workers、Google Cloud Functions
三种方式对比
| 维度 | 静态部署 | 容器部署 | Serverless |
|---|---|---|---|
| 服务端逻辑 | 不支持 | 完全支持 | 支持(函数级别) |
| 运维复杂度 | 极低 | 中高 | 低 |
| 弹性伸缩 | CDN 自动 | 需手动或配置 | 自动 |
| 计费方式 | 带宽/免费 | 按时长或固定配置 | 按调用次数和时长 |
| 冷启动 | 无 | 无 | 有 |
| 典型场景 | 文档站、营销页 | 全栈应用、API | 轻量 API、事件处理 |
常见部署平台对比
理解了部署方式之后,下一个问题是:选哪个平台?
市面上有大量部署平台,定位各异。对于出海产品来说,以下五个是最值得了解的。
Vercel
Vercel 是 Next.js 的母公司,对 Next.js 应用的支持是所有平台中最好的。Git push 之后自动构建、自动部署,零配置就能跑起来。
- 适合: Next.js 前端、静态站点、轻量 API
- 不适合: 长时间运行的后端服务、WebSocket 服务
- 免费额度: 个人项目免费,Hobby 计划足够原型验证
- 价格: Pro 计划 $20/月起
Railway
Railway 定位为新一代 PaaS(Platform as a Service),支持 Docker 容器部署。你可以部署任意语言的后端服务、数据库、Worker,操作界面直观。
- 适合: 全栈应用、后端服务、数据库
- 不适合: 纯静态站点(杀鸡用牛刀)
- 免费额度: Trial 计划 $5 额度
- 价格: 按实际资源用量计费,小应用通常 $5-20/月
Fly.io
Fly.io 的特色是全球边缘部署——你的应用可以同时运行在全球几十个城市的服务器上,用户自动被路由到最近的节点,延迟极低。
- 适合: 对延迟敏感的应用、全球化部署
- 不适合: 需要集中式数据库的简单应用
- 免费额度: 2024 年取消了永久免费层,改为按用量计费
- 价格: 按资源用量计费,小规模应用 $5-15/月
AWS(Amazon Web Services)
AWS 是全球最大的云服务商,提供从计算、存储、数据库到 AI 的几百种服务。EC2(虚拟服务器)、ECS(容器服务)、Lambda(Serverless)、S3(对象存储)是最常用的产品。
- 适合: 需要完全控制基础设施的中大型项目
- 不适合: 希望零运维的小团队(复杂度高)
- 免费额度: 新用户 12 个月免费层(部分服务)
- 价格: 极其灵活,上限也极高
Cloudflare
Cloudflare 以 CDN 起家,现在提供 Pages(静态部署)、Workers(边缘 Serverless)、R2(对象存储)、D1(边缘数据库)等一整套产品。优势是全球边缘网络覆盖广、免费额度慷慨。
- 适合: 静态站点、边缘计算、需要全球加速的应用
- 不适合: 需要长时间运行后端服务的场景
- 免费额度: 非常慷慨,个人和小项目几乎免费
- 价格: Pro 计划 $20/月
平台对比表
| 平台 | 部署方式 | Next.js 支持 | 后端支持 | 免费额度 | 起步价格 | 适合阶段 |
|---|---|---|---|---|---|---|
| Vercel | 静态 + Serverless | 原生 | 有限(Functions) | Hobby 免费 | $20/月 | 原型 → 增长 |
| Railway | 容器 | 良好 | 完全 | $5 试用额度 | ~$5/月 | MVP → 增长 |
| Fly.io | 容器(边缘) | 良好 | 完全 | 按用量 | ~$5/月 | 增长 → 规模化 |
| AWS | 全部 | 需配置 | 完全 | 12 个月免费层 | 按用量 | 增长 → 企业级 |
| Cloudflare | 静态 + Serverless | 良好 | 边缘函数 | 慷慨 | $20/月 | 原型 → 增长 |
选择建议:
- 产品是 Next.js 全栈、刚起步 → Vercel
- 需要后端服务 + 数据库、希望简单 → Railway
- 全球化部署、对延迟有要求 → Fly.io
- 需要完整云基础设施、团队有运维能力 → AWS
- 静态站 + 边缘计算、成本敏感 → Cloudflare
CI/CD:让部署自动化
如果每次部署都要手动执行 build、scp 上传文件、SSH 登录服务器重启服务……很快就会出错,也很痛苦。
CI/CD 就是为了解决这个问题而生的。
什么是 CI
CI 是 Continuous Integration(持续集成)的缩写。核心思想很简单:开发者每次提交代码到 Git 仓库,自动触发一系列检查和测试。如果测试通过,说明代码没问题;如果失败,立刻通知开发者修复。
常见的 CI 工具会做这些事:
- 代码风格检查(Lint)
- TypeScript 类型检查
- 单元测试、集成测试
- 构建(Build)是否成功
什么是 CD
CD 有两层含义:
- Continuous Delivery(持续交付): 代码通过 CI 后,自动准备好可部署的产物,但需要人工点击「发布」按钮才真正上线。
- Continuous Deployment(持续部署): 代码通过 CI 后,自动部署到生产环境,完全不需要人工干预。
对于出海产品的小团队,通常建议至少做到 CI + 自动部署到预览环境(Preview Deployment),生产环境用手动触发。
常见 CI/CD 工具
| 工具 | 类型 | 特点 | 免费额度 |
|---|---|---|---|
| GitHub Actions | 内置于 GitHub | 与 GitHub 深度集成,YAML 配置,社区 Action 丰富 | 公开仓库免费,私有仓库 2000 分钟/月 |
| GitLab CI | 内置于 GitLab | 功能强大,配置灵活,适合复杂流水线 | 400 分钟/月 |
| Vercel | 部署平台内置 | 自动检测 Git push、自动构建、自动部署预览 | 包含在计划中 |
| Railway | 部署平台内置 | 自动检测 Git push、自动构建、自动部署 | 包含在计划中 |
| CircleCI | 独立 CI 平台 | 速度快,支持并行执行 | 免费 30,000 分钟/月 |
选择建议:
- 代码在 GitHub → 优先用 GitHub Actions
- 用 Vercel/Railway 部署 → 平台自带 CI/CD 通常够用
- 需要复杂流水线(多环境、多阶段)→ 考虑 CircleCI 或 GitLab CI
域名和 HTTPS
代码部署好了,用户通过一个 IP 地址或平台分配的域名(比如 my-app.vercel.app)可以访问。但正式产品需要一个自己的域名。
域名是什么
域名就是 yourproduct.com 这个字符串。它是一个人类友好的地址,通过 DNS(Domain Name System)解析到服务器的 IP 地址。
域名的生命周期:
- 注册: 在域名注册商处购买,通常按年付费
- DNS 配置: 添加 A 记录(指向 IP 地址)或 CNAME 记录(指向另一个域名)
- 生效: DNS 传播通常需要几分钟到几小时
常见域名注册商
| 注册商 | 特点 | .com 价格(年) | 适合场景 |
|---|---|---|---|
| Cloudflare Registrar | 成本价销售,无加价 | ~$9.15 | 长期使用、搭配 Cloudflare CDN |
| Namecheap | 老牌注册商,价格实惠 | ~$8.88 | 个人项目、小团队 |
| Google Domains → Squarespace | 已迁移至 Squarespace | ~$12/年 | 已在使用的用户 |
| Porkbun | 价格低,界面简洁 | ~$9.73 | 性价比优先 |
| 阿里云/腾讯云 | 国内注册商,支持备案 | ~$8-12 | 需要中国大陆访问 |
HTTPS 和 SSL 证书
HTTP 是明文传输的,数据在网络上裸奔。HTTPS 在 HTTP 基础上加了一层 SSL/TLS 加密,确保用户和服务器之间传输的数据不会被窃听或篡改。
2026 年的今天,HTTPS 已经是基本要求。浏览器会对 HTTP 站点标记「不安全」,搜索引擎也会降低排名。
好消息是,配置 HTTPS 比以前简单得多:
- Let's Encrypt: 免费的 SSL 证书颁发机构,90 天自动续期
- Vercel/Railway/Cloudflare: 部署平台自动配置 HTTPS,零配置
- Cloudflare: 即使是自己管理的服务器,也可以通过 Cloudflare 代理获得免费 HTTPS
操作路径:
- 在部署平台绑定自定义域名
- 在域名注册商的 DNS 设置中,按平台要求添加记录
- 等待 DNS 生效(通常几分钟)
- 平台自动申请并配置 SSL 证书
- 完成。用户通过
https://yourproduct.com访问
从代码到上线的完整流程
把前面讲的所有环节串起来,一个典型的部署流程是这样的:
如果用一句话总结:代码推到 Git → 自动测试构建 → 自动部署到服务器 → 绑定域名 → 配好 HTTPS → 用户可访问。
实战案例
案例一:用 Vercel 部署 Next.js 全栈产品
这是最简单的部署路径,适合绝大多数 AI 产品的早期阶段。
前提条件:
- 代码托管在 GitHub
- 项目使用 Next.js(App Router)
- 有一个自定义域名
步骤:
- 登录 vercel.com,用 GitHub 账号授权
- 点击「Add New Project」,选择你的 GitHub 仓库
- Vercel 自动检测到
next.config.js,无需手动配置框架 - 设置环境变量(比如
DATABASE_URL、OPENAI_API_KEY) - 点击「Deploy」,等待构建完成(通常 1-3 分钟)
- 获得一个
your-app.vercel.app的默认域名 - 在 Settings → Domains 中添加自定义域名
- 按提示在 DNS 中添加 A 记录或 CNAME 记录
- 等待 DNS 生效,HTTPS 自动配置
后续: 每次 Git push 到 main 分支,Vercel 自动重新构建和部署。push 到其他分支会自动生成预览链接(Preview Deployment),方便团队成员测试。
案例二:用 Railway 部署带数据库的后端服务
如果你的产品有一个独立的后端 API 服务(比如 Express、FastAPI),配合 PostgreSQL 数据库,Railway 是很好的选择。
步骤:
- 在项目中添加
Dockerfile:
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]- 登录 railway.app,用 GitHub 授权
- 创建新项目,选择「Deploy from GitHub repo」
- 选择后端 API 的仓库
- Railway 自动检测到
Dockerfile,开始构建 - 在项目中添加 PostgreSQL 数据库(点击「+ New」→ Database → PostgreSQL)
- 在 Variables 中配置
DATABASE_URL(Railway 提供内部引用语法${{Postgres.DATABASE_URL}}) - 在 Settings → Networking 中生成公开域名
- 服务自动启动,API 可以通过域名访问
后续: 每次 Git push,Railway 自动重新构建和部署。可以在 Settings 中配置 Health Check 路径,确保服务健康。
部署检查清单
在产品上线之前,逐项确认以下清单:
- 构建成功: 本地
npm run build或pnpm build无报错 - 环境变量配置: 所有必要的环境变量(API Key、数据库连接等)已在平台配置
- 数据库已就绪: 数据库服务已创建,连接信息正确,初始 migration 已执行
- 域名已绑定: 自定义域名已添加到部署平台
- DNS 已配置: A 记录或 CNAME 记录已正确指向部署平台
- HTTPS 已启用: SSL 证书已自动配置,访问
https://无警告 - CI/CD 流水线正常: Git push 后自动触发构建和部署
- 健康检查通过: 平台显示服务状态为 healthy / running
- 404 页面已配置: 访问不存在的路由返回友好的 404 页面
- API 端点可访问: 后端 API 接口可以正常返回响应
- CORS 配置正确: 前端域名已被后端允许跨域访问
- 日志可查: 可以在平台控制台查看应用运行日志
- 回滚方案: 知道如何在部署出问题时回滚到上一个版本
本章小结
部署是把代码放到服务器上让用户能访问的过程。三种主要方式是静态部署、容器部署和 Serverless,各有适用场景。Vercel、Railway、Fly.io 等平台大幅降低了部署门槛,Git push 就能自动上线。CI/CD 让部署过程自动化、可重复、可回滚。域名是产品的门牌号,HTTPS 是基本的安全要求。
对于刚起步的 AI 产品出海团队,推荐路径是:
- Next.js 前端 + 轻量 API → Vercel
- 需要后端服务 + 数据库 → Railway
- 全球化、对延迟敏感 → Fly.io
- 需要完整云设施 → AWS
先把产品上线,再根据实际需求优化部署架构。过早优化是万恶之源——这句话在部署选型上同样适用。
参考资料
- Deployment in Web Development: An Essential Guide — GeeksforGeeks
- PaaS Comparison 2026: Railway, Render, Fly.io vs Vercel — BirJob
- What is CI/CD? — GitHub
- Continuous Integration vs. Delivery vs. Deployment — Atlassian
- Vercel Documentation — Next.js Deployment
- Railway Documentation
- Fly.io Documentation
- Cloudflare Docs — Get Started