很多人以为「网站上线」就是把代码传到服务器。真正走一遍才发现:代码写完只是开始——让它以「https://你的域名」被信任地访问,中间还隔着域名实名、ICP 备案、DNS 解析、HTTPS 签发、微信风控五道工序。
这篇文章用本站(sycode.cn)的真实上线过程,把每一道工序讲透——包括那些文档里不会写的坑。
一、先看懂全局:上线到底有哪几关
| 工序 | 解决什么问题 | 谁说了算 | 耗时感受 |
|---|---|---|---|
| 服务器 | 网页文件放哪、谁能访问 | 云厂商 | 分钟级 |
| 域名实名 | 域名真正归你所有 | 注册局 | 1~3 个工作日 |
| DNS 解析 | 把域名翻译成服务器 IP | 域名服务商 | 分钟~小时级生效 |
| ICP 备案 | 国内服务器对外提供服务的合法准入 | 工信部(管局) | 2~4 周(最久) |
| HTTPS 证书 | 浏览器信任 + 数据加密 | 证书机构(CA) | 小时级(含排坑) |
最容易踩的认知误区:以为「能访问」就等于「上线成功」。对面向国内用户、尤其是要走微信生态的站点,备案和 HTTPS 几乎是硬门槛——缺了它们,别人不是打不开,就是打开了也不敢信。
二、域名:5 分钟注册,1 天等实名
选域名记住三件事:
- 后缀:面向国内用户,首选
.com和.cn,别用冷门后缀(容易进垃圾箱、被微信风控误伤); - 实名:国内注册商(阿里云/腾讯云)注册的域名都要实名认证,一般 1~3 个工作日。实名没通过,域名处于 ServerHold 状态,解析不生效——很多人卡在这一步还以为是自己配置错了;
- 备案前置条件:域名实名完成后才能提交 ICP 备案,所以域名要尽早买。
本站用的就是 sycode.cn:短、好记、和品牌一致。注册本身 5 分钟,但等实名通过是上线路上的第一个「等待」——把心态放平,后面还有更长的。
三、ICP 备案:把流程当成项目管理
这是整个上线周期里最长、最不可控的一关,也是最容易被新手忽略的一关。核心规则一句话:服务器在国内,就必须备案;不备案,80/443 端口会被云厂商封掉,网站根本打不开。
我的实际节奏:
- 在哪买服务器,就在哪备案——阿里云/腾讯云控制台都有备案入口,服务商帮你初审并提交管局;
- 填写主体信息(个人/企业)+ 网站信息 + 域名,按提示拍证件、做人脸核验;
- 服务商初审(1~2 天,可能电话核实);
- 提交到当地通信管理局终审(个人网站通常几个工作日到两三周不等);
- 通过后收到短信,拿到备案号。
几个真实的坑,逐个说:
① 网站名称要起好
管局对网站名称有审核:不能纯英文/纯数字、不能含「中国/国家/中央」等字眼、不能和知名网站重名混淆。我备案提交的名称是「灵感小站」——这也是为什么本站页脚写的是「灵感小站 · 小易AI实践」,把备案名放在前面(管局要求备案名称突出显示)。
② 备案号必须展示并链接
通过后要把备案号放到网站底部,并超链接到 beian.miit.gov.cn,这是规定动作:
<!-- 页脚示例:备案号 + 官方链接 -->
<a href="https://beian.miit.gov.cn" target="_blank">粤ICP备2026128150号</a>③ 个人备案的内容红线 + ④ 公安备案
个人备案不能做论坛、经营性内容;放个人作品、技术分享没问题。另外备案通过后,部分省份要求 30 天内做公安备案(全国互联网安全管理服务平台),拿到公安备案号后同样放页脚——本站的公安备案号还在办理中,办完会补上。
四、DNS 解析:把域名指向服务器
DNS 就像电话簿:用户输入 sycode.cn,它翻译成服务器 IP。在域名服务商控制台加两条 A 记录即可:
| 主机记录 | 记录类型 | 记录值 | 说明 |
|---|---|---|---|
@ | A | 你的服务器 IP | 裸域 sycode.cn |
www | A | 你的服务器 IP | www.sycode.cn |
两个提醒:
- TTL:改完解析不是立刻全局生效,旧的 TTL(缓存时间)过后才全部生效,验证别急;
- 验证命令:
dig sycode.cn +short或nslookup sycode.cn,能返回你的 IP 就说明解析通了。
五、HTTPS:为什么必须,以及两种验证方式的坑
为什么「必须」而不是「建议」
- 地址栏绿锁 = 浏览器信任,否则显示「不安全」;
- 微信生态更友好:http 链接在微信里打开会被提示风险;
- 支持 HTTP/2,加载更快;
- 现实教训:http 站点的页面在某些网络环境下会被运营商/公共 WiFi 注入广告——上了 HTTPS 之后这些注入全部消失。
证书哪来
Let's Encrypt 免费证书,90 天有效,配合 acme.sh 客户端自动签发 + 自动续期,个人站点零成本。
两种验证方式,我踩了一个大坑
CA 要证明「域名是你的」,有两条路:
- HTTP-01(默认):CA 访问
http://你的域名/.well-known/acme-challenge/xxx验证。要求 80 端口对 CA 的验证服务器可达; - DNS-01:CA 要求你在域名解析里临时加一条
TXT记录_acme-challenge。适合 80 端口不可达、或不想开 80 的场景。
我的真实经历:服务器 80 端口对海外入站不通(CA 验证服务器在海外),HTTP-01 反复失败。换成 DNS-01 + 阿里云 DNS API 后一次通过。
DNS-01 全自动签发(以阿里云为例):
# 1. 在阿里云 RAM 建一个只有 DNS 权限的子账号,拿到 AccessKey
export Ali_Key="你的 AccessKey ID"
export Ali_Secret="你的 AccessKey Secret"
# 2. 一行命令签发(acme.sh 自动加 TXT、等待生效、签发、删除记录)
acme.sh --issue --dns dns_ali -d sycode.cn -d www.sycode.cn装证书 + Nginx 配置:两个语法坑
# 把证书装到 Nginx 目录,续期后自动 reload
acme.sh --install-cert -d sycode.cn --ecc \
--key-file /etc/nginx/ssl/sycode.cn.key \
--fullchain-file /etc/nginx/ssl/sycode.cn.pem \
--reloadcmd "systemctl reload nginx"Nginx 站点配置的关键几行:
# 坑 1:Nginx 1.24 必须写成 listen 443 ssl http2;
# 独立写 "http2 on;" 会直接报错
server {
listen 443 ssl http2;
server_name sycode.cn www.sycode.cn;
ssl_certificate /etc/nginx/ssl/sycode.cn.pem;
ssl_certificate_key /etc/nginx/ssl/sycode.cn.key;
root /var/www/jihoweb;
index index.html;
}
# 坑 2:80 端口全站 301 跳 https
#(番外里有个例外要放行,见第七节)
server {
listen 80;
server_name sycode.cn www.sycode.cn;
return 301 https://$host$request_uri;
}配置完 nginx -t 通过后 systemctl reload nginx,浏览器访问 https://sycode.cn 就能看到绿锁了。
六、自动续期:别让证书悄悄过期
Let's Encrypt 证书只有 90 天,忘记续期 = 某天网站突然变红锁。acme.sh 安装后自带 crontab 每日检查,快到期自动续——关键是把续期后的 reload 动作挂上(上面 --reloadcmd 已经做了)。
两个自检命令:
acme.sh --list # 查看证书到期时间
acme.sh --renew -d sycode.cn --force # 手动强制续期,验证链路七、番外:微信里打开被拦截怎么办
新域名上线,最容易忽视的最后一关是微信。
- 现象:把 https://sycode.cn 发到微信,点开是红屏「已停止访问该网页」;
- 原因:微信安全中心对新域名、新 IP 有自动风控——与网站本身有没有问题无关,纯属「新」;
- 解决路径:在腾讯「安全中心」小程序提交申诉,说明网站用途、附备案号。我的经历:申诉通过 → 红色拦截解除 → 降级为蓝色风险提示页(点「继续访问」可进)→ 需 15 天观察期,期间正常访问不再拦截。
申诉时还有一个隐藏坑:微信会让你放一个验证文件 MP_verify_xxxx.txt 到网站根目录,然后微信爬虫要用 http 或 https 访问到它。我当时 80 端口对所有请求强制 301 跳 https——验证爬虫访问 http 时被 301 带走了,导致验证失败。解法:Nginx 对 .txt 请求放行,不跳转。
server {
listen 80;
server_name sycode.cn www.sycode.cn;
# 微信验证文件直通,不跳 https(只匹配 .txt)
location ~* ^/MP_verify_.*\.txt$ {
root /var/www/jihoweb;
}
location / {
return 301 https://$host$request_uri;
}
}这个坑文档里绝对不会写——你大概率要等验证失败一两次才能发现。
写在最后
回头看,上线这件事真正的成本分布:
| 事项 | 实际耗时 | 难度 |
|---|---|---|
| 域名注册 + 实名 | 1~3 天(等) | ★ |
| ICP 备案 | 2~4 周(等) | ★★(流程繁琐) |
| DNS 解析 | 分钟级 | ★ |
| HTTPS(DNS-01 + acme.sh) | 小时级(含排坑) | ★★★ |
| 微信风控观察期 | 15 天(等) | ★(申诉一次过) |
核心感受:上线不是技术题,是流程题。真正的门槛不是「不会配」,而是「不知道有这回事」——不知道要备案、不知道有 DNS-01、不知道微信要验证文件。把这篇文章存下来,你就能少走我这趟路的所有弯路。
本文为「建站实战」系列第一篇。下一篇将分享本站正在运行的自建系统:给纯静态站加一套 PV/UV 访问统计(零第三方依赖,数据 100% 自己掌控)。
WECHAT OFFICIAL ACCOUNT
小易AI实践
持续更新企业 AI 落地经验