Jenkins安装部署与使用
一、Jenkins平台安装部署
Jenkins官网免费获取Jenkins软件,官网地址为:http://mirrors.jenkins-ci.org/下载稳定的Jenkins版本。由于Jenkins是基于Java开发的一种持续集成工具,所以Jenkins服务器需安装JAVA JDK开发软件。Jenkins平台搭建步骤如下:
1、下载安装JDK
- tar -xzf jdk1..0_131.tar.gz
- mkdir -p /usr/java
- mv jdk1..0_131 /usr/java
配置JAVA环境变量,/etc/profile配置文件中末尾加入如下代码:
- export JAVA_HOME=/usr/java/jdk1..0_131
- export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
- export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
执行代码source /etc/profile 使其环境变量,并查看环境变量
2、Tomcat 安装配置
- wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.30/bin/apache-tomcat-8.0.30.tar.gz
- tar -xzf apache-tomcat-8.0..tar.gz
- mv apache-tomcat-8.0. /usr/local/tomcat
3、Jenkins部署
Tomcat发布Jenkins,将Jenkins war拷贝至Tomcat默认发布目录,并使用jar工具解压,启动Tomcat服务即可:
- wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.89.2/jenkins.war
- rm -rf /usr/local/tomcat/webapps/*
- mkdir -p /usr/local/tomcat/webapps/ROOT/
- mv jenkins.war /usr/local/tomcat/webapps/ROOT/
- cd /usr/local/tomcat/webapps/ROOT/
- jar –xvf jenkins.war
rm -rf Jenkins.war- sh /usr/local/tomcat/bin/startup.sh
Jenkins部署默认admin密码文件:
cat /root/.jenkins/secrets/initialAdminPassword
登录后会出现如下界面:
可以修改,同时可以登陆WEB平台修改admin默认密码;
二、更新PHP门户网站
例子:企业需求,要求更新门户网站:http://vv2.jfedu.net/forum.php 原始的Logo图片,更新为最新的开发人员设计的Logo图片,更新的方法和步骤?
1)找到网站对应的Logo图片所在服务器的具体的位置,将新的Logo图片上传或者拷贝更新即可,从哪里开始去操作呢?
2)首先通过浏览器访问门户网站,并且找出Logo访问的原始URL地址:(F12、鼠标右键、查看属性)
http://vv2.jfedu.net/static/image/common/logo.png
通过图片访问的URL,可以确认图片服务器是通过vv2.jfedu.net域名-所在的服务器发布的;
3)第二步工作,通过其他客户端、机器命令行ping vv2.jfedu.net对应的服务器IP地址,确认服务器的IP地址(VIP)
4)通过服务器资产列表信息,找到服务器IP对应的用户名和密码,或者服务器网站是否有FTP服务可以上传更新代码(一般没有),通过XSHELL或者CRT远程登录服务器;
5)查找Logo.png图片文件所在的具体的路径,查找的方法有两种:
基于Find和Locate工具查找;(不推荐)
基于域名对应WEB服务器-主配置文件-虚拟主机-发布目录;
查找域名对应的WEB服务器软件,查找WEB网站是通过什么软件发布的?(确认vv2.jfedu.net是通过Nginx 80服务发布的)
netstat -tnlp|grep -w 80
6)查看80端口所在的进程ID,从而查找Nginx WEB软件网站目录&主配置文件绝对路径;
7)通过以上信息,确认默认网站、虚拟主机的配置文件均在domains虚拟主机目录下;(vv2.jfedu.net基于Nginx负载均衡+反向代理+动静分离)。
8)通过如上配置+127.0.0.1:80客户端主机,确认vv2.jfedu.net对应的发布目录:
/usr/local/nginx/html/vv2.jfedu.net(nginx除了转发和静态文件之外目录);
/usr/local/nginx/html/(静态文件|png结尾图片文件目录);
/var/www/html/(apache发布目录|动态文件路径)
9)通过如上发布目录+访问的URL,确认Logo.png最终路径:/usr/local/nginx/html/static/image/common/logo.png
10)如何更新Logo图片呢?通过FTP、RZ、winscp工具上传logo.png图片文件至服务器的临时目录/tmp/`date +%F`下;
1、Jenkins WEB平台,创建一个任务工程,命名为vv2.jfedu.net,配置为自由风格任务,。
2、点击工程-选择配置,指定SVN仓库地址(设置SVN用户名和密码)
第一次添加svn地址需要增加用户名密码,选择Add,类型选择为Username with password,并填写用户名和密码:
3、自动化更新网站,选择构建-选择Execute shell,输入更新命令。
4、保存工程,点击构建。
点击构建历史,查看构建历史。
三、Jenkins持续集成-发布JAVA网站代码
1、Jenkins服务器部署Maven软件工具&设置JDK和Maven工具路径,(否则无法进行),选择系统管理-全局工具配置
1)部署JDK
2)Jenkins服务器安装Maven
- wget
- http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
- tar -xzf apache-maven-3.3.-bin.tar.gz
- mv apache-maven-3.3. /usr/maven/
在web端添加maven工具
2、基于Jenkins WEB平台-创建JOB工程(Maven风格)
3、填写SVN|GIT仓库的URL访问地址(用于远程下载源代码):
源码管理,SVN代码迁出参数详解如下:
- Respository url 配置SVN仓库地址;
- Local module directory 存储SVN源码的路径;
- Ignore externals option 忽略额外参数;
- Check-out Strategy 代码检出策略;
- Repository browser 仓库浏览器,默认Auto;
- add more locations 源码管理,允许下载多个地址的代码;
- Repository depth 获取SVN源码的目录深度,默认为infinity;
- empty: 不检出项目的任何文件,files: 所有文件,immediates:目录第一级,infinity:整个目录所有文件。
5、配置Maven编译参数
BuildàGoals and optionsà输入“clean install -Dmaven.test.skip=true”,此处为maven自动编译、打包并跳过单元测试选项。
Maven工具常用命令如下:
- mvn clean 打包清理(删除target目录内容);
- mvn compile 编译项目;
- mvn package 打包发布;
- mvn package -Dmaven.test.skip=ture 打包时跳过测试。
7、将网站代码WAR拷贝或者部署至远程服务器,自动部署命令如下:
如上通过手动构建Jenkins JOB工程,自动编译、打包生成war包,并不能实现自动部署,如需要实现自动部署可以基于自动部署插件或者Shell脚本、Python脚本等。
如下以Shell脚本实现Jenkins自动部署war至其他多台服务器,并自动启动Tomcat,实现最终WEB浏览器访问。Jenkins自动部署完整操作步骤如下:
1)单击www.jfedu.net工程名à配置à构建后操作àAdd post-build stepàArchive the artifactsà用于存档的文件à输入:**/target/*.war,该选项主要用于Jenkins编译后会将war包存档一份到target目录,该文件可以通过Jenkins Tomcat的HTTP端口访问:
- ansible www-edu -m copy -a "src=/root/www-edu/apache-tomcat-8.0.50.tar.gz dest=/root/"
- ansible www-edu -m copy -a "src=/root/www-edu/jdk1.8.0_131.tar.gz dest=/root/"
- ansible www-edu -m shell -a "yum install -y tar gzip*"
- ansible www-edu -m shell -a "cd /root;tar -xf apache-tomcat-8.0.50.tar.gz"
- ansible www-edu -m shell -a "cd /root;tar -xf jdk1.8.0_131.tar.gz"
- ansible www-edu -m shell -a "cd /root;mkdir -p /usr/java/;mv jdk1.8.0_131 /usr/java/;mv apache-tomcat-8.0.50 /usr/local/tomca
- t/"
- ansible www-edu -m shell -a "sed -i '/JAVA_HOME/d;/CLASSPATH/d' /etc/profile"
- ansible www-edu -m shell -a "echo -e 'export JAVA_HOME=/usr/java/jdk1.8.0_131\nexport CLASSPATH=\$CLASSPATH:\$JAVA_HOME/lib:
- \$JAVA_HOME/jre/lib' >>/etc/profile"
- ansible www-edu -m shell -a "rm -rf /usr/local/tomcat/webapps/*;mkdir /usr/local/tomcat/webapps/ROOT"
- ansible www-edu -m copy -a "src=/root/.jenkins/workspace/www.jfedu.net/target/edu.war dest=/usr/local/tomcat/webapps/ROOT/"
- ansible www-edu -m shell -a "cd /usr/local/tomcat/webapps/ROOT;source /etc/profile ;\$JAVA_HOME/bin/jar -xf edu.war"
- ansible www-edu -m shell -a "source /etc/profile;set -m;/usr/local/tomcat/bin/shutdown.sh"
- ansible www-edu -m shell -a "source /etc/profile;sleep 2;set -m;/usr/local/tomcat/bin/startup.sh"
自己写的
- ansible tomcat -m copy -a "src=/usr/src/jdk1.8.0_131.tar.gz dest=/usr/src/"
- ansible tomcat -m copy -a "src=/usr/src/apache-tomcat-9.0.7.tar.gz dest=/usr/src/"
- ansible tomcat -m shell -a "cd /usr/src/;tar -zxf jdk1.8.0_131.tar.gz"
- ansible tomcat -m shell -a "cd /usr/src/;tar -zxf /usr/src/apache-tomcat-9.0.7.tar.gz"
- ansible tomcat -m shell -a "mkdir -p /usr/java/;mv /usr/src/jdk1.8.0_131 /usr/java/"
- ansible tomcat -m shell -a "mv /usr/src/apache-tomcat-9.0.7 /usr/local/tomcat"
- ansible tomcat -m shell -a "echo -e 'export JAVA_HOME=/usr/java/jdk1.8.0_131\nexport CLASSPATH=\$CLASSPATH:\$JAVA_HOME/lib:\$JAVA_HOME/jre/lib\nexport PATH=\$PATH:\$JAVA_HOME/bin:\$JAVA_HOME/jre/bin' >>/etc/profile"
- ansible tomcat -m shell -a "source /etc/profile"
- ansible tomcat -m shell -a "rm -rf /usr/local/tomcat/webapps/*;mkdir -p /usr/local/tomcat/webapps/ROOT"
- ansible tomcat -m copy -a "src=/root/.jenkins/workspace/www.jfedu.net/target/edu.war dest=/usr/local/tomcat/webapps/ROOT/"
- ansible tomcat -m shell -a "cd /usr/local/tomcat/webapps/ROOT/;source /etc/profile;/usr/java/jdk1.8.0_131/bin/jar -xf edu.war"
- ansible tomcat -m shell -a "source /etc/profile;sleep 2;set -m;/usr/local/tomcat/bin/startup.sh"
6、单击项目工程-立即构建-产生JAVA的WAR包;(自动化)
控制台日志打印“Finished: SUCCESS”,则表示Jenkins持续集成构建完成,会在Jenkins服务器目录www.jfedu.net工程名目录下生产网站可用的war文件,将该war包部署至其他服务器即可,war路径为:/root/.jenkins/workspace/www.jfedu.net/target/edu.war。
至此,Jenkins持续集成平台自动构建软件完成,该步骤只是生成了war包,并没有实现自动将该war包部署至其他服务器,如果要自动部署需要基于Jenkins插件或者基于Shell、Python等自动化部署脚本。
Jenkins安装部署与使用的更多相关文章
- Jenkins安装部署及使用
Jenkins安装部署环境如下 PS:中文官网,东西比较全.(居然有中文官网了,真好!)以下为本人自己的使用过程,仅供参考! 一.准备阶段 1.组件及版本: Jenkins版本:2.164.3 操作系 ...
- Jenkins安装部署项目
Jenkins安装部署项目 配置JDK git maven 部署到服务器 一.新建任务 二.配置jenkins 三.添加构建信息 四.应用.保存 五.踩坑填坑记录 5.1没有jar包的情况 5.2无法 ...
- Jenkins安装部署(一)
环境准备 CentOS Linux release 7.4 1.IP:192.168.43.129 2.路径:/mnt 3.jdk版本:jdk1.8.0 4.tomcat版本:tomcat-8.5 5 ...
- 【持续集成】jenkins安装部署从git获取代码
一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部署Continuous Deployment 1. ...
- 持续集成工具之Jenkins安装部署
一.DevOps理念 所谓DevOps是指development和Operations的组合,中文意思就是开发和运维的简写.devops理念主要是针对企业中的研发人员.运维人员和测试人员的工作理念,是 ...
- Jenkins——安装部署
1.部署Jdk 由于jenkins需要jdk环境,所以先部署jdk,解压并设置环境变量就行: # tar zxf jdk-8u45-linux-x64.tar.gz # mv jdk-8u45-lin ...
- 教你搞懂Jenkins安装部署!
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用 ...
- Jenkins安装部署使用图文详解(非常详细)
前言 最近公司需要弄一套自动化运维部署,于是抽空学习了一下,用了两天左右完成Jenkins的安装部署和各种项目的配置化,于是整理一下进行分享. 介绍 Jenkins是一个独立的开源软件项目,是基于Ja ...
- DevOps实践之Jenkins安装部署
Prerequisites Minimum hardware requirements: 256 MB of RAM 1 GB of drive space (although 10 GB is a ...
随机推荐
- nodeJs学习-13 router
const express=require('express'); var server=express(); //目录1:/user/ var routeUser=express.Router(); ...
- poj3294 后缀数组
后缀数组多个字符串问题. 先求出height[]数组,然后二分求最大的长度. 但是条件需要改变.如果出现次数大于一般那就满足.然后就要解决如何判断那一段属于其中一个字符串. 所以先处理出长度.并且不断 ...
- 预警| Confluence 高危漏洞被大规模利用,阿里云WAF接入即可防护,支持免费应急服务
2019年4月4日,阿里云安全应急响应中心监测到Confluence 官方发布安全更新指出,Widget Connector 存在服务端模板注入漏洞,攻击者能利用此漏洞实现目录穿越遍历甚至远程命令执行 ...
- day10-04_多线程常用属性方法
一.需要了解的方法 Thread实例对象的方法 # isAlive(): 判断这个线程是否是存活的 # getName(): 获取线程名 # setName(): 设置线程名 #enumerate() ...
- 最优化WPF 3D性能(基于“Tier-2”硬件)
原文:最优化WPF 3D性能(基于"Tier-2"硬件) 原文地址:Maximizing WPF 3D Performance on Tier-2 Hardware 开发人员在应用 ...
- intellij idea怎么设置java帮助文档
打开idea我引用的jar包都放在 Project Structure-->Modules-->libs文件夹(双击) 双击jar包所在文件夹,跳出对话框. 1.如果api对应的javad ...
- Python基础:25文件
一:文件对象 文件对象不仅可以用来访问普通的磁盘文件, 而且也可以访问任何其它类型抽象层面上的"文件". 一旦设置了合适的"钩子", 你就可以访问具有文件类型接 ...
- Educational Codeforces Round 12 B C题、
B. Shopping 题意:n个顾客,每个顾客要买m个物品,商场总共有k个物品,看hint就只知道pos(x)怎么算了,对于每一个Aij在k个物品中找到Aij的位置.然后加上这个位置对于的数值,然后 ...
- jieba gensim 相似度实现
博客引自:https://www.cnblogs.com//DragonFire/p/9220523.html 简单的问答已经实现了,那么问题也跟着出现了,我不能确定问题一定是"你叫什么名字 ...
- nano使用说明
Main nano help text The nano editor is designed to emulate 仿真.模拟 the functionality and ease-of-use o ...