1、cd /usr/local/tomcat/

2、在此基础上可以创建几个目录,分别叫/tomcat/webapps,在webapps创建libincla目录,并在此目录下分别创建/WEB-INF和并在WEB-INF之下分别创建/classes和/lib,代表我们要部署一个服务了。

mkdir /tomcat/webapps –pv

cd webapps

mkdir libincla

[root@libincla libincla]# tree WEB-INF/
WEB-INF/
├── classes
└── lib

2 directories, 0 files

3、在libincla目录(注意目录)下面建立一个叫index.jsp页面的文件并查看效果。

image

4、配置tomcat的主配置文件,里面定义出一个新的host或者是新的context把上述修改的给它包含进来。

定义一个新的Host叫libincla.clarinet.com

<Host name="libincla.clarinet.com"  appBase="/tomcat/webapps"
                    unpackWARs="true" autoDeploy="true">
        </Host>

除此之外,还要额外在engine处定义,默认的Host为libincla.clarinet.com

<Engine name="Catalina" defaultHost="libincla.clarinet.com">

关闭并启动catalina.sh 查看效果

image

场景2、

这里上一个操作修改了engine的默认host了,现在有这种情况,如果我们想既想使用刚才定义的libincla服务,还想使用localhost的怎么办?

将/tomcat/webapps/libincla目录都剪切到/usr/local/tomcat/webapps里面去

[root@libincla libincla]# cp -r /tomcat/webapps/libincla/ /usr/local/tomcat/webapps/

再次编辑/usr/local/tomcat/conf/server.xml文档,并且将engine的host改回localhost,去掉下面定义的host,再次catalina.sh stop && catalina.sh start 试一下。

image

而且通过主页上的

image 可以访问到这个定义的服务、

image

另外在主页的server status里,分别定义了服务的所有状态

image 如这个显示 了JVM运行中各JAVA的堆内存都有哪些?

另外如果不想通过修改配置文件部署一个新的服务,可以在Host Manager中

image 直接通过添加按钮添加新的服务选项。此为tomcat的热部署,不太建议此种方法。

场景三、

为tomcat写一个脚本,来控制它,也可以加入服务列表,让它开启自动启动。

#!/bin/sh
#Tomcat init script for Linux
#
#chkconfig 2345 19 88
#JAVA_OPTS='-Xms64m -Xmx128m'
JAVA_HOME=/usr/java/lastest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME

case $1 in
start)
  exec $CATALINA_HOME/bin/catalina.sh start ;;
stop)
  exec $CATALINA_HOME/bin/catalina.sh stop ;;
restart)
  exec $CATALINA_HOME/bin/catalina.sh stop
  sleep 3
  exec $CATALINA_HOME/bin/catalina.sh start ;;
*)
  echo "Make start or stop or restart"
  exit 1
  ;;
esac

然后就可以通过脚本来运行控制tomcat了

[root@libincla libincla]# 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/java/lastest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
/usr/local/tomcat/bin/catalina.sh: line 437: /usr/java/lastest/bin/java: No such file or directory

[root@libincla libincla]# service tomcat start  (tomcat启动了)
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/lastest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

如果想在tomcat定义新的服务,需要定义新的host,如果想在服务中定义一个应用程序实例的话,需要在host中定义新的context,不过默认在java定义中,通过一个服务的根目录是放该服务的主配置文件(注意是该服务),而具体每个应用程序则是在根目录内的其他目录定义的。

引用context文档的解释:

Context组件:
Context在某些意义上类似于apache中的路径别名,一个Context定义用于标识tomcat实例中的一个Web应用程序;如下面的定义:
    <!-- Tomcat Root Context -->
    <Context path="" docBase="/web/webapps"/>
    <!-- buzzin webapp -->
    <Context path="/bbs"
      docBase="/web/threads/bbs"
      reloadable="true">
    </Context>
    <!-- chat server -->
      <Context path="/chat" docBase="/web/chat"/>
    <!-- darian web -->
    <Context path="/darian" docBase="darian"/>

在Tomcat6中,每一个context定义也可以使用一个单独的XML文件进行,其文件的目录为$CATALINA_HOME/conf/<engine name>/<host name>。可以用于Context中的XML元素有Loader,Manager,Realm,Resources和WatchedResource。

