返回博客

39 案例(中):从能跑到上线——服务器、Docker、Nginx、SSL 全走一遍

39 案例(中):从能跑到上线——服务器、Docker、Nginx、SSL 全走一遍

导语:38 篇本地跑通 = 完成 70%。这篇把剩下 30% 走完——七步上线,每步都是你 25-27 篇学过的动作,这次串成一条完整的流水线。

图片工具站在本地能跑了(38 篇)。现在上线——七步,每一步你都做过,这篇把它们串起来,并标清楚"哪些是做的、哪些是等的"。

一、七步上线总表

# 步骤 AI 做什么 你做什么 要等多久 回链
① 买服务器 — 选配置、下单 即时 07
② 域名 + 备案 — 注册域名、提交备案 数周(最长等待) 08
③ Docker 打包 写 Dockerfile 看懂、构建 即时 18
④ compose 部署 写 compose 启动、验证 即时 25
⑤ 配 Nginx 写配置(含上传大小) 测试、reload 即时 17
⑥ SSL 证书 给命令 执行、验证 分钟级 09
⑦ 配 CDN(可选) 给步骤 流量大了再配 分钟级 12

经验:只有②备案是"等"的,其他全是"做"的——所以备案第一天就去办,做①②③④⑤⑥⑦的时候,备案刚好下来。

二、逐块拆解

① 买云服务器(07 篇)

图片工具站不吃配置,入门款就够(07 篇:别为未来买单)。系统选 Ubuntu(14 篇熟)。

② 域名 + ICP 备案(08 篇)——最长的等待

  • 域名:几十元/年(13 篇成本)。
  • 备案:提前规划,周期以管局为准(数周到月级)——今天就去提交。

经验:备案没下来时,先用 IP:端口 联调(25 篇),别干等——备案和开发并行。

③ Docker 打包(18/25 篇)

让 AI 基于项目写 Dockerfile(38 篇的项目结构):

"图片工具站是 FastAPI + Pillow,依赖在 requirements.txt。帮我写 Dockerfile:装依赖、暴露 8000 端口、启动命令 uvicorn。"

④ docker-compose 部署(25 篇)

docker compose up -d --build

注意:OSS 的 AccessKey 通过环境变量传进 compose(21/32 篇:绝不写进代码/文件)。

⑤ 配 Nginx(17/26 篇)——注意上传大小限制

三行配置(17 篇):listen 80 + server_name 你的域名 + proxy_pass http://127.0.0.1:8000,然后 nginx -t + reload。

但图片站有个必踩的坑:Nginx 默认只允许上传 1MB(client_max_body_size 默认 1m)——用户传 2MB 的图,Nginx 直接返回 413 Request Entity Too Large,请求根本到不了你的应用。必须在配置里放开:

server {
    listen 80;
    server_name 你的域名.com;
    client_max_body_size 12m;    # 放开上传限制,和 38 篇的 10MB 上限对齐
    location / { proxy_pass http://127.0.0.1:8000; }
}

经验:"本地能传、上线不能传"十有八九是 Nginx 413——上线配置检查清单里永远带上 client_max_body_size。

⑥ SSL 证书(09/26 篇)

sudo certbot --nginx -d 你的域名.com

一行命令,自动续期(09 篇)——小锁图标上线。

⑦ 配 CDN(12 篇)——可选,流量大了再上

别一上线就配 CDN(12 篇自己的判断标准):静态资源多 + 用户分散 + 有流量,三个条件满足了才值得。图片工具站上线初期没流量,CDN 纯属花钱。

什么时候上:观察一段时间,访问量起来了,再把 OSS 的图片域名接 CDN(12 篇省钱三招:压缩 + CDN + 清理)。

三、时间线:哪些"做"、哪些"等"

阶段 动作 性质
第 1 天 提交域名备案 等(数周)
第 1 周 买服务器 + 本地项目 Docker 化 + 联调 做
备案下来 compose 部署 + Nginx + SSL 做
上线后 配 CDN + 观察访问量 做

经验:"备案等待"是个人项目唯一的硬等待——把它变成并行时间:等待期间把部署、SSL、CDN 全部练熟。

四、避坑清单

  • 备案别拖:数周周期是硬成本——本地一跑通就去提交(35/37 篇同款)。
  • OSS 密钥进环境变量:compose 里传,别写进 Dockerfile/代码(21/32 篇双红线)。
  • Nginx 上传限制必改:默认 1MB,图片站必报 413——配置里加 client_max_body_size 12m(本篇⑤)。
  • 生产同样限上传:本地限了 10MB,生产也得限(38 篇)——不然被传爆。
  • Pillow 限像素:别只限文件大小,还要限图片尺寸(38 篇)——超大图解压直接吃光服务器内存。
  • CDN 流量大了再上:没流量时配 CDN 是花钱(12 篇);流量起来后再配,缓存更新记得刷新(12 篇三坑)。

总结

  • 七步上线:买服务器(07)→ 域名+备案(08,最长的等待,第一天就办)→ Docker 打包(18)→ compose 部署(25)→ Nginx(17,记得放开上传限制)→ SSL(09)→ CDN(12,可选,流量大了再配)。
  • 只有备案是"等"的,其余全是"做"的——备案和开发并行,别干等。
  • 每步都是旧知识:25-27 篇的部署流水线,这次只是加了"图片站"这个业务。
  • 避坑四条:备案提前、密钥进环境变量、Nginx 413 上传限制、生产同样限上传、Pillow 限像素、CDN 流量大了再上。

10 分钟小任务:打开你 26 篇的待办应用,对照七步总表,在纸上标出你已经走过的步骤(①-⑥你全走过,就差⑦CDN)——你会发现:图片站上线 = 待办应用上线 + 一个 CDN。下一篇,让它出现在更多人面前:把工具站做成小程序。

下一篇:案例(下):从 Web 到多端——把工具站做成小程序。