Files
aiotagro-new/deploy.sh
aiotagro 35bf4daa66
Some checks failed
aagro-ui-admin CI / build (14.x) (push) Has been cancelled
aagro-ui-admin CI / build (16.x) (push) Has been cancelled
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
空提交
2025-10-04 21:08:17 +08:00

109 lines
3.3 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 部署配置
SERVER_HOST="192.168.0.95"
SERVER_USER="root"
SERVER_PASSWORD="aiotagro"
DEPLOY_DIR="/data/java/aiotagro"
JAR_FILE="aagro-server/target/aagro-server.jar"
APP_NAME="aagro-server"
echo "开始部署到服务器 ${SERVER_HOST}..."
# 1. 创建部署目录
echo "1. 创建部署目录..."
sshpass -p "${SERVER_PASSWORD}" ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_HOST} "mkdir -p ${DEPLOY_DIR}/config ${DEPLOY_DIR}/logs"
# 2. 上传jar文件
echo "2. 上传jar文件..."
sshpass -p "${SERVER_PASSWORD}" scp -o StrictHostKeyChecking=no ${JAR_FILE} ${SERVER_USER}@${SERVER_HOST}:${DEPLOY_DIR}/
# 3. 上传配置文件
echo "3. 上传配置文件..."
sshpass -p "${SERVER_PASSWORD}" scp -o StrictHostKeyChecking=no aagro-server/src/main/resources/*.yaml ${SERVER_USER}@${SERVER_HOST}:${DEPLOY_DIR}/config/
# 4. 创建启动脚本
echo "4. 创建启动脚本..."
cat > start.sh << 'EOF'
#!/bin/bash
APP_NAME="aagro-server"
JAR_FILE="/data/java/aiotagro/aagro-server.jar"
PID_FILE="/data/java/aiotagro/app.pid"
LOG_FILE="/data/java/aiotagro/logs/app.log"
# 检查Java环境
if ! command -v java &> /dev/null; then
echo "Java未安装请先安装Java 8或更高版本"
exit 1
fi
# 停止现有进程
if [ -f "$PID_FILE" ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo "停止现有进程 $PID..."
kill $PID
sleep 5
if ps -p $PID > /dev/null 2>&1; then
echo "强制停止进程 $PID..."
kill -9 $PID
fi
fi
rm -f $PID_FILE
fi
# 启动应用
echo "启动应用..."
nohup java -jar $JAR_FILE \
--spring.config.location=file:/data/java/aiotagro/config/ \
--spring.profiles.active=remote \
--server.port=8080 \
> $LOG_FILE 2>&1 &
# 保存PID
echo $! > $PID_FILE
echo "应用已启动PID: $(cat $PID_FILE)"
echo "日志文件: $LOG_FILE"
echo "可以使用以下命令查看日志:"
echo "tail -f $LOG_FILE"
EOF
sshpass -p "${SERVER_PASSWORD}" scp -o StrictHostKeyChecking=no start.sh ${SERVER_USER}@${SERVER_HOST}:${DEPLOY_DIR}/
sshpass -p "${SERVER_PASSWORD}" ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_HOST} "chmod +x ${DEPLOY_DIR}/start.sh"
# 5. 创建停止脚本
echo "5. 创建停止脚本..."
cat > stop.sh << 'EOF'
#!/bin/bash
PID_FILE="/data/java/aiotagro/app.pid"
if [ -f "$PID_FILE" ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo "停止进程 $PID..."
kill $PID
sleep 5
if ps -p $PID > /dev/null 2>&1; then
echo "强制停止进程 $PID..."
kill -9 $PID
fi
echo "应用已停止"
else
echo "进程不存在"
fi
rm -f $PID_FILE
else
echo "PID文件不存在"
fi
EOF
sshpass -p "${SERVER_PASSWORD}" scp -o StrictHostKeyChecking=no stop.sh ${SERVER_USER}@${SERVER_HOST}:${DEPLOY_DIR}/
sshpass -p "${SERVER_PASSWORD}" ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_HOST} "chmod +x ${DEPLOY_DIR}/stop.sh"
echo "部署完成!"
echo "服务器目录: ${DEPLOY_DIR}"
echo "启动命令: ssh ${SERVER_USER}@${SERVER_HOST} 'cd ${DEPLOY_DIR} && ./start.sh'"
echo "停止命令: ssh ${SERVER_USER}@${SERVER_HOST} 'cd ${DEPLOY_DIR} && ./stop.sh'"
echo "查看日志: ssh ${SERVER_USER}@${SERVER_HOST} 'tail -f ${DEPLOY_DIR}/logs/app.log'"