Tomcat 服务器是从Apache开发而来的一个免费的、开源的、轻量级的Web 应用服务器,在中小型系统和并发访问用户不多的场合下被普遍使用,是开发和调试JSP 程序的首选。当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
在我看来,tomcat是一个中间件,在B/S架构中,浏览器发出的http请求经过tpmcat中间件,转发到最终的目的服务器上,响应消息再通过tomcat返回给浏览器。tomcat在此过程中开启监听端口监听用户的请求,解析用户发来的http请求然后访问到你指定的应用系统,然后你返回的页面经过tomcat返回给用户。
1)Apache
Apache支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。
缺点:配置相对复杂,自身不支持动态页面。
优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
(Apche可以支持PHPcgiperl,但是要使用Java的话,你需要Tomcat在Apache后台支撑,将Java请求由Apache转发给Tomcat处理。)
2)Tomcat:
Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
缺点:可以说Tomcat 只能用做java服务器,tomcat接受的最大并发数有限,连接数过多,会导致tomcat处于"僵尸"状态,对后续的连接失去响应,需要结合nginx一起使用。
优点:动态解析容器,处理动态请求,是编译JSP/Servlet的容器。
三个端口:
8005:关闭tomcat通信接口
8009:与其他http服务器通信接口,用于http服务器集合
8080:建立http连接 用,如浏览器访问
3)Nginx
缺点:Nginx 只适合静态和反向代理。
优点:负载均衡、反向代理、处理静态文件优势。Nginx 处理静态请求的速度高于Apache。
Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。
Apache和 Nginx用于处理静态资源, tomcat用来处理动态资源。Apache和Nginx相比,Nginx适合做前端服务器,适合做负载均衡。 一般情况下,使用的时候,都是 Apache+Tomcat
一起使用或者 Nginx+tomcat
一起使用。
参考
静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据。
动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据。
Tomcat应用服务器是用来处理Servlet容器和JSP的,虽然它也可以处理HTML等等一系列静态资源,但是效率不如Nginx;而且tomcat对Servlet容器和JSP的运算已经有很大压力了,如果不分离会导致大量的性能浪费。我认为在应用服务方面,要遵循一条原则——一个服务只做一件事。要做动态请求就专做动态请求,要做静态请求就专做静态请求,这样才能提高性能。
实验环境
主机(版本:ip) | 功用 |
---|---|
虚拟机server1(rhel6.5:172.25.2.1) | lnmp环境主机 |
真机(rhel7.3:172.25.2.250) | 测试机 |
实验原理
当用户访问动态资源时,将访问转到Tomcat应用服务器上,Tomcat将数据返回给Nginx,Nginx再返回给用户。
1、安装jdk和tomcat将其放至/usr/local
目录下
tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local
cd /usr/local
ln -s jdk1.7.0_79/ java
ln -s apache-tomcat-7.0.37/ tomcat
java可以tab补齐,java -version
可查看java的版本
3、配置java的环境变量并使其生效
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
验证环境配置是否正确
echo $PATH
echo $CLASSPATH # 类加载路径
echo $JAVA_HOME # 命令的路径,不用写绝对路径了)
which javac # 编译
which java # 运行指令
4、打开tomcat,并访问。
cd /usr/local/tomcat
bin/startup.sh
此时去浏览器访问172.25.2.1:8080
此时访问172.25.2.1/index.jsp
访问不到,是因为openresty开启的80端口
5、编辑openresty的配置文件并重启服务,这个实验的配置文件是在上一个实验的配置文件的基础上修改的
[root@server1 tomcat]# cd /usr/local/openresty/nginx/conf/
[root@server1 conf]# vim nginx.conf
72 location ~ \.jsp$ {
73 proxy_pass http://127.0.0.1:8080;
74 }
[root@server1 conf]# /usr/local/openresty/nginx/sbin/nginx -s reload
此时再去访问172.25.2.1/index.jsp
就可以访问到
但这个页面的动态的jsp效果不明显,所以我们重新编辑测试页。
6、再次编辑测试页
[root@server1 conf]# cd /usr/local/tomcat/webapps/ROOT/
[root@server1 ROOT]# ls
asf-logo.png bg-nav-item.png favicon.ico tomcat.gif WEB-INF
asf-logo-wide.gif bg-nav.png index.jsp tomcat.png
bg-button.png bg-upper.png RELEASE-NOTES.txt tomcat-power.gif
bg-middle.png build.xml tomcat.css tomcat.svg
[root@server1 ROOT]# vim test.jsp
server1-The time is: <%=new java.util.Date() %>
当我们再次访问时,时间会一直变化,实现了访问动态页面