前言
这个站就是用本文的流程部署的。整条链路很简单:
本地写 Markdown → astro build 构建静态文件 → rsync 推送服务器 → Nginx 对外服务
没有数据库、没有后端进程,2C2G 的服务器跑起来毫无压力。
第一步:本地构建
npm run build
产物在 dist/ 目录,就是一堆 HTML/CSS/JS 静态文件。本站 20 来个页面加起来不到 1 MB。
第二步:rsync 推送
比 scp 好的地方是增量同步,只传变化的文件:
rsync -avz --delete dist/ root@服务器IP:/var/www/hengjiu/
--delete 会把服务器上已经不存在于本地的旧文件删掉,保持两边一致。
第三步:Nginx 托管
/etc/nginx/conf.d/hengjiu.conf:
server {
listen 80;
server_name 服务器IP或域名;
root /var/www/hengjiu;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
改完检查语法再重载:
nginx -t && systemctl reload nginx
踩过的坑
- 403 Forbidden:文件权限没问题但就是 403,是 SELinux 上下文不对,用
restorecon -Rv /var/www/hengjiu修复 - 网页打不开:firewalld 和阿里云安全组是两层,80/443 端口两边都要放行
- 构建产物不对:一定要确认
dist/根目录下有index.html,如果是client/、server/两个子目录说明构建配置带了 SSR 适配器
总结
静态站部署一次配好之后,日常更新就一条命令的事。下一步计划把域名和 HTTPS 配上,流程会再写一篇。