Linux服务器部署jar包

部署jar包

查看进程   ps -ef |grep java
杀死进程   kill -s 9 端口号  比如:8080类似
部署项目   nohup java -jar  xxxx.jar &
输入命令   tail  -f  nohup.out  或者直接看日志   ctrl+c退出
访问路径   ok
### Linux环境下的一键部署Java JAR方法 在Linux环境中实现一键部署Java JAR程序可以通过编写Shell脚本来完成。这种脚本可以执行一系列操作,例如停止旧的应用实例、上传新的JAR文件、启动新版本的应用以及记录日志等。 以下是基于提供的参考资料和常见实践的一个完整的自动化部署脚本示例: #### Shell脚本示例 ```bash #!/bin/bash # 配置变量 APP_NAME="myapp" BACKUP_DIR="/backup/$APP_NAME" DEPLOY_DIR="/opt/$APP_NAME" LOG_FILE="$DEPLOY_DIR/deploy.log" PID_FILE="$DEPLOY_DIR/$APP_NAME.pid" REMOTE_USER="deploy_user" REMOTE_HOST="192.168.1.100" REMOTE_DEPLOY_PATH="/home/$REMOTE_USER/apps" # 备份当前应用 function backup_current_app() { echo "$(date): Backing up current application..." >> $LOG_FILE mkdir -p $BACKUP_DIR/$(date +"%Y%m%d%H%M%S") && cp $DEPLOY_DIR/*.jar $BACKUP_DIR/$(date +"%Y%m%d%H%M%S")/ } # 停止正在运行的应用 function stop_running_app() { if [ -f "$PID_FILE" ]; then PID=$(cat $PID_FILE) if ps -p $PID > /dev/null; then echo "$(date): Stopping the running application with PID=$PID..." >> $LOG_FILE kill $PID sleep 5 if ps -p $PID > /dev/null; then echo "$(date): Application did not terminate gracefully, killing forcefully." >> $LOG_FILE kill -9 $PID fi rm -f $PID_FILE fi else echo "$(date): No running instance found." >> $LOG_FILE fi } # 启动应用 function start_application() { echo "$(date): Starting new application version..." >> $LOG_FILE nohup java -jar $DEPLOY_DIR/app.jar > $DEPLOY_DIR/application.log 2>&1 & echo $! > $PID_FILE echo "$(date): New application started successfully!" >> $LOG_FILE } # 检查应用状态 function check_status() { if [ -f "$PID_FILE" ]; then PID=$(cat $PID_FILE) if ps -p $PID > /dev/null; then echo "$(date): Application is running (PID=$PID)." >> $LOG_FILE else echo "$(date): Application is NOT running but PID file exists ($PID_FILE). Removing stale PID file." >> $LOG_FILE rm -f $PID_FILE fi else echo "$(date): Application is NOT running and no PID file exists." >> $LOG_FILE fi } # 主流程 echo "$(date): Deployment script starting..." >> $LOG_FILE # Step 1: Backup existing app files backup_current_app # Step 2: Stop any currently running instances of the app stop_running_app # Step 3: Transfer new JAR to remote server via SSH scp $DEPLOY_DIR/new-app-version.jar ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DEPLOY_PATH}/app.jar &>>$LOG_FILE if [ $? -ne 0 ]; then echo "$(date): Failed to transfer JAR file to remote host." >> $LOG_FILE exit 1 fi # Step 4: Start the newly deployed application on the remote server ssh ${REMOTE_USER}@${REMOTE_HOST} "cd $REMOTE_DEPLOY_PATH && bash deploy.sh" &>>$LOG_FILE if [ $? -eq 0 ]; then echo "$(date): Remote deployment completed successfully." >> $LOG_FILE else echo "$(date): Error occurred during remote deployment process." >> $LOG_FILE exit 1 fi # Step 5: Check status after deployment check_status echo "$(date): Deployment script finished execution." >> $LOG_FILE ``` 此脚本实现了以下功能: - **备份现有应用**:防止因更新失败而丢失数据[^3]。 - **停止已运行的实例**:确保不会重复启动多个服务实例。 - **传输新JAR文件至远程服务器**:利用`scp`命令安全地复制文件到目标主机[^1]。 - **远程启动应用**:通过SSH连接到目标机器并触发启动逻辑。 - **监控应用状态**:确认部署完成后服务正常运行。 上述过程涵盖了从本地准备到远程部署的所有必要环节,并提供了详细的日志支持以便排查问题。 --- ### 注意事项 为了使该脚本能够顺利工作,请注意以下几点: - 确保源机与目标机之间已经配置好无密码认证(如使用SSH密钥对)。 - 调整路径参数以匹配实际项目结构。 - 测试每一步单独的功能模块后再集成整个脚本运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯小胖 Mini胖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值