🌙 深夜 coding · 直播分享
我 Vibeeeeeeeeerrrrrr 出一个网页后,
怎么让全世界看到它?
从 file:// 到 https:// · 一节课讲清部署
山河同学livestream · 90 min · 含现场实操
agenda
今晚要讲的 5 件事
01为什么 localhost 链接发朋友打不开 · URL 入门~12min
02网页崩了别慌 · 错误码图鉴 + 找 AI 排查的姿势~10min
03部署的三种段位 · Vercel / 宝塔 / Nginx~25min
04让 AI 当你的运维副驾~8min
05🔥 现场实操:Vibe 出一个东西 + 部署上公网~30min
// part 01 · 为什么部署
"我把链接发给朋友,
他说打不开……"
你的网页住在你的电脑里。
它需要先搬到一台一直开着的电脑,
才能让全世界访问到。
这件事就叫 部署 / Deploy。
// part 01 · url 入门
浏览器地址栏的三种状态
📁 file://
「我在读自己硬盘里的文件」
file:///Users/zhangsan/index.html
发给朋友 → 打不开。因为他电脑里没那个文件。
🏠 localhost / 127.0.0.1
「我自己电脑当了服务器」
http://localhost:3000
发给朋友 → 也打不开。服务器只对自己开放。
🌐 公网 URL
「真正能让别人访问到」
https://myapp.vercel.app
这才是部署之后拿到的链接。
// part 01 · url 拆解
公网 URL 长什么样?
https://www.example.com:443/blog/post?id=42
协议怎么通信
http / https
域名方便人记
example.com
端口同一台机的房间号
80 / 443 / 3000
路径具体哪个页面
/blog/post
参数额外信息
?id=42
域名背后真正的地址是 IP · 比如 110.242.68.66
DNS 就是把名字翻译成IP的电话簿。
// part 02 · 错误码
网页崩了?先看三个家族
↪️ 3xx · 重定向
不是错误,是"往别处去"。比如 301(永久跳转)、302(临时跳转)。看到这个不用慌。
😵 4xx · 你的锅
请求本身有问题——地址写错、没权限、没登录。
关键词:客户端问题。
🔥 5xx · 服务器的锅
请求没错,服务器自己挂了 / 配置错了 / 跑得太慢。
关键词:去服务器看日志。
记住这一条 → 看到 4xx 看自己请求,看到 5xx 看后端日志。
// part 02 · 错误码
你最常遇到的6 个错误码
| 码 | 名字 | 大白话 | 多半是谁的锅 |
| 404 | Not Found | 这个地址压根没东西 | 路由没配 / 文件路径错 / 部署没成功 |
| 403 | Forbidden | 东西在,但不让你看 | 权限 / 防火墙 / Nginx 不让访问 |
| 500 | Internal Server Error | 服务器代码炸了 | 后端代码报错,看 stack trace |
| 502 | Bad Gateway | Nginx 找后端,后端没回 | Node 进程挂了 / 端口写错 |
| 503 | Service Unavailable | 服务器累趴了 / 在维护 | 负载过高 / 临时下线 / 限流 |
| 504 | Gateway Timeout | 后端在干活但太慢,Nginx 等不及了 | 死循环 / 慢查询 / 外部 API 超时 |
同样是 404,浏览器原生页 vs 你网站样式 → 锅在的位置完全不同。
// part 02 · 提问姿势
把报错喂给 AI 的正确姿势
❌ 差的提问
"我网页 502 了怎么办?"
AI 只能给你 8 个通用建议,照着试一遍,可能哪个都不对。
✅ 好的提问
"我的 Next.js 部署在 VPS,Nginx 反代到 :3000。刚 push 完代码后 502。"
+ nginx error log 末尾 50 行
+ systemctl status myapp 输出
+ 操作系统 / Node 版本
求救 5 件套(背下来)
- 我做了什么 — 部署 / 改了 nginx / 升级了依赖
- 期望看到什么 — 正常页面
- 实际看到什么 — 错误码 + 截图
- 关键日志原文 — 不是"日志说有错",是把日志贴进来
- 环境 — 平台 / 系统 / 版本号
// part 03 · 部署的三档段位
部署的三种段位
TIER 1
🚀 托管平台
Vercel / Netlify / Cloudflare Pages
- ✓ 推 GitHub 自动部署
- ✓ 30 秒上线 · 免运维
- ✓ 自带 HTTPS + 全球 CDN
- ✓ 90% 个人项目用这个
本场覆盖:第 10 · 11 页
TIER 2
🎛️ 自己服务器 + 宝塔
点点点的可视化面板
- ✓ 数据存自己手里
- ✓ 跑长任务无限制
- ✓ 国内可备案
- ✓ 适合稍有需求的玩家
本场覆盖:第 12 · 13 页
TIER 3
⚙️ 纯命令行
Nginx + systemd + Certbot
- ✓ 完全控制
- ✓ 适合学习底层原理
- ✓ AI 协助效率非常高
- ✓ 初次部署 2 小时跑通
本场覆盖:第 14-16 页
⚠️ 能用懒的,绝不上硬核的。不要一上来就开 VPS 写 Nginx——那是劝退新手最快的路。
// part 03 · tier 1
Tier 1 · Vercel 一键部署
- 代码推到 GitHub
- 打开 vercel.com,用 GitHub 登录
- 点 Add New → Project
- 选你的仓库,点 Import
- 框架自动识别,一般不用改
- 有 API Key 就填 Environment Variables
- 点 Deploy,等 30 秒
- 拿到 https://你的项目.vercel.app 🎉
之后每次 git push → 自动重新部署。
npm i -g vercel
cd my-app
vercel login
vercel
vercel --prod
// part 03 · 自定义域名
想要专属域名?三步搞定
01
买域名
国内 → 阿里云万网 / 腾讯云 DNSPod(要备案)
国际 → Cloudflare Registrar(成本价)/ Namecheap(无需备案)
02
接入 Cloudflare(免费 CDN + HTTPS + 防 DDoS)
在 Cloudflare 添加站点 → 把域名注册商的 NS 换成 Cloudflare 给的两个地址 → 等 5-30 分钟生效。
03
在 Vercel 绑定域名
Project → Settings → Domains → 输入域名 → 按 Vercel 提示在 Cloudflare 加一条 CNAME → 几分钟后看到 Valid Configuration → 完成 🎉
⚠️ 服务器在国内必须备案 · 7-20 工作日 · 用 Vercel 等海外平台无需备案但国内访问会慢。
// part 03 · tier 2
Tier 2 起手式 · 买 VPS + 登服务器
🇨🇳 国内(要备案)
阿里云 ECS · ¥99/年起 · 备案首选
腾讯云轻量 · ¥99/年起 · 微信生态好
华为云 · ¥99/年起 · 政企合规
🌍 国外(免备案)
Hetzner · ~$4/月 · 性价比之王
DigitalOcean · $6/月 · 文档完善
Vultr · $6/月 · 亚太节点
第一次 SSH 登服务器
ssh root@123.45.67.89
passwd
apt update && apt upgrade -y
// part 03 · tier 2
Tier 2 · 宝塔面板:给 Linux 装图形界面
一行命令装宝塔
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh \
&& sudo bash install.sh ed8484bec
访问 http://你的IP:8888/随机串 进入面板
5 步建站
- 登录面板
- 装环境套餐 → LNMP 或单装 Nginx
- 网站 → 添加站点(填域名 / 根目录)
- 把代码拖进站点根目录(或 Git 克隆)
- SSL → Let's Encrypt → 一键申请 + 强制 HTTPS
跑 Node 项目
软件商店搜「Node.js 版本管理器」→ 添加项目 → 选 Node 版本 + 启动命令 → 自动用 PM2 常驻 → 网站设置加反向代理到 127.0.0.1:3000 → 🎉
// part 03 · tier 3
Tier 3 · Nginx + systemd 架构
step 1
👤 浏览器
用户访问 https://example.com
step 2
🔀 Nginx
监听 80 / 443,处理 HTTPS,反向代理
step 3
🟢 Node 进程
监听 127.0.0.1:3000,真正的应用
─── HTTPS ───→ ─── HTTP ───→
📌 systemd
24 小时保安。让 Node 进程开机自启 + 崩溃自动重启。你睡觉它也在工作。
🔒 Certbot
免费 HTTPS 证书自动续期机器人。一行命令拿到小绿锁,一辈子不用再管。
四个角色配合 = 一个能扛真实流量的自托管站点。
// part 03 · tier 3
Nginx + systemd 实操
Nginx 反代到 :3000
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}
}
ln -s sites-available/myapp.conf sites-enabled/
nginx -t && systemctl reload nginx
systemd 让 Node 永生
[Service]
User=ubuntu
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node server.js
Restart=always
Environment=NODE_ENV=production
Environment=PORT=3000
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now myapp
journalctl -u myapp -f
新手 3 大翻车点 → 忘了 nginx -t·安全组没开 80/443·端口写错
// part 03 · tier 3
免费 HTTPS · Certbot 一行命令
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run
✅ 跑完这条会发生什么
• 你的网站获得 Let's Encrypt 免费 SSL 证书
• Nginx 配置被自动改成 listen 443 ssl
• HTTP 80 自动 301 跳到 HTTPS 443
• 浏览器小绿锁变绿 🎉
📅 之后呢
证书 90 天有效,Certbot 自动续期。
一辈子不用再管。
// part 04 · ai 副驾
让 AI 当你的运维副驾
排错三件套(喂给 AI)
sudo tail -n 100 /var/log/nginx/error.log
sudo journalctl -u myapp -n 100 --no-pager
sudo systemctl status nginx myapp
让 AI 直接登服务器干活
"请帮我 ssh 到 root@1.2.3.4,看 myapp.service 为什么失败。
关键命令在执行前先告诉我。"
现成的 Prompt 模板
📝 让 AI 写 Nginx 配置
"前端 Vite 静态文件在 /var/www/myapp/dist,/api/* 反代到 :8000,开 gzip,缓存 30 天,SPA fallback。给完整配置 + 每段解释。"
🚀 GitHub Actions 自动部署
"帮我写一个 GitHub Actions,push 到 main 后自动 ssh 到我的 VPS,git pull + npm install + systemctl restart myapp。"
🔍 故障定位
"为什么 502?给我 5 个最可能的原因,按概率从高到低。结合下面日志判断:[贴日志]"
⚠️ 红线:删除 / 覆盖配置 / 重启 DB 等不可逆操作,必须"先告诉我再执行"。
// part 05 · live demo + closing
🔥 现场实操 + 三档自查表
现场实操流程(30 min)
②
Claude Code Vibe 出代码15 分钟,跟着我一起看 AI 怎么干活
④
故意翻车演练5 分钟,制造一个 502,AI 协助定位
三档套餐自查表
| 场景 | 推荐 | 耗时 |
| 作品集 / Demo | Vercel | 5 min |
| 想绑自己域名 | Vercel + CF | 20 min |
| 面向国内 / 备案 | ECS + 宝塔 | 1 day |
| 严肃项目 / 学底层 | VPS + Nginx | 2 h |
🌙 能用托管,绝不开服务器。能用宝塔,绝不上命令行。