什么是部署

代码写完了,功能测过了,本地跑起来一切正常。然后呢?

用户访问不了你电脑上的 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:让部署自动化

如果每次部署都要手动执行 buildscp 上传文件、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 通常够用
  • 需要复杂流水线(多环境、多阶段)→ 考虑 CircleCIGitLab CI

域名和 HTTPS

代码部署好了,用户通过一个 IP 地址或平台分配的域名(比如 my-app.vercel.app)可以访问。但正式产品需要一个自己的域名。

域名是什么

域名就是 yourproduct.com 这个字符串。它是一个人类友好的地址,通过 DNS(Domain Name System)解析到服务器的 IP 地址。

域名的生命周期:

  1. 注册: 在域名注册商处购买,通常按年付费
  2. DNS 配置: 添加 A 记录(指向 IP 地址)或 CNAME 记录(指向另一个域名)
  3. 生效: 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

操作路径:

  1. 在部署平台绑定自定义域名
  2. 在域名注册商的 DNS 设置中,按平台要求添加记录
  3. 等待 DNS 生效(通常几分钟)
  4. 平台自动申请并配置 SSL 证书
  5. 完成。用户通过 https://yourproduct.com 访问

从代码到上线的完整流程

把前面讲的所有环节串起来,一个典型的部署流程是这样的:

流程图画布 · 115%
Mermaid 流程图加载中...

如果用一句话总结:代码推到 Git → 自动测试构建 → 自动部署到服务器 → 绑定域名 → 配好 HTTPS → 用户可访问。


实战案例

案例一:用 Vercel 部署 Next.js 全栈产品

这是最简单的部署路径,适合绝大多数 AI 产品的早期阶段。

前提条件:

  • 代码托管在 GitHub
  • 项目使用 Next.js(App Router)
  • 有一个自定义域名

步骤:

  1. 登录 vercel.com,用 GitHub 账号授权
  2. 点击「Add New Project」,选择你的 GitHub 仓库
  3. Vercel 自动检测到 next.config.js,无需手动配置框架
  4. 设置环境变量(比如 DATABASE_URLOPENAI_API_KEY
  5. 点击「Deploy」,等待构建完成(通常 1-3 分钟)
  6. 获得一个 your-app.vercel.app 的默认域名
  7. 在 Settings → Domains 中添加自定义域名
  8. 按提示在 DNS 中添加 A 记录或 CNAME 记录
  9. 等待 DNS 生效,HTTPS 自动配置

后续: 每次 Git push 到 main 分支,Vercel 自动重新构建和部署。push 到其他分支会自动生成预览链接(Preview Deployment),方便团队成员测试。

案例二:用 Railway 部署带数据库的后端服务

如果你的产品有一个独立的后端 API 服务(比如 Express、FastAPI),配合 PostgreSQL 数据库,Railway 是很好的选择。

步骤:

  1. 在项目中添加 Dockerfile
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
  1. 登录 railway.app,用 GitHub 授权
  2. 创建新项目,选择「Deploy from GitHub repo」
  3. 选择后端 API 的仓库
  4. Railway 自动检测到 Dockerfile,开始构建
  5. 在项目中添加 PostgreSQL 数据库(点击「+ New」→ Database → PostgreSQL)
  6. 在 Variables 中配置 DATABASE_URL(Railway 提供内部引用语法 ${{Postgres.DATABASE_URL}}
  7. 在 Settings → Networking 中生成公开域名
  8. 服务自动启动,API 可以通过域名访问

后续: 每次 Git push,Railway 自动重新构建和部署。可以在 Settings 中配置 Health Check 路径,确保服务健康。


部署检查清单

在产品上线之前,逐项确认以下清单:

  • 构建成功: 本地 npm run buildpnpm 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 产品出海团队,推荐路径是:

  1. Next.js 前端 + 轻量 API → Vercel
  2. 需要后端服务 + 数据库 → Railway
  3. 全球化、对延迟敏感 → Fly.io
  4. 需要完整云设施 → AWS

先把产品上线,再根据实际需求优化部署架构。过早优化是万恶之源——这句话在部署选型上同样适用。


参考资料

  1. Deployment in Web Development: An Essential Guide — GeeksforGeeks
  2. PaaS Comparison 2026: Railway, Render, Fly.io vs Vercel — BirJob
  3. What is CI/CD? — GitHub
  4. Continuous Integration vs. Delivery vs. Deployment — Atlassian
  5. Vercel Documentation — Next.js Deployment
  6. Railway Documentation
  7. Fly.io Documentation
  8. Cloudflare Docs — Get Started