Skip to content
陈广亮的技术博客
Go back

博客部署流程优化:从服务器构建到本地构建的进化

问题背景

最近维护 Astro 博客时碰到一个问题:服务器资源不够,构建直接挂了。

原来流程的问题

# 旧流程:直接服务器构建
本地修改 rsync 源码到服务器 服务器 npm run build 部署

具体来说:

解决方案

新流程设计

# 新流程:本地构建 + GitHub 传输
本地构建 推送到 GitHub(含构建产物) 服务器拉取并部署

具体实现

1. 修改 .gitignore

# 允许构建产物进入版本控制
# dist/ -- 注释掉,允许提交构建产物到 GitHub

2. 部署脚本优化

#!/bin/bash
echo "🚀 生产环境部署流程(本地构建→GitHub→服务器)..."

# 1. 本地构建
npm run build

# 2. 提交构建产物到 GitHub
git add .
git commit -m "Auto deploy with build: $(date '+%Y-%m-%d %H:%M:%S')"
git push origin main

# 3. 服务器拉取并部署
ssh server << 'EOF'
    cd /var/www/source
    git pull origin main
    cp -r dist/* /var/www/html/
EOF

效果

改完之后:

一键部署体验

# 一键部署
./deploy-production.sh

# 自动完成:
# 1. ✅ 本地构建完成
# 2. ✅ 构建产物已推送到 GitHub  
# 3. ✅ 服务器已拉取并部署

技术细节

Astro 构建干了什么

服务器配置

# Nginx 配置优化
location / {
    try_files $uri $uri/ =404;
    
    # 静态资源缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|webp|svg)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

顺手做的优化

缓存策略也一起配了。Cloudflare 做 CDN,静态资源设 1 年过期(反正文件名带 hash),部署后 Cloudflare 清一下缓存就行。

验证

# 部署状态检查
curl -I https://chenguangliang.com
# 性能监控  
lighthouse https://chenguangliang.com

总结

说白了就是一件事:服务器太弱就别在上面构建,本地构建完推上去就行。Git 做增量传输,GitHub 做版本管理,服务器只负责 serve 静态文件。

简单的方案往往最靠谱。


Share this post on:

Previous Post
AI Agent 开发者工具全景 2026
Next Post
博客上线两款实用在线工具:二维码生成器 & CSV 转 JSON