Jenkins在Linux服务器自动化部署前后端项目(大家无脑跟着走就能通)

1Jenkins自动化部署项目

2linux服务器直接安装

3环境搭建

3.1服务器装java

#直接去下载 手动解压 改环境  路径自己定(如果报错或者出问题可能需要赋予权限)
https://blog.csdn.net/jzycloud/article/details/114123530
#验证结果
java -version
#将jdk的安装路径加入到JAVA_HOME
vi /etc/profile
#set java environment
JAVA_HOME=/home/java/jdk1.8.0_301
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH
#修改/etc/profile之后让其生效
. /etc/profile (注意 . 之后应有一个空格)
#控制台输入 java 测试是否成功

3.2装maven

#新建目录/usr/local/apps/maven,并cd进去
#下载maven
wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
#解压
tar zvxf apache-maven-3.6.3-bin.tar.gz
#修改配置文件 依据项目的   包路径 /mnt/sdc/maven_repo
/usr/local/apps/maven/apache-maven-3.6.3/conf/settings.xml
#授权写
chmod 777 -R  /mnt/sdc/maven_repo
#配置环境变量
vi /etc/profile
export MAVEN_HOME=/usr/local/apps/maven/apache-maven-3.6.3/
export PATH=$MAVEN_HOME/bin:$PATH
#刷新环境变量
source /etc/profile
#测试结果
mvn -version

3.3装git

#安装
yum -y install git
#查看版本
git --version
#查看路径
whereis git

3.4装supervisor(jenkinsfile文件中的命令用到)

#一路安装
yum install -y epel-release
yum install -y supervisor
#启动服务并设置开机自启动
systemctl start supervisord.service && systemctl enable supervisord.service
#把最后一行的.ini改成.conf
vi /etc/supervisor.conf 
#在/etc/supervisor.d/下面新建一个文件管理jar服务  该文件最后有配置方式,先继续往下看
vim /etc/supervisor.d/app.conf
#先读取改了哪些配置
supervisorctl reread
#再更新 修改配置文件后要
supervisorctl update

3.5装jenkins

#下载
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
#安装jenkins   可能会因为网慢 报错  多试几次:当看到jenkins版本和complete字样时,表示已经安装完成 !!注意:这里不能有error
yum install jenkins
#配置目录的路径   自动配好的都是
/usr/lib/jenkins/        #jenkins安装目录,war包会放在这里。
/etc/sysconfig/jenkins        #jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。
/var/lib/jenkins/        #默认的JENKINS_HOME。
/var/log/jenkins/jenkins.log       # jenkins日志文件。
#修改端口号8099
vi /etc/sysconfig/jenkins
#修改jdk !! 大部分错误都是jdk没有配对路径 !!
vi  /etc/init.d/jenkins
#查看密码
tail /var/lib/jenkins/secrets/initialAdminPassword
#系统启动
systemctl start jenkins
#重启也可以网站这样  试过一次 很慢
http://127.0.0.1:8099/restart
#是否启动
 ps -ef | grep jenkins 
#查看报错日志
systemctl status jenkins.service
journalctl -xe
#修改配置后要
systemctl daemon-reload
#直接启动jar的方式  不要用
java -jar jenkins.war --ajp13Port=-1 --httpPort=8081

3进入工作台配置

3.1省略步骤(主要是没图)

  • 根据你配的端口号路径:http://127.0.0.1:8099/ 会先让你输入密码,查看密码命令: tail /var/lib/jenkins/secrets/initialAdminPassword

  • 然后注册一个账号

  • 选择新手推荐安装插件-》一路保存确认

3.2此时已经成功进来页面了

如图:

3.2.1管理插件!先装这几个插件:maven ssh 如图:

img

img

3.2.2全局工具配置

3.2.2.1配置JDK

image-20211209095049769

3.2.2.2配置maven

image-20211209095153278

3.2.3配置系统

3.2.3.1全局环境变量配置

image-20211209095339049

3.2.3.2ssh配置

image-20211209095450190

image-20211209095614552

3开始构建项目

3.1流水线构建方式 使用jenkinsfile文件

  1. 新建item

    image-20211209100428152

  2. 如图:

    image-20211209100509441

  3. 构建触发器 啥也没选:就是手动点击构建

  4. 配置流水线

    image-20211209100808367

  5. 点击保存即可

    image-20211209100925544

3.2git凭据生成

