一、什么是Tomcat
Tomcat 服务器是从Apache开发而来的一个免费的、开源的、轻量级的Web 应用服务器,在中小型系统和并发访问用户不多的场合下被普遍使用,是开发和调试JSP 程序的首选。当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
Tomcat服务器是一个免费的开发源代码的WEB应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。其主要的应用场景是解析动态程序代码(Java ) 。JSP程序可以处理Tomcat界面。
1.1 Apache,Nginx和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
一起使用。
1.2 为什么要动静态资源分离
静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据。
- 如:图片、字体、js文件、css文件等等。在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内。
动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据。
- 如:请求日期,时间,明天的天气等等会变动的数据。
二、实现访问动态页面
实验环境
主机(版本:ip) | 功用 |
---|---|
虚拟机server1(rhel7.3:172.25.16.1) | lnmp环境主机 |
真机(rhel7.3:172.25.16 .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.99.tar.gz -C /usr/local/
2、创建软链接
cd /usr/local
ln -s jdk1.7.0_79/ java
ln -s apache-tomcat-7.0.99/ tomcat
3、配置java的环境变量并使其生效
vim /etc/profile
写入:
export JAVA_HOME=/usr/local/java
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.测试java环境是否配置成功:
cd
vim test.java
写入:
public class test
{
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
javac test.java #javac编译.java脚本
java test #运行脚本
5、打开tomcat,并访问。
cd /usr/local/tomcat/
bin/startup.sh
netstat -antlp #查看到8080端口开启,说明启动成功
6.此时去浏览器访问172.25.2.1:8080
此时访问172.25.2.1/index.jsp
访问不到,是因为openresty开启的80端口
7、编辑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效果不明显,所以我们重新编辑测试页。
8、再次编辑测试页
[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() %>
当我们再次访问时,时间会一直变化,实现了访问动态页面