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页面的文件并查看效果。
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 查看效果
场景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 试一下。
而且通过主页上的
另外在主页的server status里,分别定义了服务的所有状态
另外如果不想通过修改配置文件部署一个新的服务,可以在Host Manager中
直接通过添加按钮添加新的服务选项。此为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进程的
然后重启访问。
(题外话:刚才一直被访问不到纠结,原来是忘记添加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
分别修改连接数据库的用户、密码和库名。
这里针对这个应用程序的部署来说需要在URL加上install
填写信息
等所有配置好了以后,出现让你设置当前系统的账号
而且还可以修改头像
如果让汤姆猫不去直接响应客户端,由nginx反向代理过来。
那就让汤姆猫工作在in-process模型,即一个主机内,不同进程响应的模型下:如图所示:
实现步骤:
1、启动nginx,定义nginx的配置文件,添加如下条目:
编辑好,重新启动nginx,并访问一下www.libincla.com/jct/space.jsp文件
而我这里如果仅仅是请求主页的话,会由nginx响应并不转发到后方。
查看nginx的访问日志,记录了如下的信息,.gif/.jpg的请求由nginx响应了,并未交给后方的tomcat处理,而本身nginx自己的根文件目录下就没有这些.gif/.jpg文件的存在,因此会出现图片未响应的信息状态。
原文地址:http://libincla.blog.51cto.com/6249823/1559575