从 Wagtail 迁移到 Astro(四):上线
本文是「Wagtail 迁移 Astro」系列的第四篇,说明如何把 Astro 构建好的静态站点部署到线上,并兼顾备案与访问方式。
一、本地构建
在项目根目录执行:
cd astro-site
pnpm build
默认会生成 静态站点 到 dist/ 目录,包含:
- 所有页面的
index.html - 静态资源(JS/CSS/字体等)
- 若有
public/下的文件(如图片、favicon),也会被拷贝到dist/对应路径
构建完成后,可在本地用 pnpm preview 预览,确认无 404、资源加载正常。
二、部署到服务器
2.1 上传方式
常见做法有两种:
- rsync / scp:把
dist/整个同步到服务器某个目录(如/work/zicode-astro),用脚本或 Makefile 封装一条命令。 - CI/CD:在 Git 仓库里配置 GitHub Actions / GitLab CI,在 push 后自动执行
pnpm build,再把dist/上传到服务器或对象存储。
本站采用 部署脚本 + SFTP/SCP:在项目里维护一个 scripts/deploy_astro.py,读取配置(服务器地址、目标路径、认证方式),将本地 dist/ 上传到远程目录。
2.2 目录与 Web 根路径
- 服务器上指定一个目录作为「Astro 站点根路径」,例如
/work/zicode-astro。 - Nginx(或其它 Web 服务器)将该目录设为 root,并配置 try_files 或 fallback,使
/blog/xxx/这类路径能正确返回对应的index.html(SPA/静态路由友好配置)。
示例(仅作参考):
root /work/zicode-astro;
index index.html;
location / {
try_files $uri $uri/ $uri/index.html =404;
}
这样 /blog/wagtail-to-astro-1-why/ 会对应 dist/blog/wagtail-to-astro-1-why/index.html。若 Astro 配置了 trailingSlash: 'always',生成的目录结构即带 index.html,与上述配置匹配。
2.3 权限与属主
确保 Web 进程(如 www-data 或 nginx 用户)对该目录有读权限;若通过 SSH 上传,上传后可用 chown 调整属主。
三、备案与 HTTPS
3.1 备案号
若站点部署在国内且使用国内机房,需完成 ICP 备案。备案通过后,在页脚等处展示备案号,并链接到工信部查询页,例如:
- 文案:京ICP备15050995号
- 链接:https://beian.miit.gov.cn/
本站已在 Footer 组件中加入该链接。
3.2 HTTPS
建议全站使用 HTTPS:
- 用 Nginx 配置 SSL(如 Let’s Encrypt 证书),将 HTTP 重定向到 HTTPS。
- Astro 构建出的页面中的链接若为相对路径,无需修改;若配置了
site或 canonical,确保为https://开头。
四、发布流程小结
- 本地(或 CI)执行
pnpm build。 - 将
dist/上传到服务器目标目录。 - 确认 Nginx 指向该目录,且 try_files 配置正确。
- 检查备案号与 HTTPS,必要时做 301 从旧 Wagtail 地址到新 Astro 地址。
注意事项:首次上线前建议在服务器上手动执行一次 chmod -R o+r(或把目录属主交给 Web 用户),避免因权限导致 403。若使用 CI/CD,确保流水线有权限写入目标目录或通过 SSH 密钥上传。完成以上步骤,Astro 版博客即可对外提供服务。
本系列文章:(一)为什么迁移与选型 · (二)迁移的几个阶段 · (三)添加新文章 · (四)上线(本文) · (五)数据同步与脚本化 · (六)主题与功能打磨