1.tomcat简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为10.0,为了稳定我们使用9.0版本。
tomcat是中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中。而tomcat本身的运行也依赖于jdk环境。可用于lnmt等架构。
2.tomcat项目部署
//安装jdk环境
[root@localhost ~]# yum install -y java-11-openjdk*
//查看安装的版本
[root@localhost ~]# java -version
openjdk version "11.0.12" 2021-07-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.12+7-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7-LTS, mixed mode, sharing)
//下载tomcat
[root@localhost ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz
官网地址http://tomcat.apache.org/
//解压
[root@localhost ~]# tar xf apache-tomcat-9.0.54.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
apache-tomcat-9.0.54 bin etc games include lib lib64 libexec sbin share src
[root@localhost local]# mv apache-tomcat-9.0.54/ tomcat //改名方便查找
[root@localhost local]# ls tomcat/
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs temp webapps work
//不能做环境变量,可能会装多个tomcat,设置环境变量会造成冲突
//利用脚本启动tomcat
[root@localhost bin]# pwd
/usr/local/tomcat/bin
[root@localhost bin]# ls
bootstrap.jar ciphers.bat configtest.bat digest.sh setclasspath.sh startup.sh tool-wrapper.sh
catalina-tasks.xml ciphers.sh configtest.sh makebase.bat shutdown.bat tomcat-juli.jar version.bat
catalina.bat commons-daemon-native.tar.gz daemon.sh makebase.sh shutdown.sh tomcat-native.tar.gz version.sh
catalina.sh commons-daemon.jar digest.bat setclasspath.bat startup.bat tool-wrapper.bat
[root@localhost bin]# ./startup.sh
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@localhost bin]# 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 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
8080为tomcat端口
//先关闭防火墙,然后输入ip加端口号访问
[root@localhost bin]# systemctl stop firewalld.service
看到此页面表示部署成功
3.tomcat配置文件解析
//备份一下ROOT,然后清空
[root@localhost tomcat]# cp -a webapps/ROOT/ /opt/
[root@localhost tomcat]# rm -rf webapps//ROOT/*
刷新页面
发现什么都没了,也就是说ip+端口默认访问的是webapps//ROOT/
//进入ROOT下,写一个hello world的java页面
[root@localhost ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@localhost ROOT]# vim index.jsp
[root@localhost ROOT]# cat index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Hellow World");
%>
</body>
</html>
刷新页面
删除页面把之前备份的移回来
[root@localhost webapps]# rm -rf ROOT/
[root@localhost webapps]# cp -a /opt/ROOT/ .
[root@localhost webapps]# ls
ROOT docs examples host-manager manager
再次刷新页面
上线项目
//创建目录,移入测试页面
[root@localhost webapps]# mkdir test
[root@localhost webapps]# vim index.jsp
[root@localhost webapps]# ls
ROOT docs examples host-manager index.jsp manager test
[root@localhost webapps]# mv index.jsp test/
实际环境中开发人员会打包一个war包,只需要将包移到webapps下,然后重启tomcat,就会自动解压包,这个时候再去修改程序配置参数。
//ROOT对应首页
[root@localhost webapps]# ls
ROOT docs examples host-manager manager test
随意点一个按钮进去
//密码修改为了tomcat
[root@localhost tomcat]# vim conf/tomcat-users.xml
[root@localhost tomcat]# tail conf/tomcat-users.xml
<role rolename="manager-gui"/> #复制过来
<user username="tomcat" password="tomcat" roles="manager-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>
然后修改manager权限
[root@localhost tomcat]# ls webapps/manager/META-INF/
context.xml
[root@localhost tomcat]# vim webapps/manager/META-INF/context.xml
[root@localhost tomcat]# tail webapps/manager/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\.216\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> #添加192.168.216的网段允许访问,原来只有本机能访问
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
把之前的页面刷新
输入我们之前设置的密码后
可以去控制每个项目,与主机上的webapps目录对应,卸载项目后,主机上对应项目也会被删除
bin文件解析
[root@localhost tomcat]# ls bin/
bootstrap.jar ciphers.bat configtest.bat digest.sh setclasspath.sh startup.sh tool-wrapper.sh
catalina-tasks.xml ciphers.sh configtest.sh makebase.bat shutdown.bat tomcat-juli.jar version.bat
catalina.bat commons-daemon-native.tar.gz daemon.sh makebase.sh shutdown.sh tomcat-native.tar.gz version.sh
catalina.sh commons-daemon.jar digest.bat setclasspath.bat startup.bat tool-wrapper.bat
.bat是windows上的批处理程序
catalina.sh控制 shutdown.sh和startup.sh,传递参数start就是startup.sh,反之就是shutdown.sh
同理按前面的步骤操作
[root@localhost tomcat]# vim conf/tomcat-users.xml
[root@localhost tomcat]# tail -11 conf/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>
去host-manager修改权限
[root@localhost tomcat]# vim webapps/host-manager/META-INF/context.xml
[root@localhost tomcat]# tail webapps/host-manager/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\.216\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> #添加216网段
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
输入密码后
//server.xml存放tomcat端口号等信息,如果要在一台主机里面部署tomcat,就需要修改端口号
[root@localhost tomcat]# ls conf/
Catalina catalina.properties jaspic-providers.xml logging.properties tomcat-users.xml web.xml
catalina.policy context.xml jaspic-providers.xsd server.xml tomcat-users.xsd