tomcat+nginx

理论部分:

之前我们学习解析PHP语言所开发的动态网站,而还有许多动态网站是由JAVA语言所开发,那么我们将如何进行解析呢?这就用到了我们今天的所需要掌握的tomcat。

Tomcat最初由Sun的软件架构师詹姆斯.邓肯.戴维森开发的,后来帮助其改为开源项目,并有Sun贡献给Apache软件基金会。T omcat的log是一个吉祥物公猫。

Tomcat一般应用在这种小型系统中应用非常广泛,是开发调试jsp的首先应用。Tomcat和其他web软甲一样具有解析HTML语言的功能,但是处理效率远不及Apacge和Nginx,所以Tomcat一般和nginx进行结合,将Tomcat单独放在后台运行。

看一下我们今天的实验环境:

tomcat+nginx_第1张图片

图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安装成功

tomcat+nginx_第2张图片

图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:以结尾为注释

5、Tomcat Server的组成部分

1)server

Server元素代表了整个Cataling的servlet的容器也就是说一个server就代表了一个Tomcat实例也就是一个Tomcat服务器

2)service

Service是这样的一个集合:他由一个或多个Connector组成,以及一个Engine负责处理所有connector所获得的客户请求。

3)Connector

一个Connector在一个指定端口上侦听客户端请求,并交给Engine来处理从Engine处获得会应并返回给客户。

Tomcat有两个典型的connector,一个侦听来自客户的请求一个侦听来自其他web服务器的请求

Coyote Http/1.1 Connector在8080端口侦听来自客户端的请求

Coyte Jk2 Connector 在8009端口侦听来自其他web服务器的代理请求

4)Engine

Engine下可以配置多个Virtual Host,每个虚拟主机都有一个域名

当Engine获得一个请求时,他将该请求匹配到摸个host上去,然后把该请求交给Host来处理

Engine有一个默认的host主机,当匹配不到主机的时候就会交给默认的host主机(Engine就是一个引擎用来搜索匹配的主机)

5)Host

代表一个virtual host 虚拟主机,每隔虚拟主机和某个网络域名Domain Nmae相匹配

每个虚拟主机下都可以部署(depoly)一个或多个web app ,每个web app 对应一个context,有一个Context path

6)Context

一个Context对应一个web application,一个webapplication由一个或多个servlet组成

6、建立java的web站点

(1)首先在根目录下建立一个web目录,并在里面建立一个webapp1目录,用于存放网站文件。

[root@centos2 tomcat7]# mkdir -p /web/webaap1

(2)在webapp1上建立一个index.jsp的测试页面

vim /web/webaap1

<%@ page language="java" import="java.util.*" pageEncodin

g="UTF-8"%>

JSP test1 page

<% 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=""设置默认类(也就是指定虚拟目录)

(4)关闭并启动tomcat

[root@centos2 tomcat7]# bin/shutdown.sh

[root@centos2 tomcat7]# bin/startup.sh

(5)通过游览器进行测试是否能够访问当建立的测试页面

tomcat+nginx_第3张图片

图3

好了看见这个测试页面证明我们的jsp已经没有任何问题了。

整个理论部分我们就讲完了,接下来部署图1 的实验环境。由于已经部署完成一个tonmcat了,部署第二个tomcat参考1、2、3、7步骤就可以了,这里我就不去部署了

我们直接部署nginx实现tomcat的负载均衡

1、安装相关软件并创建程序用户

[root@centos1 ~]# yum -y install pcre-devel

[root@centos1 ~]# useradd -M -s /sbin/nologin nginx

2、解压并安装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 启用文件修改功能

3、配置nginx

vim /usr/local/nginx/conf/nginx.conf

(1)在http{}中添加一下代码,设定负载均衡服务器列表,weight参数值表示权重,权重越大分配的请求越多。(建议在最后一个大括号前面添加)

upstream tomcat_server {

server 192.168.1.2:8080 weight=1;

server 192.168.1.3:8080 weight=1;

}

upstream为字段名 tomcat_server为列表名(随便起,但是注意需要形象)

权重都为1表示分配的请求一样,

server定义的就是服务器地址注意端口号

(2)在http{…}-server{…}-location / {…}中加入一行"proxy_pass http://tomcat_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

4、验证负载均衡 效果

这时访问http://192.168.1.1就能转发到tomcat服务器的另外一个,为了验证试验效果将tonmcat_2的测试页稍微调整一下

tomcat+nginx_第4张图片

图4

tomcat+nginx_第5张图片

图5

到了这里我们tomcat就介绍完了,下一次我们将介绍一下大名鼎鼎的KVM虚拟化。