网站版本管理与发布 是通过 Git 版本控制、分支管理策略、自动化部署流程、发布回滚机制,实现代码有序管理、安全发布、快速回滚的开发运维方法。
版本控制基础
Git 基础 ⭐⭐⭐⭐⭐
基本操作:
# 初始化仓库
git init
# 克隆仓库
git clone https://github.com/user/repo.git
# 查看状态
git status
# 添加文件
git add .
git add filename
# 提交
git commit -m "提交信息"
# 推送
git push origin main
# 拉取
git pull origin main
分支操作:
# 创建分支
git branch feature-name
# 切换分支
git checkout feature-name
# 创建并切换
git checkout -b feature-name
# 合并分支
git checkout main
git merge feature-name
# 删除分支
git branch -d feature-name
分支策略 ⭐⭐⭐⭐⭐
Git Flow:
分支类型:
- main/master: 生产环境
- develop: 开发环境
- feature/*: 功能分支
- release/*: 发布分支
- hotfix/*: 热修复分支
流程:
1. 从 develop 创建 feature 分支
2. 开发完成合并到 develop
3. 准备发布时创建 release 分支
4. 测试完成合并到 main 和 develop
5. 生产问题创建 hotfix 分支
GitHub Flow:
分支类型:
- main: 生产环境
- feature/*: 功能分支
流程:
1. 从 main 创建 feature 分支
2. 开发完成创建 Pull Request
3. Code Review
4. 合并到 main
5. 自动部署到生产
简化分支:
适合小团队:
- main: 生产
- staging: 测试
- feature/*: 功能
流程:
1. feature 开发
2. 合并到 staging 测试
3. 测试通过合并到 main
4. 自动部署
部署流程
手动部署 ⭐⭐⭐
部署步骤:
# 1. 拉取代码
cd /var/www/html
git pull origin main
# 2. 安装依赖
npm install
# 或
composer install
# 3. 构建
npm run build
# 或
webpack --mode production
# 4. 数据库迁移
php artisan migrate
# 或
python manage.py migrate
# 5. 清理缓存
php artisan cache:clear
php artisan config:cache
# 6. 重启服务
systemctl restart php-fpm
systemctl restart nginx
部署检查清单:
□ 代码已拉取
□ 依赖已安装
□ 构建完成
□ 数据库迁移
□ 缓存清理
□ 服务重启
□ 功能验证
自动化部署 ⭐⭐⭐⭐⭐
GitHub Actions:
# .github/workflows/deploy.yml
name: Deploy to Production
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Deploy to server
uses: easingthemes/ssh-deploy@v2.1.1
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
REMOTE_HOST: ${{ secrets.SERVER_IP }}
REMOTE_USER: deploy
SOURCE: "dist/"
TARGET: "/var/www/html"
- name: Restart services
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_IP }}
username: deploy
key: ${{ secrets.SSH_KEY }}
script: |
systemctl restart nginx
systemctl restart php-fpm
GitLab CI/CD:
# .gitlab-ci.yml
stages:
- test
- build
- deploy
test:
stage: test
script:
- npm install
- npm test
build:
stage: build
script:
- npm install
- npm run build
artifacts:
paths:
- dist/
deploy:
stage: deploy
script:
- apt-get update -y && apt-get install -y rsync
- rsync -avz --delete dist/ deploy@server:/var/www/html/
- ssh deploy@server "systemctl restart nginx"
only:
- main
发布策略
蓝绿部署 ⭐⭐⭐⭐
原理:
环境:
- 蓝环境:当前生产
- 绿环境:新生产
流程:
1. 部署到绿环境
2. 测试绿环境
3. 切换流量到绿环境
4. 绿环境成为新的生产
5. 蓝环境保留作为备份
优点:
✅ 零停机发布
✅ 快速回滚
✅ 风险低
✅ 可测试生产环境
实现:
# Nginx 配置
upstream backend {
server 127.0.0.1:8080; # 蓝
# server 127.0.0.1:8081; # 绿
}
# 切换时修改配置,reload Nginx
金丝雀发布 ⭐⭐⭐⭐
原理:
流程:
1. 部署新版本到部分服务器
2. 导入少量流量(5-10%)
3. 监控指标
4. 逐步增加流量
5. 全部切换
优点:
✅ 降低风险
✅ 早期发现问题
✅ 渐进式发布
✅ 可控制影响范围
实现:
# Nginx 配置
upstream backend {
server 127.0.0.1:8080 weight=9; # 旧版本 90%
server 127.0.0.1:8081 weight=1; # 新版本 10%
}
滚动发布 ⭐⭐⭐⭐
原理:
流程:
1. 逐台更新服务器
2. 每次更新一台
3. 健康检查通过
4. 继续下一台
5. 全部更新完成
优点:
✅ 零停机
✅ 资源利用率高
✅ 适合多服务器
✅ 自动化友好
回滚机制
快速回滚 ⭐⭐⭐⭐⭐
代码回滚:
# Git 回滚
git revert
git push origin main
# 或
git reset --hard
git push origin main --force
部署回滚:
# 切换回旧版本
cd /var/www/html
git checkout
# 重新构建
npm run build
# 重启服务
systemctl restart nginx
数据库回滚:
# Laravel
php artisan migrate:rollback
# Django
python manage.py migrate app_name 0001_initial
# 手动回滚
mysql -u root -p < rollback.sql
回滚策略 ⭐⭐⭐⭐
自动回滚:
# CI/CD 配置
deploy:
script:
- deploy.sh
on_failure:
- rollback.sh
手动回滚:
触发条件:
- 严重 bug
- 性能下降
- 功能异常
- 用户投诉
流程:
1. 确认问题
2. 决定回滚
3. 执行回滚
4. 验证恢复
5. 问题复盘
环境管理
多环境配置 ⭐⭐⭐⭐⭐
环境划分:
开发环境 (dev):
- 开发人员使用
- 最新代码
- 调试模式
- 本地数据库
测试环境 (staging):
- 测试人员使用
- 预发布代码
- 测试数据
- 接近生产
生产环境 (prod):
- 真实用户
- 稳定版本
- 真实数据
- 严格监控
配置文件:
.env.development
.env.staging
.env.production
# 加载对应环境配置
NODE_ENV=production node app.js
配置管理 ⭐⭐⭐⭐
敏感信息管理:
# 不要提交到 Git
echo ".env" >> .gitignore
# 使用环境变量
const dbPassword = process.env.DB_PASSWORD;
# 使用密钥管理
AWS Secrets Manager
阿里云密钥管理服务
配置差异:
// config.js
const config = {
development: {
db: 'localhost',
debug: true
},
production: {
db: process.env.DB_HOST,
debug: false
}
};
module.exports = config[process.env.NODE_ENV];
王尘宇实战建议
18 年经验总结
- 版本控制必须
- Git 是标配
- 分支管理
-
提交规范
-
自动化部署
- 减少人为错误
- 提升效率
-
可追溯
-
发布策略
- 根据业务选择
- 蓝绿/金丝雀
-
降低风险
-
回滚机制
- 必须准备
- 快速回滚
-
定期演练
-
环境隔离
- 开发/测试/生产
- 配置分离
- 权限控制
西安企业建议
- 使用 Git 管理
- 配置自动化部署
- 建立发布流程
- 准备回滚方案
常见问题解答
Q1:Git 分支策略如何选择?
答:
- 小团队:简化分支
- 中团队:GitHub Flow
- 大团队:Git Flow
- 根据团队规模
Q2:自动化部署有必要吗?
答:
有:
- 减少错误
- 提升效率
- 可追溯
- 强烈推荐
Q3:发布频率多少合适?
答:
- 小步快跑
- 每天/每周
- 根据业务
- 持续交付
Q4:回滚需要多久?
答:
- 目标:5 分钟内
- 理想:1 分钟
- 根据系统
- 定期演练
Q5:如何管理多环境?
答:
- 环境隔离
- 配置分离
- 权限控制
- 自动化部署
总结
网站版本管理与发布核心要点:
- 📦 版本控制 — Git、分支策略
- 🚀 部署流程 — 手动、自动化
- 📋 发布策略 — 蓝绿、金丝雀、滚动
- 🔙 回滚机制 — 快速、自动
- 🌍 环境管理 — 多环境、配置
王尘宇建议: 版本管理和发布是开发运维的基础。建立规范流程,自动化部署,降低风险,提升效率。
关于作者
王尘宇
西安蓝蜻蜓网络科技有限公司创始人
联系方式:
- 🌐 网站:wangchenyu.com
- 💬 微信:wangshifucn
- 📱 QQ:314111741
- 📍 地址:陕西西安
本文最后更新:2026 年 3 月 18 日
版权声明:本文为王尘宇原创,属于"网站建设系列"第 32 篇,转载请联系作者并注明出处。
下一篇:WEB-33:网站自动化部署
标签: 网站建设
还木有评论哦,快来抢沙发吧~