转自陈明乾的博客,可能有一定更新。
转原文声明:
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://freeloda.blog.51cto.com/2033581/1300915
大纲
一、Tomcat 基本配置
- 1.为Tomcat提供SysV脚本
- 2.catalina 脚本讲解
- 3.telnet 登录管理Tomcat
- 4.配置Tomcat虚拟主机
- 5.Tomcat图形管理接口
- manager 管理应用程序的部署及监控
- host-manager 虚拟主机的管理
- 6.部署JSP网站案例
- 布署JavaCenter Home(开源的SNS网站)
注,本文的测试的操作系统为 CentOS 6.8 x86_64,软件版本为 jdk-8u101、apache-tomcat-7.0.70。
软件下载地址:
- jdk 8u101: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- apache-tomcat 7.0.70: http://tomcat.apache.org/download-70.cgi
一、Tomcat 基本配置
1.为Tomcat提供SysV脚本
注,在上一篇博文中我们已经演示安装了Tomcat,这里我们就不在演示,不清楚的博友可以参考这篇博文,http://freeloda.blog.51cto.com/2033581/1299644,在上一篇博文中我们没有增加,SysV脚本,在这篇博文中我们来增加一下,下面我们就来具体演示一下。
[root@tomcat ~]# vim /etc/init.d/tomcat
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
CATALINA_HOME=/usr/local/tomcat #注意你的脚本路径
export CATALINA_HOME
# export CATALINA_OPTS="-Xms128m -Xmx256m"
exec $CATALINA_HOME/bin/catalina.sh $*
下面我们来增加执行权限,并加入服务列表设置开机自启动,
[root@tomcat ~]# chmod +x /etc/init.d/tomcat
[root@tomcat ~]# chkconfig --add tomcat
[root@tomcat ~]# chkconfig tomcat --list
tomcat 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
下面我们来启动一下Tomcat并测试一下,
[root@tomcat1 ~]# /etc/init.d/tomcat start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_101/
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
查看一下启动的端口号,
[root@tomcat1 ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1094/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1173/master
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 5821/java
tcp 0 0 :::8009 :::* LISTEN 5821/java
tcp 0 0 :::8080 :::* LISTEN 5821/java
tcp 0 0 :::22 :::* LISTEN 1094/sshd
tcp 0 0 ::1:25 :::* LISTEN 1173/master
测试访问一下:

好了,到这里Tomcat的SysV脚本增加完成,下面我们来说一下catalina脚本。
2.catalina 脚本讲解
首先我们来查看一下这个脚本,
[root@tomcat1 ~]# catalina.sh -h
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_101/
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Usage: catalina.sh ( commands ... )
commands:
debug Start Catalina in a debugger
debug -security Debug Catalina with a security manager
jpda start Start Catalina under JPDA debugger
run Start Catalina in the current window
run -security Start in the current window with security manager
start Start Catalina in a separate window
start -security Start in a separate window with security manager
stop Stop Catalina, waiting up to 5 seconds for the process to end
stop n Stop Catalina, waiting up to n seconds for the process to end
stop -force Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running
stop n -force Stop Catalina, wait up to n seconds and then use kill -KILL if still running
configtest Run a basic syntax check on server.xml - check exit code for result
version What version of tomcat are you running?
Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined
注,从帮助上来看,这个脚本使用还是挺简单的。下面我们来说几个常用的选项,
catalina.sh
- start 启动Tomcat
- stop 关闭Tomcat
- configtest 测试配置文件是否有错
- version 查看Tomcat版本
下面我们就来具体演示一下,
[root@tomcat1 ~]# catalina.sh configtest
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_101/
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
...
INFO: Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
Aug 02, 2016 8:17:49 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Aug 02, 2016 8:17:49 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Aug 02, 2016 8:17:49 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Aug 02, 2016 8:17:49 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1374 ms
注,使用configtest选项时,得关闭Tomcat,不然会报错。
启动Tomcat,
[root@tomcat1 ~]# catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_101/
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
关闭Tomcat,
[root@tomcat1 ~]# catalina.sh stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_101/
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@tomcat1 ~]#
查看Tomcat版本,
[root@tomcat1 ~]# catalina.sh version
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_101/
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.70
Server built: Jun 15 2016 16:27:45 UTC
Server number: 7.0.70.0
OS Name: Linux
OS Version: 2.6.32-642.el6.x86_64
Architecture: amd64
JVM Version: 1.8.0_101-b13
JVM Vendor: Oracle Corporation
好了,catalina脚本,我们就说到这里了,下面我们来说一下telnet管理Tomcat。
3.telnet 登录管理Tomcat
注,在说telnet管理Tomcat之前,我们得先看一下默认的配置文件,这里面定义了默认的管理端口,
[root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml
说明,定义了一个管理端口为8005,我们可以用telnet直接登录进本机的8005端口,来执行SHUTDOWN命令,来关闭Tomcat实例。下面我们来具体演示一下,
先安装telnet客户端,
[root@tomcat ~]# yum install -y telnet
下面我们一测试并查看,
[root@tomcat1 ~]# telnet localhost 8005
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SHUTDOWN
Connection closed by foreign host.
[root@tomcat1 ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1094/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1173/master
tcp 0 0 :::22 :::* LISTEN 1094/sshd
tcp 0 0 ::1:25 :::* LISTEN 1173/master
[root@tomcat1 ~]#
注,大家可以看到Tomcat服务器已经关闭。好了,telnet管理我们就说到这里,下面我们来说一下,Tomcat虚拟主机的配置。
4.配置Tomcat虚拟主机
注,在说Tomcat虚拟主机之前,咱们来详细的看看默认的配置文件,虽然在上一篇博客中全部有讲解,在这篇博客中我还是再和大家简单说一下,下面是默认配置文件。大家可以看到,绝大部分的配置文件是注释,包含在``、全是注释。下面我们就来具体的看看,注释我们就不说了,说具体的定义的内容
[root@tomcat ~]# cat /usr/local/tomcat/conf/server.xml
#大家可以看到,这里是我们刚才讲解的,定义一个管理接口
#定义一个Service命令为Catalina
#这里定义了一个连接器,协议为http,端口为8080,最大连接超时为20s,
#这里还定义了一个SSL的重定向端口8443。我们可以根据需要进行修改。
#一般我们都用80端口与443端口。
#这里定义了一个支持AJP协议的连接器。
#这里定义了一个名为Catalina的引擎,并定义了一个默认主机为localhost。
#这里就是定义的默认虚拟主机。
#这里定义了一个日志相关的属性。
好了,在这里我们又简单的说明一下,配置文件下面我们就来具体演示一下怎么配置虚拟主机。首先,我们来修改一下配置文件,
[root@tomcat conf]# vim server.xml
增加下面几行
接下来我们来创建文档目录与测试页面,
[root@tomcat ~]# mkdir -pv /web/webapp
[root@tomcat ~]# cd /web/webapp
[root@tomcat webapp]# vim index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
JSP test page.
<% out.println("Welcome to test. Site, http://www.test.com"); %>
现在我们来测试一下我们修改的配置文件,
[root@tomcat ~]# service tomcat stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@tomcat service tomcat configtest
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Sep 22, 2013 2:15:47 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Sep 22, 2013 2:15:47 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-80"]
Sep 22, 2013 2:15:47 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Sep 22, 2013 2:15:47 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1294 ms
注,大家可以看到,我们这里没有报错,说明配置都是正确的,若配置有错误,会在最后一行提醒你。
再下面我们来启动Tomcat并测试一下,
[root@tomcat1 ~]# catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_101/
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat1 webapp]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1094/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1173/master
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 6196/java
tcp 0 0 :::8009 :::* LISTEN 6196/java
tcp 0 0 :::8080 :::* LISTEN 6196/java
tcp 0 0 :::22 :::* LISTEN 1094/sshd
tcp 0 0 ::1:25 :::* LISTEN 1173/master
用 elinks 测试一下:
为了帮助大家理解,我们这里再次讲解一下,Host组件与Context组件以及相关属性。
Host组件:
位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机,如前面我们自定义的内容:
常用属性说明:
name:定义虚拟主机的域名
- appBase:此Host的webapps目录,即存放非归档的web应用程序的目录或归档后的WAR文件的目录路径;可以使用基于$CATALINA_HOME的相对路径;
- autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true;
- unpackWars:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true;
主机别名定义:
如果一个主机有两个或两个以上的主机名,额外的名称均可以以别名的形式进行定义,如下:
web.test.com
在Tomcat中,每一个context定义也可以使用一个单独的XML文件进行,其文件的目录为
$CATALINA_HOME/conf//。
可以用于Context中的XML元素有Loader,Manager,Realm,Resources和WatchedResource。
常用的属性定义有:
- docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;切记,docBase的路径名不能与相应的Host中appBase中定义的路径名有包含关系,比如,如果appBase为deploy,而docBase绝不能为deploy-bbs类的名字;
- path:相对于Web服务器根路径而言的URI;如果为空“”,则表示为此webapp的根路径;如果context定义在一个单独的xml文件中,此属性不需要定义;
- reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false;
为了便于大家理解,我们这里再定义一个Context并测试一下,
下面来增加目录文档与测试文件,
[root@tomcat webapp]# mkdir /web/test
[root@tomcat webapp]# cd /web/test
[root@tomcat test]# vim index.jsp
<%@ page language="java" %>
TomcatA
TomcatA
Session ID
<% session.setAttribute("abc","abc"); %>
<%= session.getId() %>
Created on
<%= session.getCreationTime() %>
测试一下配置文件是否有错并启动Tomcat,
[root@tomcat1 conf]# /etc/init.d/tomcat stop
[root@tomcat1 conf]# /etc/init.d/tomcat configtest
..
INFO: Initialization processed in 1352 ms
[root@tomcat1 conf]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1094/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1173/master
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 6773/java
tcp 0 0 :::8009 :::* LISTEN 6773/java
tcp 0 0 :::8080 :::* LISTEN 6773/java
tcp 0 0 :::22 :::* LISTEN 1094/sshd
tcp 0 0 ::1:25 :::* LISTEN 1173/master
下面我们就用 elinks 测试一下,
好了,到这里我们的Tomcat虚拟主机的讲解就到这里了,下面我们来说一下Tomcat图形管理接口。
5.Tomcat图形管理接口
- manager 管理应用程序的部署及监控
- host-manager 虚拟主机的管理
我们先来看一下默认的图形配置界面,
注,大家注意看右上角,我用红色方框标记出来的,大家可以看有三个按钮,分别为
- Server Status 主要用来查看服务器的状态
- Manager App 主要用来管理应用程序的部署及监控
- Host Manager 主要用来管理虚拟主机
下面我们就来具体的配置一下,大家可以看到,你点击任何一个按钮都要输入用户名和密码的,在我们配置之前我们先来说一下,Tomcat的Manager功能,
Manager的四个管理角色:
- manager-gui - allows access to the HTML GUI and the status pages
- manager-script - allows access to the text interface and the status pages
- manager-jmx - allows access to the JMX proxy and the status pages
- manager-status - allows access to the status pages only
注,这里我说一下,上面的英文比较简单我就不在里翻译了,大家自己看一下。
下面我们就来启用manager功能,修改tomcat-user.xml文件,添加如下行:
简单解释一下,Tomcat有内置的角色,我们这里增加了两个角色一个为manager-gui,另一个为admin-gui,用户名和密码都为tomcat。
注,增加的内容一定要在
[root@tomcat1 conf]# /etc/init.d/tomcat stop
[root@tomcat1 conf]# /etc/init.d/tomcat configtest
..
INFO: Initialization processed in 1401 ms
好了,下面我们用浏览器查看一下,
注,点击Server Status按钮,让你输入用户名和密码。我这里全部设置是tomcat。
然后,会出现以下界面。显示全部服务器运行状态!大家可以仔细的看一下,我就不带着大家看了。
下面是应用程序部署管理界面,
下面是虚拟主机管理页面,
注,我们一般在生产环境中用的最多是应用程序部署界面,可以进行热布署应用程序,很方便,大家可以尝试一下。好了,图形管理界面我们就说到这里了,下面我们来说一下,Tomcat的一个小案例。我们说了那么多,有朋友就会说了,怎么一个案例也没有呢?下面我们就来布署一个社交网站的案例JavaCenter Home。(我换成了一个 blog 项目)
6.部署JSP网站案例
SHOP++ 是一个可免费用于学习展示使用的JSP项目,我们这里使用 SHOP++ 项目演示JSP网站的部署。
SHOP++ 的部分协议许可如下:
一、协议许可的权利
1、您可以在完全遵守本协议的基础上,将本软件应用于非商业用途(从事非盈利活动的商业机构及非盈利性组织,将本软件用且仅用于产品演示、展示及发布,而并不是用来买卖及盈利的运营活动的),而不必支付软件商业授权费用。
SHOP++官方网站:http://www.shopxx.net
SHOP++交流论坛:http://bbs.shopxx.net
首先,我们来修改一下配置文件,
[root@tomcat conf]# vim server.xml
网站文件放在 /web/webapp/shop 目录下,使用浏览器访问:http://192.168.0.181:8080/shop
点击下一步,看到环境监测页面,我们需要安装 mysql:
数据库的创建不在这里演示了,这里在本地安装好 mysql 之后,为 SHOP++ 创建一个用户 shopuser,数据库名为 shopxx,shop++会自动创建数据库:
mysql> grant all on shopxx.* to shopuser@'localhost' identified by '123456';
Query OK, 0 rows affected (0.03 sec)
mysql> grant all on shopxx.* to shopuser@'127.0.0.1' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
填好之后,点下一步
用户前台地址: http://192.168.0.181:8080/shop
管理后台地址: http://192.168.0.181:8080/shop/admin
第一次初始化需要一点时间,稍微等待一下。
用户前台:
用户管理后台,用户名 admin,密码 admin :
好了,到这里我们的 SHOP++ 基本就配置完成了,我们第一阶段的基本配置就到这里,下一节我们主要讲解Nginx反向代理Tomcat服务器。