如图:

image-20211209101149192

点击确定:没写id会自动生成id

image-20211209101313069

3.3jenkinsfile文件配置

  • 文件放在如图位置

    image-20211209101508011

  • jenkinsfile命令:

    node {
        def GIT_COMMIT
        def GIT_PREVIOUS_SUCCESSFUL_COMMIT
        def CURRENT_JOB
        stage('拉取代码') {
            dir("/var/lib/jenkins/workspace/tttone") { //workspace文件 在第一次构建时生成!
                def arr = "${JOB_NAME}".split('/')
                CURRENT_JOB = arr[arr.length - 1]
                sh "pwd"
                def res = checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '424b34ca-这里是jenkins用户凭证的git用户id-dc3b62eaebfc', url: 'http://11.125.33.44项目的git路径.git']]])
                sh "echo ${res}"
                GIT_COMMIT = res.get("GIT_COMMIT")
                GIT_PREVIOUS_SUCCESSFUL_COMMIT = res.get("GIT_PREVIOUS_SUCCESSFUL_COMMIT")
            }
        }
        stage('停止当前模块,释放内存') {
            sh "supervisorctl stop ${CURRENT_JOB}"
        }
        stage('编译公共模块') {
            dir("/var/lib/jenkins/workspace/tttone") {
                //如果当前下拉的和上次构建成功的commit id不同,install common
                sh "echo GIT_COMMIT:${GIT_COMMIT}"
                sh "echo GIT_PREVIOUS_SUCCESSFUL_COMMIT:${GIT_PREVIOUS_SUCCESSFUL_COMMIT}"
                sh "echo CURRENT_JOB:${CURRENT_JOB}"
                if ("${GIT_PREVIOUS_SUCCESSFUL_COMMIT}" != "${GIT_COMMIT}") {
                    sh "mvn  clean install" //如果多个公共模块  就直接一键
                }
              //  sh "mvn -f commen clean install"  //如果只有一个commen 则用此方式
            }
        }
        stage('构建当前模块') {
            dir("/var/lib/jenkins/workspace/wisdom_credit") {
                sh "mvn -f ${CURRENT_JOB} clean compile install package  -Dmaven.test.skip=true " //-P dev  区分构建环境  -Dmaven.test.skip=true过滤测试用例
             //   sh "mvn  clean compile install package  "
            }
        }
        stage('移动至工作目录') {
            dir("/var/lib/jenkins/workspace/tttone") {
                sh "cp -f ./${CURRENT_JOB}/target/${CURRENT_JOB}.jar /mnt/sdc/project/tttServer/"
            }
        }
        stage('启动当前模块') {
            sh "supervisorctl restart ${CURRENT_JOB}"
           
        }
        stage('返回构建结果 ') {
         sh "supervisorctl status ${CURRENT_JOB}"
        }
    }

3.4supervisorctl文件配置(因为我用到了supervisorctl命令 所以需要配一些嘿嘿嘿命令)

  • 如下操作:

    #把最后一行的.ini改成.conf
    vi /etc/supervisor.conf 
    #在/etc/supervisor.d/下面新建一个文件管理jar服务
    vi /etc/supervisor.d/app.conf
    #先读取改了哪些配置
    supervisorctl reread
    #再更新 修改配置文件后要
    supervisorctl update

  • app.conf文件里的命令如下:注意:该文件编辑必须UTF-8格式 保存的时候选下编码格式为UTF-8!否则python可能不认!另外如果你是多个服务那你就复制粘贴搞多个 program。流水线也直接复制建多个。改完配置后记得更新!supervisorctl update!

    [program:ttt2]
    environment=JAVA_HOME=/home/java/jdk1.8.0_301/bin ;
    directory = /mnt/sdc/project/tttServer ; 程序的启动目录  就是jar文件的路径
    command = /home/java/jdk1.8.0_301/bin/java -jar -Xms1024m -Xmx1024m -Dspring.profiles.active=dev ttt2.jar ; 启动命令   jar的名字进项目pom文件可以配置
    autostart = true     ; 在 supervisord 启动的时候也自动启动
    startsecs = 3        ; 启动 30 秒后没有异常退出,就当作已经正常启动了
    autorestart = true   ; 程序异常退出后自动重启
    startretries = 3     ; 启动失败自动重试次数,默认是 3
    user = root          ; 用哪个用户启动
    redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
    stdout_logfile_maxbytes = 50MB  ; stdout 日志文件大小,默认 50MB
    stdout_logfile_backups = 5     ; stdout 日志文件备份数
    ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录
    stdout_logfile = /mnt/sdc/project/tttServer/logs/ttt2.log ;应用日志目录

