[转][笔记] 3.Tomcat系列之服务器的基本配置

转自陈明乾的博客,可能有一定更新。

转原文声明:
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。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

测试访问一下:

Snip20160801_15.png

好了,到这里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 测试一下:

Snip20160802_16.png

为了帮助大家理解,我们这里再次讲解一下,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.setAttribute("abc","abc"); %>
Session ID<%= 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 测试一下,

Snip20160802_17.png

好了,到这里我们的Tomcat虚拟主机的讲解就到这里了,下面我们来说一下Tomcat图形管理接口。

5.Tomcat图形管理接口


  • manager 管理应用程序的部署及监控
  • host-manager 虚拟主机的管理

我们先来看一下默认的图形配置界面,

Snip20160802_18.png

注,大家注意看右上角,我用红色方框标记出来的,大家可以看有三个按钮,分别为

  • 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。

注,增加的内容一定要在之间。不然,不会生效。好了,下面我们一来测试一下配置文件,并重新启动一下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。

Snip20160802_19.png

然后,会出现以下界面。显示全部服务器运行状态!大家可以仔细的看一下,我就不带着大家看了。

Snip20160802_20.png

下面是应用程序部署管理界面,

Snip20160802_21.png

下面是虚拟主机管理页面,

Snip20160802_22.png

注,我们一般在生产环境中用的最多是应用程序部署界面,可以进行热布署应用程序,很方便,大家可以尝试一下。好了,图形管理界面我们就说到这里了,下面我们来说一下,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

Snip20160810_46.png

点击下一步,看到环境监测页面,我们需要安装 mysql:

Snip20160810_47.png

数据库的创建不在这里演示了,这里在本地安装好 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)
Snip20160810_48.png

填好之后,点下一步

Snip20160810_49.png

用户前台地址: http://192.168.0.181:8080/shop
管理后台地址: http://192.168.0.181:8080/shop/admin

第一次初始化需要一点时间,稍微等待一下。

用户前台:

Snip20160810_50.png

用户管理后台,用户名 admin,密码 admin :

Snip20160810_51.png

好了,到这里我们的 SHOP++ 基本就配置完成了,我们第一阶段的基本配置就到这里,下一节我们主要讲解Nginx反向代理Tomcat服务器。

你可能感兴趣的:([转][笔记] 3.Tomcat系列之服务器的基本配置)