自动化部署脚本
通过SSH将本地的Java应用程序(JAR文件)部署到远程服务器上,并自动启动该应用程序。
脚本的主要步骤包括:
-
停止服务器上的当前应用程序:通过SSH连接到服务器,找到正在运行的Java应用程序的进程ID,并杀掉该进程。
-
删除旧的JAR文件:在服务器上,如果旧的JAR文件存在,则将其删除。
-
上传新的JAR文件:将本地的JAR文件通过SCP上传到服务器上指定的目录。
-
启动应用程序:在服务器上,通过
nohup
命令启动Java应用程序,并将输出重定向到nohup.out
文件中。
脚本使用了sshpass
工具来避免在SSH连接时手动输入密码,提高了部署的自动化程度。
如果你也需要频繁地将Java应用程序部署到远程服务器上,不妨试试这个脚本,它可能会让你的部署过程变得更加轻松和高效。
以下是脚本的代码示例(注意:你需要根据实际情况修改服务器信息、JAR文件名称和本地JAR文件路径等参数):
#!/bin/bash
# 使用之前需要安装wsl 安装命令如下
# dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# wsl --install
# wsl --list --online
# wsl --install -d Ubuntu
# wsl --list --online
# wsl --install -d Ubuntu
# 安装完毕,重启计算机,之后打开wsl安装sshpass
# sudo apt-get update
# sudo apt-get install sshpass
# 都安装完毕以后可以用wsl运行该脚本
# 2. 定义服务器信息
SERVER_USER="your_username"
SERVER_IP="your_server_ip"
SERVER_PATH="/opt/tensok"
JAR_NAME="your-jar-file.jar"
LOCAL_JAR_PATH="target/$JAR_NAME" # 确保这里的路径正确
PASSWORD="your_password"
# 3. 通过 ssh 到服务器并找到正在运行的进程 ID,然后杀掉它
echo "Stopping current application on server..."
sshpass -p $PASSWORD ssh $SERVER_USER@$SERVER_IP << EOF
PID=\$(ps -ef | grep $JAR_NAME | grep -v grep | awk '{print \$2}')
if [ ! -z "\$PID" ]; then
kill -9 \$PID
echo "Killed process \$PID"
else
echo "No running process found for $JAR_NAME"
fi
# 删除旧的 jar 文件
if [ -f $SERVER_PATH/$JAR_NAME ]; then
rm $SERVER_PATH/$JAR_NAME
echo "Deleted old JAR file."
fi
EOF
# 4. 将新的 JAR 文件上传到服务器
echo "Uploading new JAR file to server..."
sshpass -p $PASSWORD scp $LOCAL_JAR_PATH $SERVER_USER@$SERVER_IP:$SERVER_PATH/
# 5. 在服务器上通过 nohup 启动应用
echo "Starting application on server..."
sshpass -p $PASSWORD ssh $SERVER_USER@$SERVER_IP << EOF
cd $SERVER_PATH
nohup java -jar $JAR_NAME > nohup.out 2>&1 &
echo "Application started."
EOF
echo "Deployment completed."
使用之前需要按照注释中的内容部署一个WSL