码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解


    1. 准备工作

    本文的前后端分离项目,技术框架是:
    Springboot + Vue + Maven + SVN + Redis + Mysql + Nginx + JDK
    所以首先需要安装以下:

    在腾讯云服务器OpenCLoudOS系统中安装jdk(有图详解)

    在腾讯云服务器OpenCLoudOS系统中安装mysql(有图详解)

    在腾讯云服务器OpenCLoudOS系统中安装nginx(有图详解)

    在腾讯云服务器OpenCLoudOS系统中安装redis(有图详解)

    在腾讯云服务器OpenCLoudOS系统中安装svn(有图详解)

    在腾讯云服务器OpenCLoudOS系统中安装maven(有图详解)

    在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)

    用svn上传前后端代码参考:

    用svn上传idea和webstorm代码(有图详解)

    2. 全局工具配置

    登录Jenkins,在上篇文章中讲过

    在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)

    自己服务器的IP+端口

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    maven配置如下:

    在这里插入图片描述
    文中画框的地方,就是上篇文章中的maven安装地址

    在腾讯云服务器OpenCLoudOS系统中安装maven(有图详解)

    JDK配置如下:

    在这里插入图片描述
    上文中的路径,就是服务器中jdk的安装路径,文章在腾讯云服务器OpenCLoudOS系统中安装jdk(有图详解)中有讲过

    也可以 echo $JAVA_HOME找出

    在这里插入图片描述

    maven地址配置:

    在这里插入图片描述

    3. 插件安装

    在这里插入图片描述
    安装Publish over SSH

    Publish over SSH: jenkins远程服务器发送文件,此插件作用是将svn上的代码自动打包部署到其他服务器上去

    在这里插入图片描述
    在这里插入图片描述

    配置Publish Over SSH

    在这里插入图片描述
    拉到最底下,新增

    在这里插入图片描述
    在这里插入图片描述

    备注:
    这里的Remote Directory是所有部署文件的根目录配置,它会和后面项目中的上传路径进行叠加
    例如本文中这里配置 /usr/local/nginx
    后端项目上传地址中配置 /fabricate
    所以后端项目自动化部署的jar文件实际上传地址是两个地址的叠加: /usr/local/nginx/fabricate

    配置目标主机密码并测试连接:
    在这里插入图片描述
    点击运用、保存
    在这里插入图片描述
    安装SVN:

    在这里插入图片描述
    在这里插入图片描述

    每次安装完插件,可能不会生效,所以需要重启Jenkins

    具体重启方法和重启路径请看这篇文章:
    在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)

    cd /etc/init.d
    
    ./jenkins stop
    
    ./jenkins start
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    4. 部署SpringBoot后端项目

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    选择你刚刚添加的svn用户:

    在这里插入图片描述

    增加构建步骤:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    增加构建后操作步骤:
    在这里插入图片描述
    在这里插入图片描述

    Source files:源文件。就是maven打包后生成的哪个文件要打包到目标服务器

    Remove prefix:移除前缀。因为maven打包后,会有几层文件夹,我们只需要把要部署的jar之前的文件夹都删除即可

    Remote directory:远程文件夹。maven打包后形成的jar要部署到哪个路径下

    Exec command:部署包jar文件到了目标路径下后,需要启动的shell脚本

    参考:
    对于maven有多个子工程的,本地maven打包后,形成的jar文件是这个:

    在这里插入图片描述
    fabricate-admin.jar
    这个jar就是我们要部署到目标服务器并要启动文件fabricate.sh启动的jar
    在这里插入图片描述

    把jar启动文件上传至该路径下:
    在这里插入图片描述
    给文件夹赋权:

    chmod -R 777 /usr/local/nginx/fabricate/
    
    • 1

    这里赋权两个作用:

    1. 给文件夹赋权,自动化部署时,生成的jar文件可以通过SSH传输到这边,不赋权读写权限的话,到时候写不进来
    2. 给fabricate.sh赋予启动权限,jar文件传输过来,可以启动这shell脚本
      在这里插入图片描述

    启动文件如下:

    export JAVA_HOME PATH CLASSPATH
    JAVA_HOME=/app/soft/jdk/jdk1.8.0_341 #你自己的jdk路径
    PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
    APP_HOME=`pwd`
    AppName=fabricate-admin.jar  #你自己的部署包jar的名字
    echo "  =====关闭Java应用======"
    PROCESS=`ps -ef |grep java |grep -v grep|grep $APP_HOME/$AppName|awk '{print $2}'`
    for i in $PROCESS
    do
      echo "Kill the $1 process [ $i ]"
      kill -9 $i
    done
    echo "  =====启动Java应用======"
    nohup JAVA_HOME/bin/java -jar $APP_HOME/$AppName  > $APP_HOME/$AppName.log 2>&1 & 
    echo $! > savePid.txt
    cat savePid.txt
    rm  savePid.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    保存:

    在这里插入图片描述

    点击构建:

    在这里插入图片描述
    可看控制台日志:

    在这里插入图片描述
    在这里插入图片描述

    如果构建失败,可以从控制台日志看错误信息,以下三个步骤也可排查:

    自动化部署有三步:

    1. svn下载代码到workspace,并用maven打包形成target文件夹,底下有项目部署包jar

    一般默认的工作空是**/var/lib/jenkins/workspace**

    在这个路径下看自己的代码是否通过svn下载到了工作空间
    在这里插入图片描述
    代码路径下是否经过了maven打包形成target文件夹,产生部署包jar
    在这里插入图片描述

    2. 推送jar到目标路径

    可观察上一步产生的jar,有没有推过来
    在这里插入图片描述
    这个就是你配置的推送SSH的jar部署路径
    在这里插入图片描述

    3. 启动shell脚本

    只需观察上文启动脚本中的输出日志文件是否实时生成:

    在这里插入图片描述
    out.log日志文件生成
    在这里插入图片描述

    5. 部署vue前端项目

    5.1 下载安装nodejs

    http://nodejs.cn/download/

    在这里插入图片描述
    找到适合自己项目的nodejs版本,如果本地代码调试通的,cmd中node -v 看自己前端项目适合的版本

    我这个项目适合的版本是v14.9.0

    创建nodejs目录,并把安装包传到目录下

     mkdir -p /app/soft/nodejs
    
    • 1

    在这里插入图片描述

    解压安装包:

    tar -zxvf node-v14.9.0-linux-x64.tar.gz
    
    • 1

    所以nodejs的安装目录是:

    在这里插入图片描述
    添加环境变量:

    vi /etc/profile
    
    • 1

    在最后一行添加以下三行,其中NODE_HOME是刚刚nodejs的安装解压目录:
    在这里插入图片描述

    保存退出后,

    source /etc/profile
    
    • 1

    在这里插入图片描述

    查看nodejs是否安装成功:

    node -v
    
    npm -v
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    安装成功后,去Jenkins中进行配置nodejs

    安装nodejs插件:
    在这里插入图片描述

    搜索、勾选、安装
    在这里插入图片描述

    重启Jenkins,使之生效:

    cd /etc/init.d/
    
    ./jenkins stop
    
    ./jenkins start
    
    • 1
    • 2
    • 3
    • 4
    • 5

    升级适合忘记截图了,下面的框框地方有个【升级】

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    安装nodejs缺少的依赖:

    在这里插入图片描述

    安装成功后重启Jenkins

    重启Jenkins,使之生效:

    cd /etc/init.d/
    
    ./jenkins stop
    
    ./jenkins start
    
    • 1
    • 2
    • 3
    • 4
    • 5

    再去配置nodejs的安装目录
    在这里插入图片描述
    配置并保存

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    由于是前后端分离项目,用nginx进行前后端连接,详情可以参考这篇文章:

    nginx连接前后端分离项目

    Jenkins自动化部署时,前端的代码打包在nginx安装目录的html目录下,所以先对该目录进行读写赋权

    chmod -R 777 /usr/local/nginx/html/
    
    • 1

    在这里插入图片描述
    新建前端项目:

    在这里插入图片描述
    在这里插入图片描述

    配置svn:

    在这里插入图片描述

  • 相关阅读:
    【腾讯云 TDSQL-C Serverless 产品体验】国产数据库遥遥领先
    优维2个合作项目入选2022服贸会“企业数字化转型优秀案例”
    SpringBoot课堂笔记20230913
    初识多线程编程
    java面试官:程序员,请你告诉我是谁把公司面试题泄露给你的?
    Springboot面向会员体系的电商平台an5y9计算机毕业设计-课程设计-期末作业-毕设程序代做
    pytorch笔记
    chmod的用法,及几个权限的宏
    2022牛客暑期多校训练营3(总结+补题)
    软考-论文写作-论架构风格论文
  • 原文地址:https://blog.csdn.net/weixin_44079964/article/details/132907538
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号