复制成功
请遵守本站许可
REPORT
Chapter_Post // Field_Report

Post_Ref: RL-自动化部署脚本

2026.04.06

自动化部署脚本

Echo HaoRan
Echo HaoRan
#ScriptFile
ANALYSIS

创建自动化部署脚本 deploy.sh#

PRTCL // BASH
#!/bin/bash
# 配置:部署参数(可按需修改)
APP_NAME="myapp"
REPO_URL="git@github.com:username/myapp.git"
DEPLOY_PATH="/var/www/$APP_NAME"
BACKUP_PATH="/var/backups/$APP_NAME"
SERVERS=("server1.example.com" "server2.example.com" "server3.example.com")
USER="deploy"
# 创建备份目录
mkdir -p "$BACKUP_PATH"
# 获取当前时间戳
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# 部署到每台服务器
for server in "${SERVERS[@]}"; do
echo "开始部署到 $server..."
# 创建当前版本备份
ssh $USER@$server "if [ -d $DEPLOY_PATH ]; then cp -r $DEPLOY_PATH $BACKUP_PATH/${APP_NAME}_$TIMESTAMP; fi"
# 拉取最新代码
ssh $USER@$server "mkdir -p $DEPLOY_PATH && cd $DEPLOY_PATH && git clone $REPO_URL ."
# 安装依赖(根据项目类型调整)
ssh $USER@$server "cd $DEPLOY_PATH && npm install 2>/dev/null || echo 'npm install skipped'"
ssh $USER@$server "cd $DEPLOY_PATH && pip install -r requirements.txt 2>/dev/null || echo 'pip install skipped'"
# 构建项目(根据项目类型调整)
ssh $USER@$server "cd $DEPLOY_PATH && npm run build 2>/dev/null || echo 'Build skipped'"
# 重启服务
ssh $USER@$server "sudo systemctl restart $APP_NAME.service"
# 检查服务状态
STATUS=$(ssh $USER@$server "sudo systemctl is-active $APP_NAME.service")
if [ "$STATUS" == "active" ]; then
echo "部署到 $server 成功!"
else
echo "部署到 $server 失败,请检查服务状态!"
fi
done

作用
该脚本在执行时会:

  • 连接到多台服务器进行部署;
  • 在部署前创建当前版本的备份;
  • 拉取最新代码并执行构建;
  • 安装依赖并重启服务;
  • 检查服务状态确保部署成功。

创建快速回滚脚本 rollback.sh#

PRTCL // BASH
#!/bin/bash
# 配置:回滚参数(可按需修改)
APP_NAME="myapp"
DEPLOY_PATH="/var/www/$APP_NAME"
BACKUP_PATH="/var/backups/$APP_NAME"
SERVERS=("server1.example.com" "server2.example.com" "server3.example.com")
USER="deploy"
# 检查备份目录是否存在
if [ ! -d "$BACKUP_PATH" ]; then
echo "备份目录不存在:$BACKUP_PATH"
exit 1
fi
# 获取最新的备份
LATEST_BACKUP=$(ls -t $BACKUP_PATH | head -n 1)
if [ -z "$LATEST_BACKUP" ]; then
echo "未找到备份文件"
exit 1
fi
echo "正在使用备份 $LATEST_BACKUP 进行回滚..."
# 回滚到每台服务器
for server in "${SERVERS[@]}"; do
echo "开始回滚 $server..."
# 停止服务
ssh $USER@$server "sudo systemctl stop $APP_NAME.service"
# 恢复备份
ssh $USER@$server "rm -rf $DEPLOY_PATH && cp -r $BACKUP_PATH/$LATEST_BACKUP $DEPLOY_PATH"
# 重启服务
ssh $USER@$server "sudo systemctl restart $APP_NAME.service"
# 检查服务状态
STATUS=$(ssh $USER@$server "sudo systemctl is-active $APP_NAME.service")
if [ "$STATUS" == "active" ]; then
echo "回滚到 $server 成功!"
else
echo "回滚到 $server 失败,请检查服务状态!"
fi
done

作用

  • 快速回滚到上一个备份版本;
  • 停止当前服务并恢复备份;
  • 重启服务并验证状态。

赋予脚本执行权限(执行一次即可)#

PRTCL // SH
Terminal window
chmod +x ~/scripts/deploy.sh
chmod +x ~/scripts/rollback.sh

R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.04.06
// END OF POST

订阅

通过 RSS 订阅本站,新文章发布时第一时间收到通知。

Follow
Classified
Chapter_06
Protocol_Ref: CC-BY-NC-SA-4.0

自动化部署脚本

Author: CHONGXIReleased: 2026.04.06

Licensed under CC BY-NC-SA 4.0

评论

© 2025-2026 EchoSpace
Powered by Astro & echohaoran Non-Collaborative_Entity // Protocol_V.4.21