【个人博客项目】使用Jenkins简单的搭建一下

目录标题

  • 前言
  • 安装JDK1.8、Git、Maven
  • 安装Tomcat
    • 修改tomcat8相关配置
  • 安装Jenkins

前言

为了学习一下工作中常用到的jenkins,于是挑了个最简单的模式动手操作了一遍。

环境->阿里云服务器:CentOS7.0
https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=pvezicr7
项目->网上找一个可在本地跑的Maven项目

安装JDK1.8、Git、Maven

已经安装的同学请忽略
JDK1.8请移步:https://www.cnblogs.com/zs-notes/p/8535275.html
Git请移步:http://weibingsheng.cn/blog/index.php/home/index/read.html?id=285
Maven请移步:https://www.cnblogs.com/jimisun/p/8054819.html
注意:配置JDK和Maven的环境变量

安装Tomcat

已经安装的同学请忽略

以下操作命令都在根目录执行
下载tomcat安装包:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.4/bin/apache-tomcat-8.5.4.tar.gz

解压安装包:
tar -zxvf apache-tomcat-8.5.4.tar.gz

在根目录下执行(local目录中创建tomcat目录):
mkdir /usr/local/tomcat

将tomcat相关文件移动到创建的tomcat目录:
mv apache-tomcat-8.5.4/* /usr/local/tomcat

启动Tomcat:
cd /usr/local/tomcat/bin           //进入bin目录下:
./startup.sh                              //启动tomcat
./shutdown.sh                         //关闭tomcat

修改tomcat8相关配置

修改tomcat-users.xml文件:
vi /usr/local/tomcat/apache-tomcat-8.5.4/conf/tomcat-users.xml

主要为了jenkins通过maven实现tomcat下热部署所做的配置,我们知道tomcat manager可以在不停止tomcat的情况实现war的部署。这样,在jenkins中项目通过Maven打包后直接放在tomcat的webapps目录下后tomcat就会自动发布。
配置role和user是的maven可以获得操作tomcat的权限,修改tomcat的tomcat-users.xml文件,添加如下配置:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

这里配置的username,password在jenkins中会用到

然后开放manager访问权限(这一步一定不能少,不然会报权限错误):
【权限错误:org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: 
           The username you provided is not allowed to use the text-based】

修改webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >

 <!--注释掉这里-->
 <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

安装Jenkins

jenkins可以直接下载运行;也可以只下载war包格式,然后放到tomcat的webapps中启动;jenkins本来就是一个webApp。

这里我下载了可以直接运行的jenkins。

$ yum install yum-fastestmirror -y  #安装自动选择最快源的插件
#添加Jenkins源:
$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo
$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
$ yum install jenkins               #安装jenkins

启动方式:
$ sudo service jenkins start

访问方式:
浏览器输入http://你服务器的公网ip:8080/

tomcat和jenkins的端口如果冲突就选择其中一个修改端口
Jenkins如果要更改配置(端口):
$ vim /etc/sysconfig/jenkins
$ sudo service jenkins restart

修改端口

然后我们在浏览器输入http://你服务器的公网ip:8080/后便可以访问自己的jenkins了,当您第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁。

根据上面提示在linux的根目录下执行

cat  /var/jenkins_home/secrets/initialAdminPassword

找到密码后,直接复制到输入框中,点击继续,进入一下界面,证明解锁成功


点击推荐安装(install suggested plugins)即可,如果安装失败可以跳过,之后再在jenkins管理界面手动安装就行。

下载完成后会让创建一个管理员用户,需要设置用户名、密码等。默认配置即可。管理员相关配置完成后,需要重启,点击重启。

浏览器再次输入你的服务器IP:8080,便可进入到登录页,输入上面设置的管理员用户名和密码即可登录到管理后台。

登陆界面

手动安装需要的插件(maven和热部署),进入到管理后台后
点击系统管理->插件管理->可选插件
过滤搜索框输入Maven Integration来搜索Maven Integration插件。

过滤搜索框输入Maven Integration来搜索Maven Integration插件。
点击直接安装(install without restart)。下面搜索并安装热部署插件Deploy to container,安装完这俩插件了,需要重启jenkins。
注意:可以自行去查一下jenkins启动Maven常用的插件安装,这里就不赘述了

进入jenkins管理后台配置jdk、maven、git
进入到管理后台后,点击系统管理->全局工具管理

配置git,由于git在linux下安装还需要其他的依赖库,在容器内安装这些比较麻烦,所以这里直接让jenkins自行安装。勾选自动安装单选框。

创建一个maven项目并实现自动化部署
条件:maven类型的、github上的Web项目;已经启动的tomcat8的应用服务器。
注意:若在同一台服务器上tomcat8和jenkins的端口冲突

jenkins创建maven任务,点击新建任务,进入创建界面。

进入配置界面:首先配置general,勾选github。并填写github上项目地址。

构建后操作:配置maven生成war信息、上下文及web容器信息、Credentials 和tomcat Url。

WAR/EAR files选择你需要部署的war包在工作空间下的**相对路径**
Context path意为发布到目标tomcat的webapp后的文件夹名字
Credentials 需要先添加一个用户,点击添加,用户名和密码是tomcat_user.xml中配置的
Tomcat URL 就是你需要连接的tomcat地址和端口号

到此配置基本完成,点击应用,保存。
手动构建,测试下:进入到已经创建的任务界面,点击立即构建。点击左下角的 build history 查看控制台日志(console Output)。第一次构建会有点慢,需要等一会儿。

注意点:项目中的数据库是连接的本地的话就需要换掉,如果用远程服务器的数据库记得远程授权。

如果报了类似这样的错误:the Tomcat Manager responded "FAIL - " instead of the expected "OK" message
那就要去tomcat中查看下报错,可以能是项目报错了。
例如:# [java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect to database in eclipse [closed]](https://stackoverflow.com/questions/11869697/java-sql-sqlexception-access-denied-for-user-rootlocalhost-using-password)
就需要用一个能够远程访问的数据库了。

以上笔记只作为一个基础来看,若有错误还请指正,后面还有很多扩展的内容要学习,比如:不同场景下jenkins的配置、Maven打包时对于dev,uat等环境下的自定义操作、手写shell脚本等等。。。路漫漫其修远兮。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/455971.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI-线性回归模型

线性回归应用场景 房价预测&#xff0c;通过分析房地产市场的历史数据&#xff0c;如房屋大小、位置、建造年份等因素&#xff0c;线性回归可以帮助预测未来房价的走势。 销售额预测&#xff0c;企业可以利用线性回归模型来预测产品的销售额&#xff0c;这通常涉及到产品价格、…

爆料!游戏圈内幕揭秘(下)

游戏产业规模日益扩大&#xff0c;影响力不断提高&#xff0c;已成为全球最活跃和潜力巨大的经济板块之一。作为一项新兴产业&#xff0c;游戏开发行业前景广阔&#xff0c;机遇与挑战并存。对即将出社会的同学来说&#xff0c;要想在这个竞争激烈又日新月异的行业中找到属于自…

C++第四弹---类与对象(一)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 类与对象 1、面向过程和面向对象初步认识 2、类的引入 3、类的定义 4、类的访问限定符及封装 4.1、访问限定符 4.2、封装 5、类的作用域 6、类的…

WebP格式图像:起源、优势、兼容性及在线压缩方法

关于作者&#xff1a; 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0…

第四百回 channel

文章目录 1. 知识回顾2. 示例代码3. 经验总结 我们在上一章回中介绍了MethodChannel的使用方法&#xff0c;本章回中将介绍EventChannel的使用方法.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 知识回顾 我们在前面章回中介绍了通道的概念和作用&#xff0c;并且提到了…

数字生活的未来:探索Web3的全新世界

随着科技的飞速发展&#xff0c;我们正迈向一个数字化的未来。而在这个数字化的时代&#xff0c;Web3技术的崛起正引领着我们进入一个全新的世界。本文将深入探讨Web3技术的特点以及它给我们带来的全新体验。 1. 去中心化的特点 Web3的去中心化是其最显著的特点之一&#xff0…

若依Cloud项目配合nacos进行多环境profile的配置

1、前言 最近做的用若依改造的一个项目要把里面的配置挪到nacos的配置中心&#xff0c;之前用过apollo做配置中心&#xff0c;nacos用的很少&#xff0c;而且是自己从头做的那种&#xff0c;而自己想要实现的效果是本地启动和到测试&#xff0c;预发&#xff0c;生产环境启动的…

如何在Linux Archcraft中配置SSH服务并结合内网穿透实现远程连接

文章目录 1. 本地SSH连接测试2. Archcraft安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接小结 5. 固定SSH公网地址6. SSH固定地址连接 Archcraft是一个基于Arch Linux的Linux发行版&#xff0c;它使用最简主义的窗口管理器而不是功能齐全的桌面环境来提供图形化用户界面。 C…

标准砂轮加工麻花钻或者铣刀螺旋槽齿形

螺旋槽与砂轮的空间位置运动关系可用下图表示&#xff0c;螺旋槽的形成靠工件绕轴线的旋转以及砂轮沿轴线的移动来完成的&#xff0c;以下坐标系可以清楚的描述二者之间的运动关系&#xff1a; 砂轮的形状如下&#xff1a; 经过坐标变换和下面这个重要的公式来计算工件的齿形…

JAVA初阶数据结构(链表)练习(这些可以作为java包中的方法)

这里的每一个题大家都要仔细完成&#xff0c;这些题目每个我都至少思考了两个小时左右&#xff08;沉重心&#xff0c;慢慢来&#xff09; 1.反向链表的实现&#xff08;对链表进行翻转&#xff09;&#xff08;力扣有&#xff09; &#xff08;1&#xff09;图示 &#xff0…

MADQN:多代理合作强化学习

处理单一任务是强化学习的基础&#xff0c;它的目标是在不确定的环境中采取最佳行动&#xff0c;产生相对于任务的最大长期回报。但是在多代理强化学习中&#xff0c;因为存在多个代理&#xff0c;所以代理之间的关系可以是合作的&#xff0c;也可以是对抗&#xff0c;或者两者…

java组合模式揭秘:如何构建可扩展的树形结构

组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构以表示整体/部分层次结构。组合模式使得客户端可以统一对待单个对象和组合对象&#xff0c;从而使得客户端可以处理更复杂的结构。 组合模式的主要组成部分包括&…

C#构造函数

C#中的构造函数是一种特殊的方法&#xff0c;用于创建和初始化类的对象。构造函数的名称与类的名称相同&#xff0c;并且没有返回类型。 在C#中&#xff0c;构造函数有以下几种类型&#xff1a; 默认构造函数&#xff1a;如果在类中没有定义构造函数&#xff0c;系统将自动提供…

基于java+springboot+vue实现的小区物业管理系统(文末源码+Lw+ppt)23-34

摘 要 随着互联网时代的发展&#xff0c;传统的线下管理技术已无法高效、便捷的管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;在人们生活环境要求不断提高的前提下&#xff0c;小区物业管理系统建设也逐渐进入了…

2001-2022年上市公司数字化转型程度指数测算数据(含原始数据+测算代码+计算结果)(无形资产衡量)

2001-2022年上市公司数字化转型程度指数测算数据&#xff08;含原始数据测算代码计算结果&#xff09; 1、时间&#xff1a;2001-2022年 2、指标&#xff1a;证券代码、证券简称、统计截止日期、是否发生ST或*ST或PT、、是否发生暂停上市、行业代码、行业名称、stkcd、year、…

【Python】成功解决NameError: name ‘plt‘ is not defined

【Python】成功解决NameError: name ‘plt’ is not defined &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您…

【PHP安全】PHP伪协议

PHP伪协议&#xff1a; file:// #访问本地文件系统http:// #访问HTTPs网址ftp:// #访问ftp URLphp:// #访问输入输出流zlib:// #压缩流data:// #数据&#xff08;RFC 2397&#xff09;ssh2:// #security shell2expect:// #处理交互式的流glob:// #查找匹配的文件路径phar:// #P…

【MySQL性能优化】- 一文了解MVCC机制

MySQL理解MVCC &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 博客首页 怒放吧德德 To记录领地 &#x1f31d;分享学习心得&#xff0c;欢迎指正&#xff…

打卡学习kubernetes——kubernetes架构原理

接上一篇的内容&#xff0c;除了核心组件&#xff0c;还有一些推荐的Add-ons&#xff1a; kube-dns 负责为整个集群提供DNS服务Ingress Controller 为服务提供外网入口Heapster 提供资源监控&#xff08;没用过这个&#xff0c;但是用过grafana&#xff0c;很方便&#xf…

5.Python从入门到精通—Python 运算符

5.Python从入门到精通—Python 运算符 Python 运算符算术运算符比较&#xff08;关系&#xff09;运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级 Python 运算符 Python语言支持以下类型的运算符: 算术运算符比较&#xff08;关系&#xff09;运算符赋…