温馨提示×

Ubuntu Java应用如何实现自动化部署

小樊
49
2025-08-07 08:30:53
栏目: 编程语言

以下是在Ubuntu上实现Java应用自动化部署的常见方案,可根据需求选择:

一、Jenkins + Docker(推荐)

  1. 安装Jenkins
    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
    
  2. 配置Jenkins
    • 安装插件:Git、Pipeline、Docker等。
    • 创建Pipeline项目,配置Git仓库和构建触发器。
  3. 编写Jenkinsfile
    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}'
                }
            }
        }
    }
    

二、Ansible自动化部署

  1. 安装Ansible
    sudo apt update && sudo apt install ansible
    
  2. 编写Playbook
    - 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 &
    
  3. 执行部署
    ansible-playbook -i hosts deploy.yml
    

三、Shell脚本+SSH(轻量级)

  1. 编写部署脚本
    #!/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 &"
    
  2. 配置SSH免密
    ssh-keygen -t rsa
    ssh-copy-id user@$SERVER_IP
    

四、关键注意事项

  • 环境一致性:使用Docker或Ansible确保开发与生产环境一致。
  • 权限管理:通过SSH密钥或Jenkins凭据避免密码泄露。
  • 日志监控:部署后检查应用日志(如journalctl -u appdocker logs)。

根据项目规模选择方案:小型项目可用Shell脚本,中型项目推荐Jenkins+Docker,大型企业级项目可结合Ansible实现全流程自动化。

0