Tomcat和Jenkins
1. tomcat简介
-
tomcat是一个中间件,中间件:两者之间
-
Tomcat是个容器,是一个容纳Java程序的器皿
-
Tomcat是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。
-
Tomcat 技术先进、性能稳定,而且免费
-
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序(Java程序开发的网站)的首选。
-
还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式
-
Tomcat处理静态HTML的能力不如Apache服务器
1.1 tomcat
-
tomcat是中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中。
-
tomcat本身的运行也依赖于jdk环境
-
jdk:是Java运行环境加上一些开发工具包
-
tomcat应用场景:
lnmt
2. tomcat项目部署
2.1 java环境安装
-
oraclejdk网址
-
openjdk
[root@node6 ~]# dnf -y install java-17-openjdk*
[root@node6 ~]# java -version
openjdk version "17.0.1" 2021-10-19 LTS
OpenJDK Runtime Environment 21.9 (build 17.0.1+12-LTS)
OpenJDK 64-Bit Server VM 21.9 (build 17.0.1+12-LTS, mixed mode, sharing)
[root@node6 ~]#
2.2 tomcat部署
[root@node6 ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
2.3 部署
[root@node6 ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.65.tar.gz
[root@node6 ~]# tar xf apache-tomcat-9.0.65.tar.gz -C /usr/local/
[root@node6 ~]# cd /usr/local/
[root@node6 local]# mv apache-tomcat-9.0.65 tomcat
[root@node6 local]# ls
bin games lib libexec share tomcat
etc include lib64 sbin src
[root@node6 local]# cd tomcat/
[root@node6 tomcat]# ls
BUILDING.txt NOTICE RUNNING.txt lib webapps
CONTRIBUTING.md README.md bin logs work
LICENSE RELEASE-NOTES conf temp
生成网页文件
[root@node6 tomcat]# cd webapps/
[root@node6 webapps]# ls
ROOT docs examples host-manager manager
[root@node6 webapps]# mkdir test
[root@node6 webapps]# cd test
[root@node6 test]#
[root@node6 test]# vim index.jsp
[root@node6 test]# cat index.jsp
<html>
<head>
<title>mushuang</title>
</head>
<body>
<%
out.println("Hellow World");
%>
</body>
</html>
[root@node6 test]#
2.3.1 启动
[root@node6 ~]# echo 'export PATH=/usr/local/tomcat/bin:$PATH' > /etc/profile.d/tomcat.sh
[root@node6 ~]# source /etc/profile.d/tomcat.sh
[root@node6 ~]# source /etc/profile.d/tomcat.sh
[root@node6 ~]# catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@node6 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@node6 ~]#
[root@node6 ~]# ps -ef|grep tomcat
root 293512 1 7 16:09 pts/0 00:00:02 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 296379 1664 0 16:10 pts/0 00:00:00 grep --color=auto tomcat
[root@node6 ~]#
2.3.2 访问
关闭防火墙
[root@node6 ~]# systemctl disable --now firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@node6 ~]# vim /etc/selinux/config
[root@node6 ~]# setenforce 0
3. 配置文件
1. 介绍tomcat文件
[root@node6 bin]# pwd
/usr/local/tomcat/bin
[root@node6 bin]# ls
bootstrap.jar makebase.sh
catalina-tasks.xml setclasspath.bat
catalina.bat setclasspath.sh
catalina.sh //总控开关 shutdown.bat
ciphers.bat shutdown.sh //停止服务
ciphers.sh startup.bat
commons-daemon-native.tar.gz startup.sh //启动服务
commons-daemon.jar //守护进程 tomcat-juli.jar
configtest.bat tomcat-native.tar.gz
configtest.sh //配置文件检查 tool-wrapper.bat
daemon.sh //以守护进程方式运行 tool-wrapper.sh
digest.bat version.bat
digest.sh version.sh 查看版本
makebase.bat
[root@node6 bin]#
tomcat不用做环境变量,有可能部署多个tomcat
查看日志
[root@node6 tomcat]# ls
BUILDING.txt NOTICE RUNNING.txt lib webapps
CONTRIBUTING.md README.md bin logs work
LICENSE RELEASE-NOTES conf temp
[root@node6 tomcat]# cd logs/
[root@node6 logs]# ls
catalina.2022-08-17.log
catalina.out //查看日志位置
host-manager.2022-08-17.log
localhost.2022-08-17.log
localhost_access_log.2022-08-17.txt
manager.2022-08-17.log
[root@node6 logs]#
安全删除文件temp/
[root@node6 tomcat]# ls temp/
safeToDelete.tmp
[root@node6 tomcat]#
工作目录
[root@node6 tomcat]# ls work/
Catalina
[root@node6 tomcat]# ls work/Catalina/localhost/
ROOT docs examples host-manager manager test
[root@node6 tomcat]#
日志记录参数
[root@node6 conf]# ls logging.properties
默认代码,示例
网站位置:
http://192.168.232.134:8080/examples/jsp/
2. 修改配置文件
[root@node6 tomcat]# cd conf/
[root@node6 conf]# ls
Catalina jaspic-providers.xml tomcat-users.xml
catalina.policy jaspic-providers.xsd tomcat-users.xsd
catalina.properties logging.properties web.xml
context.xml server.xml
[root@node6 conf]# vim server.xml
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
使配置文件生效
[root@node6 ~]# catalina.sh stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@node6 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@node6 ~]# ps -ef|grep tomcat
root 418331 1664 0 16:39 pts/0 00:00:00 grep --color=auto tomcat
[root@node6 ~]#
[root@node6 ~]# catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@node6 ~]# ps -ef|grep tomcat
root 422471 1 96 16:40 pts/0 00:00:02 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 422723 1664 0 16:40 pts/0 00:00:00 grep --color=auto tomcat
[root@node6 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 [::1]:8009 [::]:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@node6 ~]#
3. 介绍网站页面
- 查看服务器状态
- 出现403拒绝访问
- 解决
[root@node6 webapps]# cd ../conf/
[root@node6 conf]# vim tomcat-users.xml
加两行:
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
</tomcat-users>
关闭在启动
[root@node6 ~]# catalina.sh stop
[root@node6 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@node6 ~]# ps -ef|grep tomcat
root 543569 1664 0 17:10 pts/0 00:00:00 grep --color=auto tomcat
[root@node6 ~]#
[root@node6 ~]# catalina.sh start
[root@node6 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 [::1]:8009 [::]:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@node6 ~]# ps -ef|grep tomcat
root 544653 1 8 17:10 pts/0 00:00:02 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 546788 1664 0 17:10 pts/0 00:00:00 grep --color=auto tomcat
[root@node6 ~]#
- 没有访问成功,修改限制,改成可以在网页访问
[root@node6 ~]# cd /usr/local/tomcat/webapps/
[root@node6 webapps]# ls
ROOT docs examples host-manager manager test
[root@node6 webapps]# cd manager/
[root@node6 manager]# ls
META-INF WEB-INF css images index.jsp status.xsd xform.xsl
[root@node6 manager]# ls META-INF/
context.xml
[root@node6 manager]# vim META-INF/context.xml
[root@node6 manager]# tail META-INF/context.xml
See the License for the specific language governing permissions and
limitations under the License.
-->
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.232\.\d+|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>
[root@node6 manager]#
- 访问
-
heap memory 堆内存 non -heap memory 非堆内存
-
应用程序列表跟/usr/local/tomcat/webapps相对应
- 管理主机 host manager
- 修改
[root@node6 tomcat]# cd conf/
[root@node6 conf]# ls
Catalina jaspic-providers.xml tomcat-users.xml
catalina.policy jaspic-providers.xsd tomcat-users.xsd
catalina.properties logging.properties web.xml
context.xml server.xml
[root@node6 conf]# vim tomcat-users.xml
<role rolename="manager-gui"/> //添加此行
<role rolename="admin-gui"/> //添加此行
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/> //添加此行
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
</tomcat-users>
重启
[root@node6 ~]# catalina.sh stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@node6 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@node6 ~]# ps -ef|grep tomcat
root 665375 1664 0 17:39 pts/0 00:00:00 grep --color=auto tomcat
[root@node6 ~]#
[root@node6 ~]# catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@node6 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 [::1]:8009 [::]:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@node6 ~]#
[root@node6 tomcat]# cd webapps/host-manager/
[root@node6 host-manager]# ls
META-INF WEB-INF css images index.jsp
[root@node6 host-manager]# vim META-INF/context.xml
[root@node6 host-manager]# tail META-INF/context.xml
See the License for the specific language governing permissions and
limitations under the License.
-->
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.232\.\d+|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>
[root@node6 host-manager]#
- 访问
4. jenkins
1. 介绍jenkins
-
jenkins 持续集成工具
-
jenkins是一个用 Java 编写的开源自动化软件项目。
-
是基于Java开发的一种持续集成工具,用于监控持续重复的工作。
-
Jenkins 用于持续构建和测试软件项目 ,集成了各种开发生命周期过程,包括构建、文档、测试、打包、模拟、部署、静态分析等等。”
-
是一个打包,流程控制软件
-
java代码:使用开发工具(eclipse)打包
2. jenkins网址
软件位置:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.346.3/jenkins.war
[root@node6 ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.65.tar.gz jenkins.war
[root@node6 ~]#
3. 部署jenkins
[root@node6 ~]# cd /usr/local/tomcat/webapps/
[root@node6 webapps]# ls
ROOT docs examples host-manager manager test
[root@node6 webapps]# mv * /opt/
[root@node6 webapps]#
[root@node6 ~]# cp jenkins.war /usr/local/tomcat/webapps/
[root@node6 webapps]# ls
jenkins.war
重启之后
[root@node6 webapps]# ls
jenkins.war
[root@node6 webapps]# ls
jenkins jenkins.war
[root@node6 webapps]#
- 查看
- 登录
[root@node6 ~]# cat /root/.jenkins/secrets/initialAdminPassword
309ece77ccfe4dee9c891e0a43189a0f
- 安装插件
- 填写资料
- 访问成功
- 查看用户列表
-
构建历史:发布版本等的记录
-
系统管理
- 工作目录
[root@node6 ~]# cd .jenkins/
[root@node6 .jenkins]# ls
config.xml
hudson.model.UpdateCenter.xml
hudson.plugins.emailext.ExtendedEmailPublisher.xml
hudson.plugins.git.GitTool.xml
identity.key.enc
jenkins.install.InstallUtil.lastExecVersion
jenkins.install.UpgradeWizard.state
jenkins.model.JenkinsLocationConfiguration.xml
jenkins.telemetry.Correlator.xml
jobs
nodeMonitors.xml
nodes
plugins
queue.xml.bak
secret.key
secret.key.not-so-secret
secrets
updates
userContent
users
[root@node6 .jenkins]#
- 绑定任务
- 邮箱
5. 拉取代码
[root@node6 ~]# dnf -y install git
[root@node6 ~]# git clone https://github.com/chendao2015/tomcat-java-demo.git
Cloning into 'tomcat-java-demo'...
remote: Enumerating objects: 549, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 549 (delta 0), reused 2 (delta 0), pack-reused 546
Receiving objects: 100% (549/549), 5.08 MiB | 1018.00 KiB/s, done.
Resolving deltas: 100% (213/213), done.
[root@node6 ~]# ls
anaconda-ks.cfg jenkins.war
apache-tomcat-9.0.65.tar.gz tomcat-java-demo
[root@node6 ~]# cd tomcat-java-demo/
[root@node6 tomcat-java-demo]# ls
Dockerfile LICENSE README.md db pom.xml src
[root@node6 tomcat-java-demo]#
6. 程序打包工具
1. maven
- 例名字叫pom.xml
- maven是一个java编写的工具(需要安装配置),用来服务项目开发中常用的编译打包等功能。为了实现其功能,maven定义了项目的目录格式(最重要的配置文件pom.xml),定义了一些概念,坐标,依赖,仓库,生命周期(可以使用mvn命令指定执行哪些周期),插件
2. ant
- ant 是一个由java编写的脚本工具,常用来进行打包web项目,安卓项目等。适合自动化远程部署。
3. gradle
- gradle是一个自动化构建工具。 gradle是通过组织一系列task来最终完成自动化构建的,所以task是gradle里最重要的概念。以生成一个可用的apk为例,整个过程要经过资源的处理,javac编译,dex打包
- gradle使用groovy或者kotlin编写。 groovy是DSL。DSL也就是Domain Specific Language的简称,也就是领域特定语言,是为了解决某一类任务专门设计的计算机语言
- 无论是基于groovy还是kotlin编写,均是基于jvm的语言。
7. 部署项目
1. 构建测试任务
-
先测试
- 测试成功
- 点击测试的任务,回放
- 查看视图
2. 任务
- 生成流水线语法
- 语法
- 构建流水线脚本
pipeline {
agent any
stages {
stage("pull code"){
steps {
git 'https://github.com/chendao2015/tomcat-java-demo.git'
}
}
stage("make pkg"){
steps {
sh """
mvn clean package -Dmaven.test.skip=true
"""
}
}
}
}
- 拉取和打包成功
- 发布项目脚本并运行
pipeline {
agent any
stages {
stage("pull code"){
steps {
git 'https://github.com/chendao2015/tomcat-java-demo.git'
}
}
stage("make pkg"){
steps {
sh """
mvn clean package -Dmaven.test.skip=true
"""
}
}
stage("publish"){
steps {
sh """
scp target/ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.232.134:/usr/local/tomcat/webapps/
ssh root@192.168.232.134 "/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start"
"""
}
}
}
}
- 查看
[root@node6 ~]# cd /usr/local/tomcat/webapps/
[root@node6 webapps]# ls
jenkins ly-simple-tomcat-0.0.1-SNAPSHOT
jenkins.war ly-simple-tomcat-0.0.1-SNAPSHOT.war
[root@node6 webapps]# cd ly-simple-tomcat-0.0.1-SNAPSHOT
[root@node6 ly-simple-tomcat-0.0.1-SNAPSHOT]# ls
META-INF WEB-INF
[root@node6 ly-simple-tomcat-0.0.1-SNAPSHOT]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 50 *:39497 *:*
LISTEN 0 100 [::1]:8009 [::]:*
LISTEN 0 100 *:8080 *:*
[root@node6 ly-simple-tomcat-0.0.1-SNAPSHOT]#
- 手动拉取代码
[root@node6 ~]# dnf -y install maven
[root@node6 tomcat-java-demo]# mvn clean package -Dmaven.test.skip=true
省略
[INFO] Packaging webapp
[INFO] Assembling webapp [ly-simple-tomcat] in [/root/tomcat-java-demo/target/ly-simple-tomcat-0.0.1-SNAPSHOT]
[INFO] Processing war project
[INFO] Webapp assembled in [204 msecs]
[INFO] Building war: /root/tomcat-java-demo/target/ly-simple-tomcat-0.0.1-SNAPSHOT.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 07:10 min
[INFO] Finished at: 2022-08-18T19:52:08+08:00
[INFO] ------------------------------------------------------------------------
[root@node6 tomcat-java-demo]#
[root@node6 tomcat-java-demo]# ls
Dockerfile LICENSE README.md db pom.xml src target
[root@node6 tomcat-java-demo]# ls target/
classes
generated-sources
ly-simple-tomcat-0.0.1-SNAPSHOT
ly-simple-tomcat-0.0.1-SNAPSHOT.war
maven-archiver
maven-status
[root@node6 tomcat-java-demo]#
配置免密登录
[root@node6 ~]# ssh-keygen -t rsa
[root@node6 ~]# ssh-copy-id root@192.168.232.134
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.232.134 (192.168.232.134)' can't be established.
ECDSA key fingerprint is SHA256:M1b2g+JiBYTV1/uwaYF30TTWZ6NLYfm9LNKrK7+IF9g.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.232.134's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.232.134'"
and check to make sure that only the key(s) you wanted were added.
[root@node6 ~]#
- 安装插件
3. 优化
3.1 环境
系统平台 | IP | 主机名 |
---|---|---|
red8.5 | 192.168.232.134 | node6 |
red8.5 | 192.168.232.128 | node7 |
-
node6 部署Tomcat跟 Jenkins
-
node7 部署Tomcat,部署省略
-
node6打完包传给node7,在node7上访问项目
-
脚本
pipeline {
agent any
stages {
stage("pull code"){
steps {
git 'https://github.com/chendao2015/tomcat-java-demo.git'
}
}
stage("make pkg"){
steps {
sh """
mvn clean package -Dmaven.test.skip=true
"""
}
}
stage("publish"){
steps {
sh """
scp target/ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.232.128:/usr/local/tomcat/webapps/
ssh root@192.168.232.128 "/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start"
"""
}
}
}
}
- 运行
- 使用192.168.232.128访问访问
[root@node7 webapps]# pwd
/usr/local/tomcat/webapps
[root@node7 webapps]# ls
ly-simple-tomcat-0.0.1-SNAPSHOT
ly-simple-tomcat-0.0.1-SNAPSHOT.war
[root@node7 webapps]#
8. 部署另一个项目
1. 环境
系统平台 | IP | 主机名 |
---|---|---|
red8.5 | 192.168.232.134 | node6 |
red8.5 | 192.168.232.128 | node7 |
-
node6 部署Tomcat跟 Jenkins
-
node7 部署Tomcat,部署省略
-
node6打完包传给node7,在node7上访问项目
2. 在node6操作
- 拉取项目
root@node6 ~]# cp jenkins.war /usr/local/tomcat/webapps/
[root@node6 ~]# cd /usr/local/tomcat/webapps/
[root@node6 webapps]# ls
jenkins jenkins.war
[root@node6 webapps]#
拉取项目并打包
[root@node6 ~]# git clone https://gitee.com/wukongcrm/72crm-java.git
[root@node6 ~]# ls
72crm-java jenkins-cli.jar
anaconda-ks.cfg jenkins.war
apache-tomcat-9.0.65.tar.gz tomcat-java-demo
[root@node6 ~]#
[root@node6 ~]# cd 72crm-java/
[root@node6 72crm-java]# mvn clean package -Dmaven.test.skip=true
[root@node6 72crm-java]# ls target/
ROOT.jar classes crm9-release.zip maven-archiver
archive-tmp crm9-release generated-sources maven-status
- 生成流水线脚本
- 配置免密登录
[root@node6 webapps]# ssh-copy-id root@192.168.232.128
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.232.128 (192.168.232.128)' can't be established.
ECDSA key fingerprint is SHA256:Blx3FlbkuzuEWE0fW0IcvAT1vM9oBVG/LrPyW+M99Es.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.232.128's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.232.128'"
and check to make sure that only the key(s) you wanted were added.
[root@node6 webapps]#
[root@node6 webapps]# ssh root@192.168.232.128
Last failed login: Thu Aug 18 23:15:01 CST 2022 from 192.168.232.134 on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Thu Aug 18 22:40:03 2022 from 192.168.232.1
[root@node7 ~]# exit
logout
Connection to 192.168.232.128 closed.
[root@node6 webapps]#
- 拉取代码和打包脚本
pipeline {
agent any
stages {
stage("pull code"){
steps {
git 'https://gitee.com/wukongcrm/72crm-java.git'
}
}
stage("make pkg"){
steps {
sh """
mvn clean package -Dmaven.test.skip=true
"""
}
}
}
}
- 拉取成功
[root@node6 .jenkins]# cd workspace/
[root@node6 workspace]# ls
test test@tmp
[root@node6 workspace]# cd test
[root@node6 test]# ls
72crm.bat Dockerfile README.md package.xml src ux
72crm.sh LICENSE.txt docs pom.xml target
[root@node6 test]# ls target/
ROOT.jar classes crm9-release.zip maven-archiver
archive-tmp crm9-release generated-sources maven-status
[root@node6 test]#
- 发布项目脚本并运行
pipeline {
agent any
stages {
stage("pull code"){
steps {
git 'https://gitee.com/wukongcrm/72crm-java.git'
}
}
stage("make pkg"){
steps {
sh """
mvn clean package -Dmaven.test.skip=true
"""
}
}
stage("publish"){
steps {
sh """
scp target/crm9-release.zip root@192.168.232.128:/usr/local/tomcat/webapps/
ssh root@192.168.232.128 "/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start"
"""
}
}
}
}