Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
Tomcat和Nginx、Apache(httpd)、lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器。
具体环境可通过开发人员来定,这儿给出了本次实验的环境。
链接: https://pan.baidu.com/s/1uOEy... 密码:pt3l
java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
~]# tar -xf apache-tomcat-8.0.27.tar.gz -C /app/ ~]# ln -s /app/apache-tomcat-8.0.27 /app/tomcat ~]# echo 'export TOMCAT_HOME=/app/tomcat'>>/etc/profile.d/tomcat.sh ~]# source /etc/profile.d/tomcat.sh ~]# chown -R root.root /app/jdk/ /app/tomcat/
[root@tomcat ~]# cd /app/tomcat/ [root@tomcat tomcat]# tree -L 1 . ├── bin #→用以启动、关闭Tomcat或者其它功能的脚本(.bat文件和.sh文件) ├── conf #→用以配置Tomcat的XML及DTD文件 ├── lib #→存放web应用能访问的JAR包 ├── LICENSE ├── logs #→Catalina和其它Web应用程序的日志文件 ├── NOTICE ├── RELEASE-NOTES ├── RUNNING.txt ├── temp #→临时文件 ├── webapps #→Web应用程序根目录 └── work #→用以产生有JSP编译出的Servlet的.java和.class文件 7 directories, 4 files [root@tomcat tomcat]# cd webapps/ [root@tomcat webapps]# ll total 20 drwxr-xr-x 14 root root 4096 Oct 5 12:09 docs #→tomcat帮助文档 drwxr-xr-x 6 root root 4096 Oct 5 12:09 examples #→web应用实例 drwxr-xr-x 5 root root 4096 Oct 5 12:09 host-manager #→管理 drwxr-xr-x 5 root root 4096 Oct 5 12:09 manager #→管理 drwxr-xr-x 3 root root 4096 Oct 5 12:09 ROOT #→默认网站根目录
#→启动程序/app/tomcat/bin/startup.sh #→关闭程序/app/tomcat/bin/shutdown.sh [root@tomcat ~]# /app/tomcat/bin/startup.sh Using CATALINA_BASE: /app/tomcat Using CATALINA_HOME: /app/tomcat Using CATALINA_TMPDIR: /app/tomcat/temp Using JRE_HOME: /app/jdk Using CLASSPATH: /app/tomcat/bin/bootstrap.jar:/app/tomcat/bin/tomcat-juli.jar Tomcat started. [root@tomcat ~]# netstat -lnpt | grep java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1311/java tcp6 0 0 :::8009 :::* LISTEN 1311/java tcp6 0 0 :::8080 :::* LISTEN 1311/java
http://ipaddr :8080/
[root@tomcat ~]# cd /app/tomcat/logs/ [root@tomcat logs]# ll total 32 -rw-r--r-- 1 root root 12137 Sep 16 17:55 catalina.2018-09-16.log -rw-r--r-- 1 root root 12137 Sep 16 17:55 catalina.out -rw-r--r-- 1 root root 0 Sep 16 05:49 host-manager.2018-09-16.log -rw-r--r-- 1 root root 560 Sep 16 17:54 localhost.2018-09-16.log -rw-r--r-- 1 root root 824 Sep 16 18:02 localhost_access_log.2018-09-16.txt -rw-r--r-- 1 root root 0 Sep 16 05:49 manager.2018-09-16.log #-> catalina.out实时日志 [root@tomcat logs]# tail -f catalina.out 16-Sep-2018 17:54:59.067 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/docs has finished in 160 ms 16-Sep-2018 17:54:59.067 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/examples 16-Sep-2018 17:55:00.002 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/examples has finished in 935 ms 16-Sep-2018 17:55:00.002 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/host-manager 16-Sep-2018 17:55:00.076 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/host-manager has finished in 73 ms 16-Sep-2018 17:55:00.076 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/manager 16-Sep-2018 17:55:00.095 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/manager has finished in 19 ms 16-Sep-2018 17:55:00.116 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 16-Sep-2018 17:55:00.194 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 16-Sep-2018 17:55:00.197 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 2440 ms
[root@tomcat conf]# pwd /app/tomcat/conf [root@tomcat conf]# ll -h total 212K drwxr-xr-x 3 root root 23 Sep 16 05:49 Catalina -rw------- 1 root root 13K Sep 28 2015 catalina.policy -rw------- 1 root root 7.0K Sep 28 2015 catalina.properties -rw------- 1 root root 1.6K Sep 28 2015 context.xml -rw------- 1 root root 3.4K Sep 28 2015 logging.properties -rw------- 1 root root 6.4K Sep 28 2015 server.xml #主配置文件 -rw------- 1 root root 1.9K Sep 16 19:11 tomcat-users.xml #tomcat管理用户配置文件 -rw------- 1 root root 1.9K Sep 28 2015 tomcat-users.xsd -rw------- 1 root root 164K Sep 28 2015 web.xml
测试功能,生产环境不推荐使用。
Tomcat管理功能用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。在默认情况下是处于禁用状态的。如果需要开启这个功能,就需要配置管理用户,即配置前面说过的 tomcat-users.xml 。
[root@tomcat ~]# vim /app/tomcat/conf/tomcat-users.xml ………… <role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/> </tomcat-users> #→在此行前加入上面三行 [root@tomcat ~]# /app/tomcat/bin/shutdown.sh [root@tomcat ~]# /app/tomcat/bin/startup.sh
-context :定义一个应用程序,是一个最内层的容器类组件(不能再嵌套)。配置context的主要目的指定对应对的webapp的根目录,类似于httpd的alias,其还能为webapp指定额外的属性,如部署方式等。
<?xml version='1.0' encoding='utf-8'?> #<Server>元素代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个<Service>元素.并且它不能做为任何元素的子元素. # <Server port="8005" shutdown="SHUTDOWN"> #port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的. <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> #Service服务组件 <Service name="Catalina"> #connector:接收用户请求,类似于httpd的listen配置监听端口。 #port :指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。 #address :指定连接器监听的地址,默认为所有地址(即0.0.0.0)。 #protocol :连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的, 在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)。 #minProcessors:服务器启动时创建的处理请求的线程数。 #maxProcessors:最大可以创建的处理请求的线程数。 #enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。 #redirectPort :指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。 #acceptCount :指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。 #connectionTimeout:指定超时的时间数(以毫秒为单位)。 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> #Engine,核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host。defaultHost指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的。 <Engine name="Catalina" defaultHost="localhost"> #Realm表示存放用户名,密码及role的数据库 <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> #Host,表示存放用户名,密码及role的数据库。 #name :指定主机名。 #appBase :应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps" ,相对于CATALINA_HOME而言的,也可以写绝对路径。 #unpackWARs:如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序。 #autoDeploy:在tomcat启动时,是否自动部署。 #xmlValidation :是否启动xml的校验功能,一般xmlValidation="false"。 #xmlNamespaceAware:检测名称空间,一般xmlNamespaceAware="false"。 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server>