3至此就OK了

image-20211209102904741

3流水线日志到这里看

image-20211209103108879

2web端部署项目

3先配置jenkins下载nodejs插件

配置全局工具,别名命令有用到,目录是服务器目录

 

3linux服务器下载nodejs

#建议下载比较新的
cd  /usr/local/
wget https://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xz
#解压
tar xf node-v12.18.1-linux-x64.tar.xz 
#需要创建软链接,以便全局使用
ln -s /usr/local/nodejs/bin/node /usr/bin/node
ln -s /usr/local/nodejs/bin/npm /usr/bin/npm
#完成校验
npm 或 node

3npm install 项目时会出现的问题

#查看下载镜像
npm config list
#切换成淘宝的下载镜像
npm config set registry https://r.npm.taobao.org
#npm清理缓存
npm cache clean -f
#我这边主要报错就是 用了ssh下载链接没权限啥的  改成https后就好了
#思路就是看日志 一句句看 错误描述的都比较清晰了
#切换下载方式  再npm install 成功
git config --global url."https://".insteadOf ssh://git@
#命令不好用:可以去B站看视频改这个 https
https://www.bilibili.com/video/bv1Vq4y1k71U

3jenkins构建自动部署

4创建流水线项目

4如图1:

image-20211222111332850

4如图2:

 

image-20211222111404816

4如图3

image-20211222111525615

4流水线脚本命令:

node{ 
     stage('环境输出') {
         sh "pwd"
         
     }
    stage('拉取代码') {
         checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '424--git用户凭证id--ebfc', url: 'http://47.1--git项目地址--web.git']]])
  }
    stage('打包,部署网站') { 
        dir("/var/lib/jenkins/workspace/项目名字/") {  #这个cd路径看项目架构  有可能你都不需要这步
            //使用NodeJS的npm进行打包 
        nodejs('node16'){ 
            sh '''npm install 
                  npm run build:prod '''   #这里构建 看你package.json文件的scripts是配置了哪些 dev等,,
        }
     }
      dir("/var/lib/jenkins/workspace/wi项目名字/") {
         sh "pwd"     
         sh "cp -rf ./dist/. /data/nginx/html/management"  #我这里是nginx配好的对外访问路径
      }
    } 
}

 4成功

image-20211222112112614

 

我自己的小破项目:bad-user-bad-video: 上传视频、分片上传、断点续传、秒传XX游戏外挂视频举报服务

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Jenkins自动部署前后端分离项目的过程,可以按照以下步骤进行操作: 1. 首先,下载好前端和后端的项目代码,并将其打包成war包。 2. 将war包部署服务器上,可以使用以下命令进行启动: ``` nohup java -jar jenkins.war > ../logs/jenkins.log 2>&1 & ``` 这样就可以在后台启动Jenkins。 3. 进入Jenkins的后台页面,通过在浏览器中输入Jenkins的URL地址来访问。 4. 在Jenkins后台页面中,可以创建一个新的任务来进行自动部署。例如,可以在任务配置中指定前端项目的代码仓库地址和构建脚本,以及后端项目的代码仓库地址和构建脚本。 5. 在Jenkins的任务配置中,可以设置触发器,例如每当有新的提交时自动触发构建。这样,当有新的代码提交到代码仓库时,Jenkins就会自动进行构建和部署。 6. 在Jenkins的任务配置中,可以设置构建步骤,例如编译前端项目、编译后端项目、打包、部署等。根据具体项目的需求,可以自定义构建步骤。 7. 完成任务配置后,保存并启动任务。Jenkins会根据配置的触发器自动进行构建和部署。 8. 在部署完成后,可以通过Tomcat等服务器来访问部署好的前后端分离项目。可以通过访问相应的URL地址来查看项目的运行情况。 综上所述,通过以上步骤,可以实现Jenkins自动部署前后端分离项目。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [jenkins一键部署前后端分离项目](https://blog.csdn.net/weixin_45880270/article/details/124308587)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Jenkins部署前后端分离项目最全图文教程(手把手教学)](https://blog.csdn.net/HJW_233/article/details/131816735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值