很多人以为「网站上线」就是把代码传到服务器。真正走一遍才发现:代码写完只是开始——让它以「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. 填写主体信息(个人/企业)+ 网站信息 + 域名,按提示拍证件、做人脸核验;
  3. 服务商初审(1~2 天,可能电话核实);
  4. 提交到当地通信管理局终审(个人网站通常几个工作日到两三周不等);
  5. 通过后收到短信,拿到备案号

几个真实的坑,逐个说:

① 网站名称要起好

管局对网站名称有审核:不能纯英文/纯数字、不能含「中国/国家/中央」等字眼、不能和知名网站重名混淆。我备案提交的名称是「灵感小站」——这也是为什么本站页脚写的是「灵感小站 · 小易AI实践」,把备案名放在前面(管局要求备案名称突出显示)。

② 备案号必须展示并链接

通过后要把备案号放到网站底部,并超链接到 beian.miit.gov.cn,这是规定动作:

footer.html
<!-- 页脚示例:备案号 + 官方链接 -->
<a href="https://beian.miit.gov.cn" target="_blank">粤ICP备2026128150号</a>

③ 个人备案的内容红线 + ④ 公安备案

个人备案不能做论坛、经营性内容;放个人作品、技术分享没问题。另外备案通过后,部分省份要求 30 天内做公安备案(全国互联网安全管理服务平台),拿到公安备案号后同样放页脚——本站的公安备案号还在办理中,办完会补上。

四、DNS 解析:把域名指向服务器

DNS 就像电话簿:用户输入 sycode.cn,它翻译成服务器 IP。在域名服务商控制台加两条 A 记录即可:

主机记录记录类型记录值说明
@A你的服务器 IP裸域 sycode.cn
wwwA你的服务器 IPwww.sycode.cn

两个提醒:

  • TTL:改完解析不是立刻全局生效,旧的 TTL(缓存时间)过后才全部生效,验证别急;
  • 验证命令dig sycode.cn +shortnslookup 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 全自动签发(以阿里云为例):

bash
# 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 配置:两个语法坑

bash
# 把证书装到 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 站点配置的关键几行:

/etc/nginx/sites-available/jihoweb
# 坑 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 已经做了)。

两个自检命令:

bash
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 请求放行,不跳转。
/etc/nginx/sites-available/jihoweb
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、不知道微信要验证文件。把这篇文章存下来,你就能少走我这趟路的所有弯路。

← 上一篇:30 分钟接入 DeepSeek

本文为「建站实战」系列第一篇。下一篇将分享本站正在运行的自建系统:给纯静态站加一套 PV/UV 访问统计(零第三方依赖,数据 100% 自己掌控)。

WECHAT OFFICIAL ACCOUNT

小易AI实践
持续更新企业 AI 落地经验

小易AI实践公众号二维码