tomcat+nginx
理论部分:
之前我们学习解析PHP语言所开发的动态网站,而还有许多动态网站是由JAVA语言所开发,那么我们将如何进行解析呢?这就用到了我们今天的所需要掌握的tomcat。
Tomcat最初由Sun的软件架构师詹姆斯.邓肯.戴维森开发的,后来帮助其改为开源项目,并有Sun贡献给Apache软件基金会。T omcat的log是一个吉祥物公猫。
Tomcat一般应用在这种小型系统中应用非常广泛,是开发调试jsp的首先应用。Tomcat和其他web软甲一样具有解析HTML语言的功能,但是处理效率远不及Apacge和Nginx,所以Tomcat一般和nginx进行结合,将Tomcat单独放在后台运行。
看一下我们今天的实验环境:
图1
我们今天在前端部署一个nginx服务器解析html语言,在后端部署两台tomcat服务器实现这种负载均衡,我们使用upstream功能来实现
我们今天以实验为主,在安装及配置的过程中我们对其进行介绍
我们想部署两台tomcat,部署第一台的过程中进行讲解各个配置文件来进行介绍
1、准备java环境
在安装Tomcat之前必须先安装JDK。JDK的全称是Java Development kit,是Sun公司免费提供的Java语言的软件开发工具包,其中包含java虚拟机(JVM)。编写好的java源程序经过编译可形成java字节码,jdk只需要解压之后就可以直接使用了,我虚进行安装,因为已经是安装好的了。
我们今天使用jdk的版本为jdk-7u65-linux-64.gz
Tomcat的版本为apache-tomcat-7.0.54.tar.gz
(1)将jdk-7u65-linux-64.gz解压
[root@centos2 ~]# tar zxf jdk-7u65-linux-x64.gz
(2)将解压后生成的jdk1.7.0_65/文件夹 移动到 /usr/lcoal/目录下改名为java
[root@centos2 ~]# mv jdk1.7.0_65/ /usr/local/java
(3)修改profile环境变量以遍程序正常执行
vim /etc/profile
export JAVA_HOME=/usr/local/java //这是java根目录
export PATH=$PATH:$JAVA_HOME/bin //将java根目录下的bin目录添加为PATH环境变量的值
(4)刷新profile环境变量并查看结果
[root@centos2 ~]# . /etc/profile
[root@centos2 ~]# echo "$PATH"
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
(5)运行java -version 或 javac -version查看java版本和之前安装的版本是否相同
[root@centos2 ~]# javac -version
javac 1.7.0_45
到了这里java环境就部署好了。
2、安装配置Tomcat
(1)解压apache-tomcat-7.0.54.tar.gz软件包
[root@centos2 ~]# tar zxf apache-tomcat-7.0.54.tar.gz
(2)解压后生成apache-tomcat-7.0.54目录,将该目录移动到/usr/local/下并改名为tomcat7
[root@centos2 ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat7
(3)启动tomcat
[root@centos2 ~]# /usr/local/tomcat7/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat7
Using CATALINA_HOME: /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
Tomcat started.
Tomcat默认监听8080端口,使用netstat命令查看端口监听状态验证是否启动成功
[root@centos2 ~]# netstat -anpt | grep 8080
tcp 0 0 :::8080 :::* LISTEN 2284/java
(4)建立防火墙规则允许8080端口通过
[root@centos2 ~]# iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
(5)在客户端打开游览器进行测试输入http://ip:8080的方式访问,如果看到图2的界面则表示tomcat安装成功
图2
3、tomcat配置相关说明
[root@centos2 ~]# cd /usr/local/tomcat7/
[root@centos2 tomcat7]# ll
总用量 116
drwxr-xr-x. 2 root root 4096 11月 2 00:04 bin
drwxr-xr-x. 3 root root 4096 11月 2 00:06 conf
drwxr-xr-x. 2 root root 4096 11月 2 00:04 lib
-rw-r--r--. 1 root root 56812 5月 20 2014 LICENSE
drwxr-xr-x. 2 root root 4096 11月 2 00:06 logs
-rw-r--r--. 1 root root 1192 5月 20 2014 NOTICE
-rw-r--r--. 1 root root 8974 5月 20 2014 RELEASE-NOTES
-rw-r--r--. 1 root root 16204 5月 20 2014 RUNNING.txt
drwxr-xr-x. 2 root root 4096 11月 2 00:04 temp
drwxr-xr-x. 7 root root 4096 5月 20 2014 webapps
drwxr-xr-x. 3 root root 4096 11月 2 00:06 work
(1)主要目录说明
|———bin/:存放windows或linux平台上启动和关闭tomcat的脚本文件
|———conf/:存放Tomcat服务器的各种全局配置文件
|———logs/:存放Tomcat执行时的LOG文件
|———webapps/:Tomcat的主要web发布目录(包括应用程序示例)
|———work/:存放jsp编译后产生的class文件
(2)配置文件说明
[root@centos2 tomcat7]# ll conf/
总用量 204
drwxr-xr-x. 3 root root 4096 11月 2 00:06 Catalina
-rw-------. 1 root root 12257 5月 20 2014 catalina.policy
-rw-------. 1 root root 6294 5月 20 2014 catalina.properties
-rw-------. 1 root root 1394 5月 20 2014 context.xml
-rw-------. 1 root root 3288 5月 20 2014 logging.properties
-rw-------. 1 root root 6536 5月 20 2014 server.xml
-rw-------. 1 root root 1530 5月 20 2014 tomcat-users.xml
-rw-------. 1 root root 163385 5月 20 2014 web.xml
server.xml就是tomcat的主配置文件
catalina.policy:权限控制配置文件
catalina.properties:tomcat属性配置文件
context.xml上下文配置文件
logging.properties:日志log相关配置文件
tomcat-users.xml:manager-gui管理用户配置文件
web.xml为tomcat的serlet、servlet-mapping、filter、MIME等相关配置
4、Tomcat主配置文件说明
server.xml为Tomcat的主要配置文件,通过配置文件、可以修改Tomcat的启动端口、网站目录、虚拟主机、开启https等重要工能
整个server.xml的结构如下
我们来看一下详细的配置信息
省略部分信息……
//Tocat关闭端口,默认只对本机地址开放,可以通过127.0.0.1 8005对其进行关闭操作
省略部分信息……
connectionTimeout="20000" redirectPort="8443" /> //Tomcat启动的默认端口,可以根据需求进行修改 省略部分信息…… //Tomcat启动AJP 1.3连接器是的默认端口号,可以根据需求进行更改 省略部分信息…… 以下为Tomcat定义虚拟主机时的配置及日志配置 unpackWARs="true" autoDeploy="true"> prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> ps:以结尾为注释 Server元素代表了整个Cataling的servlet的容器也就是说一个server就代表了一个Tomcat实例也就是一个Tomcat服务器 Service是这样的一个集合:他由一个或多个Connector组成,以及一个Engine负责处理所有connector所获得的客户请求。 一个Connector在一个指定端口上侦听客户端请求,并交给Engine来处理从Engine处获得会应并返回给客户。 Tomcat有两个典型的connector,一个侦听来自客户的请求一个侦听来自其他web服务器的请求 Coyote Http/1.1 Connector在8080端口侦听来自客户端的请求 Coyte Jk2 Connector 在8009端口侦听来自其他web服务器的代理请求 Engine下可以配置多个Virtual Host,每个虚拟主机都有一个域名 当Engine获得一个请求时,他将该请求匹配到摸个host上去,然后把该请求交给Host来处理 Engine有一个默认的host主机,当匹配不到主机的时候就会交给默认的host主机(Engine就是一个引擎用来搜索匹配的主机) 代表一个virtual host 虚拟主机,每隔虚拟主机和某个网络域名Domain Nmae相匹配 每个虚拟主机下都可以部署(depoly)一个或多个web app ,每个web app 对应一个context,有一个Context path 一个Context对应一个web application,一个webapplication由一个或多个servlet组成 [root@centos2 tomcat7]# mkdir -p /web/webaap1 <%@ page language="java" import="java.util.*" pageEncodin g="UTF-8"%>5、Tomcat Server的组成部分
1)server
2)service
3)Connector
4)Engine
5)Host
6)Context
6、建立java的web站点
(1)首先在根目录下建立一个web目录,并在里面建立一个webapp1目录,用于存放网站文件。
(2)在webapp1上建立一个index.jsp的测试页面
vim /web/webaap1
<% out.println("wecome to test site.http://www.t
est1.com");%>
(3)修改Tomcat的server.xml文件
定义一个虚拟主机,并将网站文件路径指向已经建立的/web/webapp1 在host段增加context段
unpackWARs="true" autoDeploy="true"> dable="false"> 修改之后的host段 //docBse:web文档的基本目录也就是根目录 //reloadable设置监视"类"是否变化 //path=""设置默认类(也就是指定虚拟目录) [root@centos2 tomcat7]# bin/shutdown.sh [root@centos2 tomcat7]# bin/startup.sh 图3 好了看见这个测试页面证明我们的jsp已经没有任何问题了。 整个理论部分我们就讲完了,接下来部署图1 的实验环境。由于已经部署完成一个tonmcat了,部署第二个tomcat参考1、2、3、7步骤就可以了,这里我就不去部署了 我们直接部署nginx实现tomcat的负载均衡 [root@centos1 ~]# yum -y install pcre-devel [root@centos1 ~]# useradd -M -s /sbin/nologin nginx [root@centos1 ~]# tar zxf nginx-1.6.2.tar.gz [root@centos1 ~]# cd nginx-1.6.2 [root@centos1 nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module --user=nginx --group=nginx --with-file-aio && make && make install //--user --group 指定程序用户和组 //--with-http_stub_status_module 启用状态统计 //--with-http_ssl_module 启用ssl模块 //--with-http_gzip_static_module 启用静态压缩 //--with-http_flv_module 启用flv模块,提供内存使用基于时间的偏移量文件 //--withfile-aio 启用文件修改功能 vim /usr/local/nginx/conf/nginx.conf upstream tomcat_server { server 192.168.1.2:8080 weight=1; server 192.168.1.3:8080 weight=1; } upstream为字段名 tomcat_server为列表名(随便起,但是注意需要形象) 权重都为1表示分配的请求一样, server定义的就是服务器地址注意端口号 最好是新建立一个server{…}-location / 这样的配置段 location / { root html; index index.html index.htm; proxy_pass http://tomcat_server; 如果这个server中存在其他location字段则不能启动服务,最好将它单独建立一个虚拟主机并绑定域名。 之后启动nginx服务 [root@centos1 nginx-1.6.2]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 查看nginx的监听端口是否启动 [root@centos1 nginx-1.6.2]# netstat -anpt | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5482/nginx 这时访问http://192.168.1.1就能转发到tomcat服务器的另外一个,为了验证试验效果将tonmcat_2的测试页稍微调整一下 图4 图5 到了这里我们tomcat就介绍完了,下一次我们将介绍一下大名鼎鼎的KVM虚拟化。(4)关闭并启动tomcat
(5)通过游览器进行测试是否能够访问当建立的测试页面
1、安装相关软件并创建程序用户
2、解压并安装nginx
3、配置nginx
(1)在http{}中添加一下代码,设定负载均衡服务器列表,weight参数值表示权重,权重越大分配的请求越多。(建议在最后一个大括号前面添加)
(2)在http{…}-server{…}-location / {…}中加入一行"proxy_pass http://tomcat_server;"
4、验证负载均衡 效果