tomcat是一个中间件,中间件:两者之间
Tomcat是个容器,是一个容纳Java程序的器皿
Tomcat是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。
Tomcat 技术先进、性能稳定,而且免费
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序(Java程序开发的网站)的首选。
还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式
Tomcat处理静态HTML的能力不如Apache服务器
tomcat是中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中。
tomcat本身的运行也依赖于jdk环境
jdk:是Java运行环境加上一些开发工具包
tomcat应用场景:lnmt
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 ~]#
[root@node6 ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
[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]#
[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 ~]#
关闭防火墙
[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


[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/
[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 ~]#



加两行
[root@node6 webapps]# cd ../conf/
[root@node6 conf]# vim tomcat-users.xml
访问role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
关闭在启动
[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相对应


[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"/>
重启
[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]#

jenkins 持续集成工具
jenkins是一个用 Java 编写的开源自动化软件项目。
是基于Java开发的一种持续集成工具,用于监控持续重复的工作。
Jenkins 用于持续构建和测试软件项目 ,集成了各种开发生命周期过程,包括构建、文档、测试、打包、模拟、部署、静态分析等等。”
是一个打包,流程控制软件
java代码:使用开发工具(eclipse)打包
软件位置:
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 ~]#
[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]#





[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]#