42 lines
1.7 KiB
Bash
Executable File
42 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 远程服务器信息
|
|
REMOTE_USER="ubuntu"
|
|
REMOTE_HOST="49.51.178.206"
|
|
REMOTE_DIR="/usr/local/aigrammar"
|
|
BACKUP_DIR="$REMOTE_DIR/backup"
|
|
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
|
|
|
# 配置文件环境(默认生产环境)
|
|
ENV=${1:-prod} # 运行时可以传入 `dev` 或 `prod`
|
|
CONFIG_FILE="conf/config.${ENV}.toml"
|
|
|
|
# 检查本地文件是否存在
|
|
if [[ ! -f "bin/aigrammar" || ! -f "bin/service.sh" || ! -f "$CONFIG_FILE" ]]; then
|
|
echo "❌ 关键文件不存在,请检查 bin/aigrammar, bin/service.sh, $CONFIG_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# 远程创建必要目录(如果不存在)
|
|
echo "🔹 确保远程目录结构完整..."
|
|
ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $REMOTE_DIR/{bin,conf,log,backup}"
|
|
|
|
# 备份远程服务器的旧文件
|
|
echo "📂 备份远程服务器文件..."
|
|
ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $BACKUP_DIR && \
|
|
[ -f $REMOTE_DIR/bin/aigrammar ] && mv $REMOTE_DIR/bin/aigrammar $BACKUP_DIR/aigrammar_$TIMESTAMP || true && \
|
|
[ -f $REMOTE_DIR/bin/service.sh ] && mv $REMOTE_DIR/bin/service.sh $BACKUP_DIR/service_$TIMESTAMP.sh || true && \
|
|
[ -f $REMOTE_DIR/conf/config.toml ] && mv $REMOTE_DIR/conf/config.toml $BACKUP_DIR/config_$TIMESTAMP.toml || true"
|
|
|
|
# 复制文件到远程服务器(保持目录结构)
|
|
echo "📤 复制文件到远程服务器..."
|
|
scp bin/aigrammar $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/bin/
|
|
scp bin/service.sh $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/bin/
|
|
scp $CONFIG_FILE $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/conf/config.toml
|
|
|
|
# 远程执行 restart
|
|
echo "🔄 远程重启服务..."
|
|
ssh $REMOTE_USER@$REMOTE_HOST "cd $REMOTE_DIR/bin && chmod +x service.sh && ./service.sh restart"
|
|
|
|
echo "✅ 发布完成!"
|