以下是在Ubuntu上实现Java应用自动化部署的常见方案,可根据需求选择:
sudo apt update && sudo apt install openjdk-17-jdk wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.keys | sudo apt-key add - echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list sudo apt install jenkins sudo systemctl start jenkins && sudo systemctl enable jenkins pipeline { agent any stages { stage('Build') { steps { sh 'mvn clean package' } // Maven打包 } stage('Docker Build') { steps { script { docker.build("app:${env.BUILD_ID}") } } } stage('Deploy') { steps { sh 'docker stop app || true' sh 'docker rm app || true' sh 'docker run -d --name app -p 8080:8080 app:${env.BUILD_ID}' } } } } sudo apt update && sudo apt install ansible - hosts: webservers become: true tasks: - name: 安装Java apt: name=openjdk-17-jdk state=present - name: 上传JAR包 copy: src=/local/app.jar dest=/opt/app.jar - name: 启动应用 shell: nohup java -jar /opt/app.jar > /dev/null 2>&1 & ansible-playbook -i hosts deploy.yml #!/bin/bash SERVER_IP="your_server_ip" JAR_PATH="/opt/app.jar" LOCAL_JAR="target/app.jar" # 停止旧进程 ssh user@$SERVER_IP "pkill -f $JAR_PATH || true" # 上传新JAR scp $LOCAL_JAR user@$SERVER_IP:$JAR_PATH # 启动新进程 ssh user@$SERVER_IP "nohup java -jar $JAR_PATH > /dev/null 2>&1 &" ssh-keygen -t rsa ssh-copy-id user@$SERVER_IP journalctl -u app或docker logs)。根据项目规模选择方案:小型项目可用Shell脚本,中型项目推荐Jenkins+Docker,大型企业级项目可结合Ansible实现全流程自动化。