0%

2026-07-20-blog-migration-log

博客迁移日志 — 2026-07-20

目标

将原来部署在 adaydream.cn 的 Hexo 静态博客整体迁移到子域名 blog.adaydream.cn,为后续主站导航页腾出位置。

服务器信息

项目
云服务商 阿里云 ECS
公网 IP x.x.x.x
系统 Alibaba Cloud Linux
Nginx 宝塔面板安装,配置目录 /www/server/panel/vhost/nginx/
Nginx 主配置 /www/server/nginx/conf/nginx.conf
旧站点路径 /var/www/my-site
新站点路径 /var/www/blog
SSL certbot (Let’s Encrypt),证书路径 /etc/letsencrypt/live/

操作记录

1. DNS 解析

阿里云云解析 DNS → adaydream.cn → 添加记录:

主机记录 类型 记录值
blog A x.x.x.x

注意:*.blog.adaydream.cn(泛解析)不匹配 blog.adaydream.cn 本身,必须单独加一条 blog

2. ECS 安装 Docker

阿里云 Linux 不在 Docker 官方脚本支持列表,改用阿里云镜像源:

1
2
3
4
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl enable docker --now

配置镜像加速器(/etc/docker/daemon.json):

1
2
3
4
5
6
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.1ms.run"
]
}

3. 安全组开放端口(阿里云 ECS)

协议 端口 用途
TCP 443 HTTPS 访问
UDP 3478 NetBird STUN(已完成,但服务已停用,可删除)

4. 服务器目录迁移

1
sudo mv /var/www/my-site /var/www/blog

5. Nginx 配置

创建 /www/server/panel/vhost/nginx/blog.adaydream.cn.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 80;
server_name blog.adaydream.cn;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name blog.adaydream.cn;
root /var/www/blog;
index index.html index.htm;

ssl_certificate /etc/letsencrypt/live/blog.adaydream.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.adaydream.cn/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

location / {
try_files $uri $uri/ =404;
}
}

6. SSL 证书

遇到两个坑:

  • certbot 默认找 /etc/nginx/nginx.conf,宝塔 Nginx 主配置在 /www/server/nginx/conf/nginx.conf,导致 --nginx 插件不可用
  • 解决办法:用 --webroot 模式申请,纯 HTTP 的 Nginx 配置先生效,证书拿到后再改回 HTTPS
1
sudo certbot certonly --webroot -w /var/www/blog -d blog.adaydream.cn

证书到期:2026-10-18,已设置自动续期。

7. 本地代码修改

文件 改动
technical/_config.yml url: https://adaydream.cnhttps://blog.adaydream.cn
.github/workflows/deploy.yml rsync 目标 /var/www/my-site//var/www/blog/

已提交推送至 GitHub main 分支,Actions 自动构建部署。

8. NetBird 尝试(已放弃)

  • 曾计划在 netbird.adaydream.cn 部署 NetBird 中继服务用于内网穿透
  • 已安装 Docker 并拉取镜像,容器曾短暂运行
  • 后决定不再需要,容器和 /opt/netbird 目录已清理
  • 阿里云 DNS 中 netbird 解析记录需手动删除

踩坑记录

问题 解决
AliCloud Linux 不在 Docker 官方支持列表 用阿里云 yum 镜像源手动安装
Docker Hub 被墙 配国内镜像加速器
docker.sock 权限不足 sudo usermod -aG docker admin 或直接 sudo
*.blog 泛解析不匹配裸 blog 单独加一条 blog 主机记录
certbot --nginx 插件找不到宝塔 nginx.conf 改用 --webroot 模式
Nginx tee 追加导致配置文件内容重复 rmtee
newgrp 不生效 直接在命令前加 sudo
GitHub curl HTTP2 错误 --http1.1 或 ghproxy 代理

当前架构

1
2
3
4
adaydream.cn          → (主域名,暂不解析)
blog.adaydream.cn → x.x.x.x:/var/www/blog(Hexo 博客)✅
sonnect.adaydream.cn → (预留,导航页,待部署)
netbird.adaydream.cn → (已放弃,DNS 记录待删除)

待办

  • [ ] 阿里云 DNS 删除 netbird 解析记录
  • [ ] 部署 sonnect.adaydream.cn 导航页(D:\my-blog\personal\subdomain-nav.html
  • [ ] 处理 adaydream.cn 旧 Nginx 配置(删除或改为跳转)
  • [ ] 阿里云 DNS 删除 @www 的旧记录(如不再需要主域名解析)
  • [ ] ECS 安全组删除不再需要的 UDP 3478 规则