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最新版本为9.0。
安装Tomcat:
tomcat-8版本下载:http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.50/bin/apache-tomcat-8.0.50.tar.gz
系统:CentOS-7.6
软件:tomcat-9.0
IP地址:10.0.0.10
安装java-1.8:
1 2 3 4 5 6 7 |
yum install java-1.8.0-openjdk -y # 查看版本 java -version openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode) |
下载包:
wget http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.0.M18/bin/apache-tomcat-9.0.0.M18.tar.gz
解压:
1 2 3 |
tar xf apache-tomcat-9.0.0.M18.tar.gz -C /usr/local/ mv /usr/local/apache-tomcat-9.0.0.M18/ /usr/local/tomcat9 |
检查tomcat是否可用:
/usr/local/tomcat9/bin/version.sh
配置systemd管理:
cd /usr/local/tomcat9/bin/ && vim setenv.sh
1 2 3 4 5 |
#add tomcat pid CATALINA_PID="$CATALINA_BASE/tomcat.pid" #add java opts JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m" |
chmod +x setenv.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
vim /usr/lib/systemd/system/tomcat.service [Unit] Description=Tomcat After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/usr/local/tomcat9/tomcat.pid ExecStart=/usr/local/tomcat9/bin/startup.sh ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target |
启动:
systemctl start tomcat && systemctl enable tomcat
查看端口:
netstat -lntp | grep 8080
浏览器访问:http://10.0.0.10:8080/
Tomcat文件与参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
tree -L 1 /usr/local/tomcat9/ /usr/local/tomcat9/ ├── bin #用于启动、关闭tomcat或在其他功能脚本 ├── conf #用与配置tomcat的xml及dtd文件 ├── lib #存放web应用能访问的JAR包 ├── LICENSE ├── logs #存放catalina.out和其他web应用程序的日志 ├── NOTICE ├── RELEASE-NOTES ├── RUNNING.txt ├── temp #存放临时文件 ├── tomcat.pid #tomcat启动的进程ID ├── webapps #web应用程序跟目录 └── work #用于产生有JSP编译出的serviet的.java和class文件 |
conf目录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@tomcat conf]# ll total 224 drwxr-x--- 3 root root 23 Feb 23 23:25 Catalina -rw------- 1 root root 12602 Mar 8 2017 catalina.policy -rw------- 1 root root 7202 Mar 8 2017 catalina.properties -rw------- 1 root root 1338 Mar 8 2017 context.xml -rw------- 1 root root 1149 Mar 8 2017 jaspic-providers.xml -rw------- 1 root root 2358 Mar 8 2017 jaspic-providers.xsd -rw------- 1 root root 3622 Mar 8 2017 logging.properties -rw------- 1 root root 7511 Mar 8 2017 server.xml #tomcat主配置文件 -rw------- 1 root root 2164 Mar 8 2017 tomcat-users.xml #tomcat管理用户配置文件 -rw------- 1 root root 2633 Mar 8 2017 tomcat-users.xsd -rw------- 1 root root 168133 Mar 8 2017 web.xml |
bin目录脚本:
1 2 3 4 5 |
/usr/local/tomcat9/bin/version.sh #查看tomcat版本信息 /usr/local/tomcat9/bin/startup.sh #启动tomcat /usr/local/tomcat9/bin/shutdown.sh #关闭tomcat /usr/local/tomcat9/bin/catalina.sh #启动与关闭最终调用的脚本,与启动时的参数 |
webapps目录:
1 2 3 4 5 6 7 8 9 |
tree -L 1 /usr/local/tomcat9/webapps/ /usr/local/tomcat9/webapps/ ├── docs #tomcat帮助文档 ├── examples #web应用实例 ├── host-manager #管理 ├── manager #管理 └── ROOT #默认网站跟目录 |
logs目录:
1 2 3 |
tail -f /usr/local/tomcat9/logs/catalina.out #tomcat工作实时日志(不会自动切割日志,要注意) tail -f /usr/local/tomcat9/logs/localhost_access_log.2019-02-24.txt #访问tomcat日志会自动切割,记录客户端访问日志 |
Tomcat-server.xml文件详解:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
vim /usr/local/tomcat9/conf/server.xml #第22行可以配置tomcat管理口,只要向8005端口发送shutdown就可以关闭tomcat(不安全),用telnet连接8005输入SHUTDOWN就可以关闭tomcat <Server port="8005" shutdown="SHUTDOWN"> #第69行配置tomcat监听端口,可以修改自己想要的监听端口,还有连接超时时间(毫秒),指定重定向端口,(类似于nginx向后抛送请求端口) <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> #第116行配置是配合apache使用的端口,一般用nginx做web服务器,会注释掉8009端口的配置(不安全) <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> #第128行配置访问的域名和主机地址(类似于nginx监听的server_name) <Engine name="Catalina" defaultHost="localhost"> #第148行配置多个虚拟主机,unpackWARs参数只要是WAR的压缩包,tomcat会自动解压,autoDeploy参数是自动加载新的站点文件(类似于nginx的reload) <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> #第160行是tomcat日志格式 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> |