常用的属性定义有:
1) docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;切记,docBase的路径名不能与相应的Host中appBase中定义的路径名有包含关系,比如,如果appBase为deploy,而docBase绝不能为deploy-bbs类的名字;
2) path:相对于Web服务器根路径而言的URI;如果为空“”,则表示为此webapp的根路径;如果context定义在一个单独的xml文件中,此属性不需要定义;
3) reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false;

 

场景三:部署一个可应用的应用程序。

3.1

假设访问http://www.libincla.com/jct访问个论坛

所以path=“/jct”,docBase=”jct”

 

前提:因为有可能检索数据,需要数据库,所以安装上mysql。

此环境下,已经部署过mysql

[root@libincla tmp]# service mysqld start
Starting MySQL....                                         [  OK  ]
[root@libincla tmp]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.36-MariaDB-log MariaDB Server

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

同时可以为此在mysql中创建一个可登陆的用户,如叫做jctuser,密码为jctpasswd

mysql> GRANT ALL ON jct.* TO jctuser@127.0.0.1 IDENTIFIED BY 'jctpasswd'
    -> ;
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL ON jct.* TO jctuser@localhost IDENTIFIED BY 'jctpasswd'
    -> ;
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE DATABASE jct;
Query OK, 1 row affected (0.03 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

此环境打算部署一个应用程序,叫JavaCenter_Home

[root@libincla tmp]# ls JavaCenter_Home_2.0_GBK.tar.bz2
JavaCenter_Home_2.0_GBK.tar.bz2

并且编辑tomcat的主配置文件,在engine中再次定义一个新的host,如

<Host name="www.libincla.com"  appBase="/tomcat/webapps"
            unpackWARs="true" autoDeploy="true">
      <Context path="/jct" docBase="jct"/>

解压JavaCenter这个服务

[root@libincla tmp]# tar xf JavaCenter_Home_2.0_GBK.tar.bz2

然后再把它放到/tomcat/webapps目录下叫jct

[root@libincla tmp]# mv JavaCenter_Home_2.0_GBK /tomcat/webapps/jct

jps可以查看启动的java进程的

然后重启访问。

image (题外话:刚才一直被访问不到纠结,原来是忘记添加8080端口了!)

这里需要编辑config.properties 这个文件,从里面添加

[root@libincla libincla]# cd /tomcat/webapps/jct/
[root@libincla jct]# ls
admin        app.jsp     config.properties  crossdomain.xml  editor.jsp   help.jsp   install     link.jsp   network.jsp  space.jsp  userapp.jsp
admincp.jsp  attachment  contact.jsp        data             errors       image      invite.jsp  magic.jsp  rss.jsp      template   WEB-INF
api          avatar.jsp  cp.jsp             do.jsp           favicon.ico  index.jsp  js.jsp      META-INF   source       theme      xmlrpc.jsp
[root@libincla jct]# vim con
config.properties  contact.jsp       
[root@libincla jct]# vim con
config.properties  contact.jsp       
[root@libincla jct]# vim config.properties

image

分别修改连接数据库的用户、密码和库名。

image 这里针对这个应用程序的部署来说需要在URL加上install

填写信息

image

等所有配置好了以后,出现让你设置当前系统的账号

image

image

出现如下画面
image

而且还可以修改头像

image

如果让汤姆猫不去直接响应客户端,由nginx反向代理过来。

那就让汤姆猫工作在in-process模型,即一个主机内,不同进程响应的模型下:如图所示:

image

实现步骤:

1、启动nginx,定义nginx的配置文件,添加如下条目:

image

编辑好,重新启动nginx,并访问一下www.libincla.com/jct/space.jsp文件

image

而我这里如果仅仅是请求主页的话,会由nginx响应并不转发到后方。

image

查看nginx的访问日志,记录了如下的信息,.gif/.jpg的请求由nginx响应了,并未交给后方的tomcat处理,而本身nginx自己的根文件目录下就没有这些.gif/.jpg文件的存在,因此会出现图片未响应的信息状态。

image