diff --git a/README.md b/README.md index 0962576..4507568 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ hugo server -t terminal | 参数 | 值 | 说明 | |------|-----|------| -| `baseURL` | `https://fukunee.net/` | 生产环境域名 | +| `baseURL` | `https://fukun.net/` | 生产环境域名 | | `theme` | `hextra` | 当前主题 | | `hasCJKLanguage` | `true` | 中日韩语言优化 | | `navbar.displayTitle` | `false` | 导航栏仅显示图标 | diff --git a/content/blog/site-launch-guide.md b/content/blog/site-launch-guide.md new file mode 100644 index 0000000..75d2697 --- /dev/null +++ b/content/blog/site-launch-guide.md @@ -0,0 +1,236 @@ +--- +title: "个人网站上线全流程:从域名到备案到 HTTPS" +date: 2026-05-21T15:00:00+08:00 +draft: false +description: "腾讯云域名申请、工信部 ICP 备案、SSL 证书部署、Nginx HTTPS 配置、公安备案的全流程实操记录。每一步具体怎么做、要等多久、踩了什么坑。" +tags: + - 教程 + - 建站 + - Nginx + - HTTPS +poet: | + 千门万户曈曈日, + 总把新桃换旧符。 + ——王安石,中国,1021–1086 +--- + +把个人网站从 `http://IP` 变成一个正经的 `https://域名`,中间要走的路比想象中多。这篇文章记录我的实际操作过程,供有同样需求的朋友参考。 + +## 前提 + +- 服务器:腾讯云 Lighthouse,Ubuntu 24.04,4 核 4G +- 网站:Hugo 静态博客,Nginx 提供服务 +- 域名注册商:腾讯云 + +## 一、域名申请 + +**控制台路径**:腾讯云控制台 → 产品 → 域名注册 → 域名注册 + +在腾讯云域名注册页面搜索想要的域名,`.com` 早就被抢光了,`.net` 还有一些。我选了 `fukun.net`,首年 90 元。 + +购买后进入 **控制台 → 产品 → 域名注册 → 我的域名**,找到刚买的域名,点击「实名认证」。上传身份证正反面,审核大约半小时到两小时。通过后域名状态变为「正常」。 + +回到我的域名页面,点击域名进入 **域名管理 → DNS 解析 → 添加记录**: + +| 主机记录 | 记录类型 | 记录值 | +|---------|---------|--------| +| @ | A | 62.234.90.54 | +| www | A | 62.234.90.54 | + +TTL 默认 600 即可。生效很快,几分钟后 `ping fukun.net` 就能看到正确 IP。 + +## 二、工信部 ICP 备案 + +这是整个流程里最耗时的环节。根据《互联网信息服务管理办法》,中国大陆境内提供互联网信息服务的网站必须取得 ICP 备案号。 + +**控制台路径**:腾讯云控制台 → 产品 → 网站备案 → 开始备案 + +### 操作流程 + +1. 进入备案系统,选择「首次备案」 +2. 填写主体信息(个人姓名、身份证号、详细通信地址) +3. 填写网站信息: + - 网站名称:注意不能包含「中国」「中华」等字样,个人备案也不能用太过商业化的名称(我填了「FuKun 技术笔记」) + - 网站域名:`fukun.net` + - 网站简介:如实描述,不要写「论坛」「商城」等需要前置审批的内容 +4. 上传证件照片(身份证正反面、手持身份证照) +5. 进行人脸识别验证(微信扫码完成) +6. 提交初审 + +### 时间线 + +| 阶段 | 耗时 | 说明 | +|------|------|------| +| 腾讯云初审 | 1 个工作日 | 审核材料完整性,不合格会退回修改 | +| 工信部短信核验 | 即时 | 收到短信后 24 小时内点击链接确认 | +| 通信管理局审核 | 10–15 个工作日 | 各地管局速度不同,广东大约 12 天 | + +我从提交到拿到备案号大约用了 **12 个工作日**。通过后会在 **控制台 → 网站备案 → 我的备案** 看到备案号和电子证书。 + +### 关键注意事项 + +- 备案期间网站**必须关闭**(Nginx 先别配域名,或者返回 403) +- 个人备案不得涉及企业、商品、新闻等内容 +- 备案号需要在网站底部展示,链接到 `beian.miit.gov.cn` +- 备案通过后 30 天内需完成公安备案 + +## 三、SSL 证书申请 + +备案通过后域名可以解析了,此时网站还是 HTTP。下一步申请 SSL 证书开启 HTTPS。 + +**控制台路径**:腾讯云控制台 → 产品 → SSL 证书 → 我的证书 → 申请免费证书 + +我使用的是腾讯云「SSL 单域名证书(一年期)」,TrustAsia DV 品牌,RSA 2048 位加密,SHA256 签名算法。证书覆盖主域名 `fukun.net` 和 `www.fukun.net`。 + +证书链:`fukun.net` → TrustAsia DV TLS RSA CA 2025 → DigiCert Global Root G2。 + +### 操作步骤 + +1. 在 SSL 证书控制台点击「申请免费证书」(或购买对应类型的证书(¥64.6/年)) +2. 填写申请信息: + - 证书绑定域名:`fukun.net` + - 选择「自动添加 DNS 验证记录」— 腾讯云会自动添加一条 TXT 记录 +3. 提交申请,等待验证通过(通常 1–5 分钟) +4. 验证通过后状态变为「已签发」,点击「下载」 +5. 选择「Nginx」格式下载,得到一个 zip 包 + +解压后得到四个文件: + +| 文件 | 用途 | +|------|------| +| `fukun.net.csr` | 证书请求文件,申请时自动生成,部署不需要 | +| `fukun.net.key` | 私钥,Nginx ssl_certificate_key 使用 | +| `fukun.net_bundle.crt` | CRT 格式证书,含中间证书,Nginx 使用 | +| `fukun.net_bundle.pem` | PEM 格式证书,与 CRT 同内容,备用 | + +## 四、Nginx SSL 配置 + +### 上传证书到服务器 + +```bash +# 将证书文件传到服务器 +scp fukun.net.key fukun.net_bundle.crt ubuntu@62.234.90.54:~/ + +# SSH 登录服务器 +ssh ubuntu@62.234.90.54 + +# 移动到 Nginx SSL 目录并设置权限 +sudo mv ~/fukun.net.key ~/fukun.net_bundle.crt /etc/nginx/ssl/ +sudo chown root:root /etc/nginx/ssl/fukun.net* +sudo chmod 600 /etc/nginx/ssl/fukun.net.key +``` + +### Nginx 站点配置 + +编辑 `/etc/nginx/sites-available/hugo-blog`: + +```nginx +# HTTP → HTTPS 重定向 +server { + listen 80; + server_name fukun.net www.fukun.net; + return 301 https://$host$request_uri; +} + +# HTTPS 站点 +server { + listen 443 ssl http2; + server_name fukun.net www.fukun.net; + + ssl_certificate /etc/nginx/ssl/fukun.net_bundle.crt; + ssl_certificate_key /etc/nginx/ssl/fukun.net.key; + + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; + ssl_prefer_server_ciphers on; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + root /home/hugo/hugo-blog/public; + index index.html; + + location / { + try_files $uri $uri/ =404; + } + + # 静态资源缓存 + location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|webp)$ { + expires 30d; + add_header Cache-Control "public, immutable"; + } +} +``` + +```bash +# 启用站点 +sudo ln -sf /etc/nginx/sites-available/hugo-blog /etc/nginx/sites-enabled/ + +# 测试配置 +sudo nginx -t + +# 重载 Nginx +sudo systemctl reload nginx +``` + +## 五、备案号悬挂 + +工信部要求备案号须挂在网站首页底部。在 Hugo 的 `hugo.yaml` 配置: + +```yaml +params: + footer: + icp: "粤ICP备2026061516号" +``` + +在布局文件 `layouts/_partials/footer.html` 中渲染: + +```go-html-template +{{- with .Site.Params.footer.icp }} +
+ + {{ . }} + +
+{{- end }} +``` + +## 六、公安部网站备案 + +ICP 备案通过后 30 天内,还需进行公安机关互联网站备案。注意需要先完成主体备案,再完成网站备案,两步都要做。 + +**网站**:www.beian.gov.cn → 全国公安机关互联网站安全服务平台 + +**第一步:主体备案** + +1. 注册账号并登录 +2. 进入「办事大厅」→「开办主体管理」→「新增主体」 +3. 填写主体信息(个人姓名、身份证号、地址、联系方式等) +4. 提交审核,通过后可进行网站备案 + +**第二步:网站备案** + +1. 进入「办事大厅」→「新办网站申请」 +2. 填写网站信息:网站名称、域名、IP 地址、服务器所在地 +3. 选择网络接入服务商:腾讯云 +4. 提交审核(约 7–10 个工作日) +5. 审核通过后获取公安备案号,格式为「粤公网安备 XXXXXXX 号」 + +公安备案号也需要悬挂在网站上(通常放在 ICP 备案号旁边)。 + +## 七、总结 + +| 事项 | 耗时 | 费用 | 控制台路径 | +|------|------|------|-----------| +| 云服务器 | 1 天 | ¥99/月 | 控制台 → Lighthouse | +| 域名注册 | — | ¥90/年 | 控制台 → 域名注册 | +| 实名认证 | — | — | 控制台 → 域名注册 → 我的域名 | +| DNS 解析 | — | — | 域名管理 → DNS 解析 | +| ICP 备案 | 10–15 工作日 | — | 控制台 → 网站备案 | +| SSL 证书 | — | ¥64.6/年 | 控制台 → SSL 证书 → 我的证书 | +| CDN 加速 | — | ¥14/年 | 控制台 → CDN | +| 云硬盘扩容 | — | ¥70 | 控制台 → Lighthouse → 云硬盘 | +| Nginx 配置 | — | — | 无 | +| 公安备案 | 7–10 工作日 | — | beian.gov.cn | +| **合计** | **约 21–29 天** | **¥337.6** | | + +整个流程走下来,**域名是小头,时间是中头,耐心是重头**。备案虽然麻烦,但一次搞定后就能安心运营。希望这篇文章能帮你省掉一些摸索的时间。 diff --git a/hugo.yaml b/hugo.yaml index 7633f95..c1adc59 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -1,4 +1,4 @@ -baseURL: "https://fukunee.net/" +baseURL: "https://fukun.net/" title: "FuKun.Net" enableRobotsTXT: true diff --git a/ssl/fukun.net.jpg b/ssl/fukun.net.jpg new file mode 100644 index 0000000..c69873b Binary files /dev/null and b/ssl/fukun.net.jpg differ diff --git a/ssl/fukun.net.nginx.conf b/ssl/fukun.net.nginx.conf new file mode 100644 index 0000000..d9dbc2f --- /dev/null +++ b/ssl/fukun.net.nginx.conf @@ -0,0 +1,28 @@ +# HTTP → HTTPS redirect +server { + listen 80; + server_name fukun.net www.fukun.net; + return 301 https://$host$request_uri; +} + +# HTTPS +server { + listen 443 ssl http2; + server_name fukun.net www.fukun.net; + + ssl_certificate /etc/nginx/ssl/fukun.net_bundle.crt; + ssl_certificate_key /etc/nginx/ssl/fukun.net.key; + + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; + ssl_prefer_server_ciphers on; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + root /var/www/html; + index index.html; + + location / { + try_files $uri $uri/ =404; + } +}