插件窝 干货文章 云服务器Jenkins部署Springboot项目及Vue项目的详细过程

云服务器Jenkins部署Springboot项目及Vue项目的详细过程

Jenkins sudo install Springboot 223    来源:    2025-04-01

Jenkins部署Springboot及Vue项目详细指南

一、环境准备

1. 服务器基础环境

  • 操作系统:推荐CentOS 7+/Ubuntu 18.04+
  • 配置要求:至少2核4GB内存
  • 网络要求:开放80、8080、22等必要端口

2. 安装必要软件

# 更新系统
sudo yum update -y  # CentOS
sudo apt update && sudo apt upgrade -y  # Ubuntu

# 安装JDK (SpringBoot需要)
sudo yum install java-11-openjdk-devel -y  # CentOS
sudo apt install openjdk-11-jdk -y  # Ubuntu

# 安装Node.js (Vue项目需要)
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -  # CentOS
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -  # Ubuntu
sudo yum install nodejs -y  # CentOS
sudo apt install nodejs -y  # Ubuntu

# 安装Maven (SpringBoot项目构建)
sudo yum install maven -y  # CentOS
sudo apt install maven -y  # Ubuntu

# 安装Git
sudo yum install git -y  # CentOS
sudo apt install git -y  # Ubuntu

# 安装Nginx (前端部署)
sudo yum install nginx -y  # CentOS
sudo apt install nginx -y  # Ubuntu

二、Jenkins安装与配置

1. 安装Jenkins

# CentOS
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum install jenkins -y

# Ubuntu
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins -y

2. 启动Jenkins

sudo systemctl start jenkins
sudo systemctl enable jenkins

3. 访问Jenkins

  1. 浏览器访问 http://<服务器IP>:8080
  2. 获取初始密码: bash sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  3. 安装推荐插件
  4. 创建管理员账户

4. 安装必要插件

  • Git Plugin
  • Maven Integration plugin
  • NodeJS Plugin
  • Publish Over SSH (用于部署)
  • Pipeline

三、SpringBoot项目部署

1. Jenkins配置

  1. 新建Item -> 选择"构建一个自由风格的软件项目"
  2. 源码管理:选择Git,填写项目仓库URL和凭证
  3. 构建触发器:根据需要设置(如GitHub webhook)
  4. 构建环境:
    • 提供JDK配置
    • 提供Maven配置

2. 构建配置

# 构建命令
clean install -DskipTests

3. 部署脚本(Post-build Actions)

#!/bin/bash

# 停止旧服务
PID=$(ps -ef | grep "your-springboot-app.jar" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
  kill -9 $PID
fi

# 备份旧版本
TIMESTAMP=$(date +%Y%m%d%H%M%S)
cp /path/to/deploy/your-springboot-app.jar /path/to/backup/your-springboot-app.jar.$TIMESTAMP

# 复制新版本
cp target/your-springboot-app.jar /path/to/deploy/

# 启动新服务
nohup java -jar /path/to/deploy/your-springboot-app.jar --spring.profiles.active=prod > /path/to/logs/app.log 2>&1 &

四、Vue项目部署

1. Jenkins配置

  1. 新建Item -> 选择"构建一个自由风格的软件项目"
  2. 源码管理:选择Git,填写项目仓库URL和凭证
  3. 构建触发器:根据需要设置
  4. 构建环境:
    • 提供Node.js环境

2. 构建配置

# 安装依赖
npm install

# 构建生产环境代码
npm run build

3. 部署到Nginx

#!/bin/bash

# 备份旧版本
TIMESTAMP=$(date +%Y%m%d%H%M%S)
tar -czf /path/to/backup/dist_$TIMESTAMP.tar.gz /usr/share/nginx/html/dist

# 部署新版本
rm -rf /usr/share/nginx/html/dist/*
cp -r dist/* /usr/share/nginx/html/dist/

4. Nginx配置

server {
    listen       80;
    server_name  your-domain.com;

    location / {
        root   /usr/share/nginx/html/dist;
        index  index.html;
        try_files $uri $uri/ /index.html;
    }

    # API代理配置(如果前端需要访问后端API)
    location /api/ {
        proxy_pass http://localhost:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

五、Pipeline方式部署(推荐)

1. SpringBoot Pipeline示例

pipeline {
    agent any

    environment {
        DEPLOY_PATH = '/path/to/deploy'
        JAR_NAME = 'your-springboot-app.jar'
    }

    stages {
        stage('Checkout') {
            steps {
                git branch: 'main', url: 'https://github.com/your-repo/springboot-project.git'
            }
        }

        stage('Build') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }

        stage('Deploy') {
            steps {
                sh '''
                # 停止旧服务
                PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
                if [ -n "$PID" ]; then
                  kill -9 $PID
                fi

                # 备份
                TIMESTAMP=$(date +%Y%m%d%H%M%S)
                cp $DEPLOY_PATH/$JAR_NAME $DEPLOY_PATH/backup/$JAR_NAME.$TIMESTAMP

                # 部署新版本
                cp target/$JAR_NAME $DEPLOY_PATH/

                # 启动服务
                nohup java -jar $DEPLOY_PATH/$JAR_NAME --spring.profiles.active=prod > $DEPLOY_PATH/logs/app.log 2>&1 &
                '''
            }
        }
    }
}

2. Vue Pipeline示例

pipeline {
    agent any

    environment {
        NGINX_ROOT = '/usr/share/nginx/html'
    }

    stages {
        stage('Checkout') {
            steps {
                git branch: 'main', url: 'https://github.com/your-repo/vue-project.git'
            }
        }

        stage('Install Dependencies') {
            steps {
                sh 'npm install'
            }
        }

        stage('Build') {
            steps {
                sh 'npm run build'
            }
        }

        stage('Deploy') {
            steps {
                sh '''
                # 备份
                TIMESTAMP=$(date +%Y%m%d%H%M%S)
                tar -czf $NGINX_ROOT/backup/dist_$TIMESTAMP.tar.gz $NGINX_ROOT/dist

                # 部署
                rm -rf $NGINX_ROOT/dist/*
                cp -r dist/* $NGINX_ROOT/dist/
                '''
            }
        }
    }
}

六、常见问题解决

1. Jenkins权限问题

# 将Jenkins用户加入sudoers
sudo visudo
# 添加以下内容
jenkins ALL=(ALL) NOPASSWD: ALL

2. Node.js版本问题

# 使用n管理Node版本
sudo npm install -g n
sudo n stable

3. 端口冲突

# 查看端口占用
netstat -tulnp | grep 8080
# 修改Jenkins端口
sudo vi /etc/default/jenkins
# 修改HTTP_PORT=8080为其他端口

4. 构建内存不足

# 修改Maven内存设置
export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512m"

七、安全建议

  1. 使用HTTPS保护Jenkins和应用程序
  2. 限制Jenkins的访问IP
  3. 定期备份Jenkins配置(/var/lib/jenkins)
  4. 使用角色策略插件管理用户权限
  5. 配置自动化的日志轮转

通过以上步骤,您应该能够在云服务器上成功使用Jenkins部署SpringBoot和Vue项目。根据实际项目需求,您可能需要调整部分配置。