Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1808864
  • 博文数量: 636
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3950
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-06 21:58
个人简介

博客是我工作的好帮手,遇到困难就来博客找资料

文章分类

全部博文(636)

文章存档

2024年(5)

2022年(2)

2021年(4)

2020年(40)

2019年(4)

2018年(78)

2017年(213)

2016年(41)

2015年(183)

2014年(66)

我的朋友

分类: 系统运维

2017-04-13 21:39:59

一、认识tomcat


Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和 其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat是稳固的独立的Web服务器与Servlet Container,不过,其Web服务器的功能则不如许多更健全的Web服务器完整,如Apache Web服务器(举例来说,Tomcat没有大量的选择性模块)。不过,Tomcat是自由的开源软件,而且有许多高手致力于其发展。


二、安装Tomcat


1.想要安装tomcat,首先要下载tomcat,建议各位到tomcat官网()直接下载,我这里安装的是tomcat7.0,你也可以选择其他的版本安装比如tomcat6.0/tomcat8.0都行。


2.利用cp命令将apache-tomcat-7.0.61.tar.gz复制到/usr/local/目录下


#cp apache-tomcat-7.0.61.tar.gz /user/local/


3.利用tar命令解压apache-tomcat-7.0.61.tar.gz文件并查看解压后文件目录


#tar –zxvf apache-tomcat-7.0.61.tar.gz


4.利用mv命令重命名


#mv apache-tomcat-7.0.61 tomcat


5.启动tomcat


#./startup.sh


至此,咱们的tomcat已经安装成功!


三、测试安装Tomcat


在浏览器中输入:如出现如下界面则表明安装成功...






































1.JDK的安装
先下载JDK:
 先查看Linux系统是多少位(32位/64位):getconf  LONG_BIT、
Linux 64位下载jdk-7u60-linux-x64.tar.gz


2. 解压安装


2.1选择安装JDK的位置/usr/local/java,如果存在这个目录无需创建,一般新到的机器是没有这个目录的,这个我们创建这个目录。
创建/usr/local/java目录
mkdir /usr/local/java


2.2将jdk-7u60-linux-x64.tar.gz上传到服务器,移动到/usr/local/java。


mv jdk-7u60-linux-x64.gz /usr/local/java  


2.3解压:进入/usr/local/java目录(cd /usr/local/java)解压


tar -zxvf jdk-7u60-linux-x64.gz  


3. 配置环境变量


打开/etc/profile(sudo vim /etc/profile)在最后面添加如下内容:




export JAVA_HOME=/usr/local/javajdk1.7.0_60  
export JRE_HOME=/usr/local/javajdk1.7.0_60/jre  
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib  
export PATH=$PATH:$JAVA_HOME/bin 
或者
export JAVA_HOME=/usr/local/jdk1.8.0_101
export CLASSPATH=.:$JAVA_HOME/lib/
export JRE_HOME=/usr/local/jdk1.8.0_101/jre
export PATH=:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin


让配置生效:


source /etc/profile  


4. 验证


java –version




安装tomcat
.解压移动tomcat文件
tar -zxf apache-tomcat-7.0.54.tar.gz 
mv apache-tomcat-7.0.54 /usr/local/tomcat


2.启动tomcat服务


[root@localhost ~]# /usr/local/tomcat/bin/startup.sh 
Tomcat started.


关闭tomcat 服务


/usr/local/tomcat/bin/shutdown.sh 


3..tomcat 默认运行8080端口


[root@localhost ~]# netstat -anpt | grep "8080"
tcp        0      0 :::8080                     :::*                        LISTEN      3438/java   


        
4.访问tomcat:





5.查看访问日志


tail -f /usr/local/tomcat/logs/catalina.out


2.配置文件说明


ll /usr/local/tomcat/conf
catalina.policy     权限控制文件 
catalina.properties tomcat属性设置文件
context.xml         上下文配置文件
logging.properties  日志log配置
server.xml          主配文件
tomcat-users.xml    manager-gui管理用户的配置文件:
web.xml             servlet servlet-mapping filter MIME 等相关配置






3.主配文件说明


可以修改tomcat的启动端口  网站目录 虚拟主机 开启https等功能


vim /usr/local/tomcat/conf/server.xml 


22


tomcat关闭端口,默认只对本机地址开放。


70     71                connectionTimeout="20000"
72                redirectPort="8443" />
tomcat启动的默认端口为8080 可以更改。


92    
启动AJP1.3连接器的默认端口号;


定义tomcat虚拟主机时的配置及日志文件;
124       125             unpackWARs="true" autoDeploy="true">


136         137                prefix="localhost_access_log." suffix=".txt"
138                pattern="%h %l %u %t "%r" %s %b" />
139 
140      





四、建立java的web站点


1.在根目录下建立一个web目录,里面建立个webapp1目录;


mkdir -p /web/webapp1




2.在目录下建立个index.jps测试页面


vim /web/webapp1/index.jsp 


   
Now time is: <%=new java.util.Date()%>







3.修改tomcat的server.xml文件  定义一个虚拟主机,并指定网站文件路径
vim /usr/local/tomcat/conf/server.xml 
126
127



4.完整的虚拟主机配置


            unpackWARs="true" autoDeploy="true">


       
       


       
                       prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
     
     



     

5.访问


显示出当前时间  成功!




6.tomcat可以使用service启动的脚本
vi /etc/init.d/tomcat 
#!/bin/bash
# chkconfig: - 99 20
# description:tomcat


PROG="/usr/local/tomcat/bin/startup.sh"
STOP="/usr/local/tomcat/bin/shutdown.sh"
case $1 in
start)
$PROG
;;
stop)
$STOP
;;
restart)
$STOP
$PROG
;;
*)
echo "useage:$0 {start|stop|restart|reload}"
exit 1
esac
exit 0
   1.添加x权限,添加为系统服务
chmod +x /etc/init.d/tomcat && ls -l /etc/init.d/tomcat
chkconfig --add tomcat && chkconfig tomcat on && chkconfig --list tomcat
错误:
error:


Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 


At least one of these environment variable is needed to run this program


解决办法:


只 要在setclasspath.bat的开头声明环境变量,打开tomcat的bin目录下面的setclasspath.sh,添加上java变量声明。
25 export JAVA_HOME=/usr/local/jdk1.8.0_101
26 export JRE_HOME=/usr/local/jdk1.8.0_101/jre   
































JDK的安装:
下载jdk安装包
wget
解压安装包
tat -zxvf jdk-8u101-linux-x64.tar.gz
复制解压出来的目录到/usr/local目录下
mv jdk1.8.0_101/ /usr/local/
编写java.sh的shell脚本
vim /etc/profile.d/java.sh
JAVA_HOME=/usr/local/jdk1.8.0_101
JAVA_BIN=/usr/local/jdk1.8.0_101/bin
JRE_HOME=/usr/local/jdk1.8.0_101/jre
PATH=$PATH:/usr/local/jdk1.8.0_101/bin:/usr/local/jdk1.8.0_101/jre/bin
CLASSPATH=/usr/local/jdk1.8.0_101/jre/lib:/usr/local/jdk1.8.0_101/lib:/usr/local/jdk1.8.0_101/jre/lib/charsets.jar
source /etc/profile.d/java.sh 应用此sh
注意:需要卸载服务器自带的java版本
tomcat安装
下载tomcat安装包
wget
解压tomcat安装包
tar -zxvf apache-tomcat-8.0.36.tar.gz
移动解压出来的tomcat安装包到/usr/local/tomcat
mv apache-tomcat-8.0.36 /usr/local/tomcat
复制启动脚本到启动服务目录
cd /usr/local/tomcat
cp -v bin/catalina.sh /etc/init.d/tomcat
为启动服务脚本赋予777权限
chmod 777 /etc/init.d/tomcat
编辑启动脚本:vim /etc/init.d/tomcat
添加一下内容:
#chkconfig: 2345 63 37
. /etc/init.d/functions
JAVA_HOME=/usr/local/jdk1.8.0_101
CATALINA_HOME=/usr/local/tomcat
添加服务到启动列表:
chkconfig --add tomcat
chkconfig tomcat on
启动服务:
/etc/init.d/tomcat start
关闭防火墙,客户端浏览器访问服务器IP:8080即可看到tomcat首页页面
配置tomcat
1. 配置tomcat服务的访问端口
tomcat默认启动的是8080,如果你想修改为80,则需要修改server.xml文件:
vim /usr/local/tomcat/conf/server.xml
找到:
修改为:
2. 配置新的虚拟主机
cd /usr/local/tomcat/conf/ vim server.xml
找到下一行插入新的内容如下:
   
保存后,重启tomcat:
service tomcat stop service tomcat start
测试tomcat
先创建tomcat的测试文件:
vim /data/tomcatweb/111.jsp
加入如下内容:
   Now time is: <%=new java.util.Date()%>

保存后,使用curl测试:
[root@localhost ~]# curl -xlocalhost:80 /111.jsp
看看运行结果是否是:
   Now time is: Thu Jun 13 15:26:03 CST 2013
 




















安装tomcat(二进制)
tar zxvf apache-tomcat-8.0.43.tar.gz -C /usr/local/
tar zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk1.8.0_121/ java #将JDK改名为Java
mv /usr/local/apache-tomcat-8.0.43/ tomcat8 #改为tomcat8
vim /etc/profile.d/java.sh #为Java配置环境变量
添加:
export JAVA_HOME=/usr/local/java #指定根目录
export PATH=$JAVA_HOME/bin:$PATH #Java的可执行脚本
. /etc/profile.d/java.sh #重读配置文件
java -version #验证Java是否生效


tomcat运行配置:
ln -s /usr/local/tomcat8/bin/catalina.sh /usr/local/bin/tomcat #创建启动脚本
tomcat start #启动tomcat
tomcat stop #停止tomcat(默认5秒后停止)
stop -force #强制停止tomcat
tomcat configtest #检查配置文件
tomcat version #查看tomcat版本
tomcat start #启动tomcat
netstat -napt | grep 8080 #tomcat默认监听在8080端口


tomcat目录结构:
bin:可执行脚本
conf:配置文件
lib:运行时依赖的库文件
logs:日志文件
webapps:web应用所在目录,web资源的存放目录
work:tomcat的工作目录


tomcat配置文件: 
conf/server.xml:主配置文件      
                   connectionTimeout="20000" #超时时间
               redirectPort="8443" /> #重定向端口
  
       name="localhost"  appBase="webapps"    #主机名,网站根目录
            unpackWARs="true" autoDeploy="true"
#虚拟主机配置

conf/tomcat-users.xml:密码配置文件
#配置后台管理密码
 


编写tomcat重启脚本:tomcat没有自带重启脚本,需要自己手动编写






#!/bin/bash
tomcat stop 0 &>/dev/null
x=$?
tomcat start &>/dev/null
y=$?
 
if [ $x -eq 0 ];then
    echo -e '\033[32m   stop tomcat OK\033[0m'
else
    echo -e '\033[32m   stop tomcat False\033[0m'
fi
 
if [ $y -eq 0 ];then
    echo -e '\033[32m   start tomcat OK\033[0m'
else
    echo -e '\033[31m   start tomcat False\033[0m'
fi










tomcat配置实例:(省略部分内容)


 
                   connectionTimeout="20000"
               redirectPort="8443" />


   
                  unpackWARs="true" autoDeploy="true">
            #网站根目录
     

   

 




webapp配置:
cd /usr/local/tomcat8/webapps/
mkdir myapp #创建根目录
vim index.jsp #创建首页

访问:          #测试网站是否成功








单台linux下配置多个tomcat


前几天开发需求单台linux安装多个tomcat,研究了下,配置如下
1,在/usr/local/下部署两个tomcat7,tomcat8 。两个版本不一样哦。
2,修改/etc/profile文件,加入下面内容
vi  /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_92
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH


####tomcat7
TOMCAT_HOME=/usr/local/tomcat7/
CATALINA_HOME=/usr/local/tomcat7/
CATLINA_BASE=/usr/local/tomcat7/
export TOMCAT_HOME  CATALINA_HOME  CATALINA_BASH


####tomcat8
TOMCAT_HOME_1=/usr/local/tomcat8/
CATALINA_HOME_1=/usr/local/tomcat8/
CATLINA_BASE_1=/usr/local/tomcat8/
export TOMCAT_HOME_1  CATALINA_HOME_1  CATALINA_BASH_1


TOMCAT_HOME=/usr/local/tomcat7
export TOMCAT_HOME


TOMCAT_HOME_1=/usr/local/tomcat8
export  TOMCAT_HOME_1
3,修改tomcat配置文件 ,
    tomcat7保持不变;
     修改tomcat8配置如下:
     在/usr/local/tomcat8/bin下,修改startup.sh 和 shutdown.sh  两个文件,在文件#!/bin/sh下面入如下:
 export JAVA_HOME=/usr/java/jdk1.8.0_92/
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin


export  CATALINA_HOME=$CATALINA_HOME_1
export  CATLINA_BASE=$CATLINA_BASE_1
4,修改tomcat8/conf/server.xml 文件,
          #将原8005改为8006
                 maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="120000" disableUploadTimeout="true"  URIEncoding="UTF-8" />
                                ##将8009改为8010
   
5,重启tomcat。
 /usr/loca/tomcat7/bin/startup.sh
 /usr/loca/tomcat8/bin/startup.sh
访问地址    














Tomcat发布网站修改端口、修改默认发布目录、多域名绑定)


环境:
Tomcat 8+jdk 8 


一、修改发布端口号为80(Tomcat默认为8080)
打开配置文件(偶的如下:D:\Program Files\Tomcat\conf\server.xml),找到:
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" />
修改后:
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" />
其实这里就是把port:8080,修改成port:80就可以了,其他的参数不变。这样客户机在访问服务器时直接输入IP或域名就可以了。
二、修改tomcat发布路径(默认路径:D:\Program Files\Tomcat\webapps\ROOT)
打开配置文件(偶的如下:D:\Program Files\Tomcat\conf\server.xml),找到:



unpackWARs="true" 


xmlValidation="false" xmlNamespaceAware="false"> 




标签之间添加上:

path是说明虚拟目录的名字,如果你要只输入ip地址就显示主页,则该键值留为空;
docBase是虚拟目录的路径,它默认的是$tomcat/webapps/ROOT目录,现在我在webapps目录下建了一个photo目录,让该目录作为我的默认目录。
debug和reloadable一般都分别设置成0和true。
这样,再访问服务器时就找$tomcat/webapps/photo下的页面了~~~~~
三、多域名绑定
打开配置文件(偶的如下:D:\Program Files\Tomcat\conf\server.xml),找到:



unpackWARs="true" 


xmlValidation="false" xmlNamespaceAware="false"> 




修改为:





resourceName="UserDatabase"/>




unpackWARs="true" 


xmlValidation="false" xmlNamespaceAware="false"> 







unpackWARs="true" 


xmlValidation="false" xmlNamespaceAware="false">







unpackWARs="true" 


xmlValidation="false" xmlNamespaceAware="false"> 






这里解释一下上面的配置
Engine 的 dafaultHost :表示访问该tomcat默认进入的主机,注意一定不能是localhost,不然别人通过你的ip访问,就会默认进入tomcat的管理界面.
Host 的 name:表示该主机绑定的域名,如果绑定localhost则可以通过在浏览器中输入localhost访问该Host.
Host的 appBase:表示该主机绑定的文件存放路径,可以使用相对路径或绝对路径.
按照上面的配置:
1.如果我在浏览器中输入 则访问 D:\Program Files\Tomcat\webapps\ROOT 下的网站
2.如果输入 则访问 D:\Program Files\Tomcat\abcapps\ROOT 下的网站
3.如果输入 则访问 D:\Program Files\Tomcat\test\ROOT 下的网站








将web项目发布到Tomcat 服务器上的三种方法


1、在conf目录中新建Catalina\localhost目录,在该目录中新建一个xml文件,名字可以随意取,只要和当前文件中的文件名不重复就行了。
在Tomca的安装目录 conf/Catalina/localhost下,里面有Tomcat自带的三个应用,随意复制其中的一个XML文件,然后修改docbase指向你自己的应用程序,并把文件名改名,
改xml文件的内容为:
reloadable="false" debug="0"
privileged="true" >

xml的文件名必须和path的名字一致。
 (注意xml文件名(例如:hello.xml)将作为Context中的path属性值,不管文件里的path属性值如何设置也是无效的)
上面例子的访问路径是:/hello
 
2、直接放到Webapps目录下
Tomact的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。也可以将JSP程序打包成一个war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成同名的文件夹,一个war包就是有特性格式的jar包,它是讲一个Web程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的IDE环境,如Eclipse、NetBeans、ant、JBuilder等。也可以用cmd
命令: jar -cvf applicationname.war package.*
  将HelloWeb目录拷贝到$CATALINA_HOME/webapps下,然后启动服务器就可以了,Tomcat启动时应用自动加载。访问地址:/hello/
    Webapps这个默认的应用目录也可以改变。打开Tomcat的conf目录下的server.xml文件,找打下面的内容:
 unpackWARs="true"autoDeploy="true"  xmlValidation="false"xmlNamespaceAware="false">
将appBase修改即可.
3 . 在server.xml中指定
这种方式可以不必将PetWeb目录拷贝到webapps下,直接在"D:/myWork"下部署。方法如下,更改$CATALINA_HOME/conf/server.xml文件,
在Tomcat的配置文件中,一个Web应用就是一个特定的Context, 可以通过在server.xml中新建Context里部署一个JSP应用程序。打开server.xml文件,在Host标签内建立一个Context,内容如下。
  在tomcat中的conf目录下,在server.xml中,节点中添加:
  
(1)path:是访问时的根地址,表示访问的路径;如上述例子中,访问该应用程序地址如下:/hellooo/
(2)docBase是应用程序的物理路径,表示应用程序的路径,注意斜杠的方向“/”。docBase可以使用绝对路径,也可以使用相对路径,相对路径相对于webapps。
(3)workDir是这个应用的工作目录,存放运行时生成的这个应用相关的文件,表示缓存文件的放置地址
(4)debug 则是设定debug level, 0表示提供最少的信息,9表示提供最多的信息;
(5)privileged 设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet
(6)reloadable如果为true则tomcat会自动检测应用程序的/WEB-INF/lib  和 /WEB-INF/classes 目录的变化,自动装载新的应用程序,可以再不重启tomcat的情况下改变应用程序,实现热部署 antiResourseLocking 和 antiJARLocking 热部署是需要篇配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把响应的源文件和jar文件复制到一个临时目录里。
这个方法可以定义别名,服务器端运行的项目名称为path,外部访问的URL则使用XML的文件名。这个方法很方便的隐藏了项目的名称,对一些项目名称被固定不能更换,但外部访问时又想换个路径,非常有效。
注意: 删除一个Web应用同时也要删除webapps下相应的文件夹和server.xml中相应的Context,还要将Tomcat的conf\Catalinal\localhost目录下相应的xml文件删除,否则Tomcat仍会去配置并加载...
二动态部署
     登陆tomcat管理控制台:/,输入用户名和密码后便可管理应用并动态发布。
     在ContextPath(option):中输入/yourwebname ,这代表你的应用的访问地址。
    XML Configration file URL中要指定一个xml文件,比如我们在F:\下建立一个hmcx.xml文件,内容如下: 其中docBase不用写了,因为在下一个文本框中填入。或者更简单点,这个文本框什么都不填,在WAR or Directory URL:中键入F:\hmcx即可,然后点击Deploy按钮,上面就可以看到了web应用程序,名字就Context Path(option):中的名字。
 
    如果部署.war文件还有更加简单的方式,下面还有个Select WAR file uploae点击浏览选择.war文件,然后点击Deploy也可以。






1、直接放到Webapps目录下
Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。也可以将JSP程序打包成一个war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个Web程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的IDE环境,如Eclipse、NetBeans、ant、JBuilder等。也可以用cmd
命令:jar -cvf applicationname.war package.*;
甚至可以在程序执行中打包:
try{   
string strjavahome = system.getproperty("java.home");   
strjavahome =
strjavahome.substring(0,strjavahome.lastindexof(\\))+"\\bin\\";
runtime.getruntime().exec("cmd /c start "+strjavahome+"jar cvf hello.war
c:\\tomcat5.0\\webapps\\root\\*");
}   
catch(exception   e){system.out.println(e);}




webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的server.xml文件,找到下面内容:
autoDeloy="true" xmlValidation="falase" xmlNamespaceAware="false">




2、在server.xml中指定(实际中比较常见)
在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个JSP应用程序。打开server.xml文件,在Host标签内建一个Context,内容如下。
workDir="D:\myapp\work"/>
其中path是虚拟路径,docBase是JSP应用程序的物理路径,workDir是这个应用的工作目录,存放运行是生成的于这个应用相关的文件。




3、创建一个Context文件
以上两种方法,Web应用被服务器加载后都会在Tomcat的conf\catalina\localhost目录下生成一个XML文件,其内容如下:
debug="0" privileged="true">
可以看出,文件中描述一个应用程序的Context信息,其内容和server.xml中的Context信息格式是一致的,文件名便是虚拟目录名。您可以直接建立这样的一个xml文件,放在Tomcat的conf\catalina\localhost目录下。例子如下:
注意:删除一个Web应用同时也要删除webapps下相应的文件夹祸server.xml中相应的Context,还要将Tomcat的conf
\catalina\localhost目录下相应的xml文件删除。否则Tomcat仍会岸配置去加载。。。 




tomcat部署web应用主要有以下几种方式:


1.拷贝你的WAR文件或者你的web应用文件夹(包括该web的所有内容)到$CATALINA_BASE/webapps目录下。
2.为你的web服务建立一个只包括context内容的XML片断文件,并把该文件放到$CATALINA_BASE/webapps目录下。这个web应用本身可以存储在硬盘上的任何地方。这种context片断提供了一种便利的方法来部署web应用,你不需要编辑server.xml,除非你想改变缺省的部署特性,安装一个新的web应用时不需要重启动Tomcat。
3.
同方法2,只是将context片断放在CATALINA_BASE\conf\Catalina\localhost目录下.这种方法比方法2>要有效,笔者经过多次实验发现方法2不如后面这种方法好用.前者多次出现系统打不开的情况.
4.直接在server.xml中
前加上Context片断,使用这种方法时,tomcat会自动在CATALINA_BASE\conf\Catalina\localhost目录下生成一个文件片断.方法同方法3具有同样效果.这种方式需要将ROOT目录删除才行.




另外,为了让tomcat只运行conf/server.xml中指定的web应用,可以有以下几种办法:
实现一:
1)将要部署的WEB应用放在webapps以外的路径, 并在server.xml相应的context中的docBase指定.
2)删除webapps中的所有文件夹, 以及conf/catalina/localhost下所有xml文件.
注: webapps是server.xml中的Host元素的appBase属性的值. 
实现二:
1) 修改server.xml中Host元素的属性, 添加或修改: deployXML="false"
deployOnStartup="false" autoDeploy="false"
2) 含义:
deployXML="false": 不部署conf/catalina/localhost下的xml相应的WEB应用
deployOnStartup="false" : tomcat启动时, 不部署webapps下的所有web应用
autoDeploy="false": 避免tomcat在扫描改动时, 再次把webapps下的web应用给部署进来.


































一、安装jdk
下载地址:
下载完成后生成一个bin文件或者用jdk.tar.gz包
 
方法1,用jdk的rpm.bin方式安装tomcat环境jdk
1. 安装 JDK 之前,先检查下有没有系统自带的 JDK,如果存在建议卸载,检查:
 [root@agent2 ~]# rpm -qa | grep -i Java
2. 卸载以 java 开头的文件
[root@agent2 ~]# rpm -e --nodeps java_cup-0.10k-5.el6.x86_64 --nodeps
 
3. 卸载完后输入:
[root@agent2 ~]# java -version
 提示-bash: java: command not found,表示已卸载成功。
4. 安装
上传jdk到/root
修改其权限:chmod775 xxxxxx.bin 执行 ./xxxxxx.bin首先执行安装.bin 文件的命令:
执行完成后生成一个jdk1.6.0_23的文件夹。
[root@agent2 ~]# ./jdk-6u22-Linux-x64-rpm.bin
 安装 rpm 包:
[root@agent2 ~]# rpm -ivh jdk-6u22-linux-amd64.rpm --nodeps --force
 如果无法安装,要增加执行权限  chmod +xjdk-6u22-linux-x64-rpm.bin(jdk-6u22-linux-amd64.rpm ) 
方法2,用tar.gz的jdk 部署tomcat的jdk环境
 
 
二、添加tomcat用户,配置环境变量
说明,我这里用的是第二种安装jdk的方法
为安全起见这里仅采用修改用户环境变量的方式设置环境变量,即不用root账户。而是创建一个tomcat账户,使用jdk的用户为tomcat,可用来单独管理 tomcat 的相关服务,如果是root用户,可以在/etc/profile中设置环境变量
添加tomcat 用户、密码,tomcat下载地址: 
 [root@agent2 ~]# useradd tomcat
 [root@agent2 ~]## passwd tomcat
切换到 tomcat 用户:
[root@agent2 ~]## su - tomcat
 
修改文件后要想马上生效还要运行source /home/tomcat/.bash_profile 不然只能在下次重进此用户时生效。修改环境变量
 使用 tomcat 用户 vi /home/tomcat/.bash_profile 文件,加入如下内容,如图:
export JAVA_HOME=/usr/local/tomcat_jdk //我的jdk安装路径
export CLASSPATH=.:$JAVA_HOME/lib.tools.jar 
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
export CATALINA_BASE=/usr/local/tomcat   //我的tomcat安装路径
export CATALINA_HOME=/usr/local/tomcat
在终端使用echo命令检查环境变量设置情况,安装好后查看 jdk 版本
#echo $JAVA_HOME
#echo $CLASSPATH
#echo $PATH
检查JDK是否安装成功:
#java -version
如果看到JVM版本及相关信息,即安装成功
 
三、安装tomcat
1、root 用户将文件包进行解压,执行如下命令
[root@agent2 ~]# cd /
[root@agent2 ~]# apache-tomcat-7.0.42
[root@agent2 ~]# mv apache-tomcat-7.0.42 /usr/local/tomcat
 
2、配置管理用户
将/usr/local/tomcat/ 的所有文件拥有者改为 tomcat,执行命令:
[root@agent2 ~]# chown -R tomcat:tomcat /usr/local/tomcat/
 
设置tomcat用户
tomcat-users.xml
之间添加下面语句




其中用户名为tomcat,密码为tomcat的是用来登录tomcat的Host Manager的,而用户名为admin,密码为1234是用来登录tomcat的App Manager的
 
3、启动 tomcat,提示 tomcat 启动信息,如下
[root@agent2 ]#cd /usr/local/tomcat/bin
[root@agent2 bin] #./startup.sh
[root@agent2 bin]# chmod 755 startup.sh
[root@agent2 bin]# ./startup.sh
Cannot find ./catalina.sh
The file is absent or does not have executepermission
This file is needed to run this program
[root@agent2 bin]# chmod 777 *.sh
[root@agent2 bin]# ./startup.sh
Neither the JAVA_HOME nor the JRE_HOMEenvironmentvariable is defined
At least one of these environment variableis needed torun this program
[root@agent2 bin]#
 
 
 
4、查看 java 进程和tomcat默认的8080端口是否已经开启
[root@agent2 bin]# ps axuwf|grep java
root       7539  0.0  0.0103252   828 pts/1    S+   17:29  0:00  |       \_ grep java
root       7519 18.4  3.8 2484700 98416pxs/1   Sl   17:28   0:06/usr/local/tomcat_jdk/bin/java-Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar-Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat-Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrapstart
[root@agent2 bin]# netstat -lnpt | grep 8080
tcp        0      0:::8080                    :::*                       LISTEN      7519/java          
[root@agent2 bin]#
 
5、设置tomcat开机自启动
修改/etc/rc.local文件再最后添加如下内容
JAVA_HOME=/usr/local/tomcat_jdk
export JAVA_HOME
 
6、测试
测试tomcat 打开ie,输入URL 地址:8080 可以看到tomcat的启动欢迎页面,证明tomcat配置正确,在tomcat/conf/server.xml中可以修改默认的端口号:例如修改成8088,注意:不要像在windows里面一样去增加元素
 


四、优化调整
 
1、字符集和线程数设置
Tomcat6 字符集修改文件:/usr/local/tomcat/conf/server.xml,打开,搜索 Connector port="8080",找到类似如下代码区域:
   connectionTimeout="20000" 
   redirectPort="8443"
 maxThreads="600" 
 minSpareThreads="100"
 maxSpareThreads="500" 
 acceptCount="700" 
 enableLookups="false"
 URIEncoding="utf-8"/>
 
2、JVM 设置
加大tomcat可以使用的内存,在/usr/local/tomcat/bin/catalina.sh前面增加如下内容:
JAVA_OPTS="-server –Xms1024m -Xmx1024m -XX:PermSize=64M-XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true"
 
五、遇到的问题
在windows中修改catalina.sh后用ssh上传到linux执行报错
    问题:
    由于tomcat内存溢出,在windows下修改了catalina.sh,然后通过ssh传到linux服务器上,执行catalina.sh时出现如下错误:
Cannot find ./catalina.sh   
This file is needed to run this program  
解决方案
    .sh文件都不是可执行文件,于是找到命令:chmod +x *.sh,这个命令的意思是让所有的.sh文件都可执行。再次执行sh catalina.sh通过,然后用sh startup.sh成功启动。
如果输入上面url访问失败,即tomcat启动失败,请用下面的方法来尝试处理
(1).权限问题,用户权限和文件是否有可执行权限。
a.普通用户权限一般不足,用chmod命令给用户加权限,我是用root用户来进行安装的,因此没有遇到这个问题。
b.文件的权限不够,大部分时候是没有可执行权限。我在安装过程中失败后,给下面文件(xxxxx.bin)文件夹中所有文件赋予了可执行权限。可用下面的命令。
# chmod 777 "文件名" (如:#chmod 777 startup.sh)
(2)防火墙和端口问题查看tomcat的8080端是否开启
首先确定是不是防火墙问题,可以运行下面命令将防火墙服务关闭,然后再访问看是否正常。如果正常,说明是防火墙问题,我安装过程就是遇到这个问题,后来发现时防火墙问题,用下面方法解决掉






tomcat配置管理(二):基于多端口的tomcat配置


一,设置环境变量
 在source /home/tomcat/.bash_profile或者/etc/profile中设置环境变量
export PATH
#set java evironment
JAVA_HOME=/usr/local/tomcat_jdk
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH


#第一个Tomcat,7版本
CATALINA_BASE=/usr/local/tomcat7
CATALINA_HOME=/usr/local/tomcat7
export CATALINA_BASE CATALINA_HOME
#第二个Tomcat,8版本
CATALINA_8_BASE=/usr/local/tomcat8
CATALINA_8_HOME=/usr/local/tomcat8
export CATALINA_8_BASE CATALINA_8_HOME
#第三个Tomcat,9版本
CATALINA_9_BASE=/usr/local/tomcat9
CATALINA_9_HOME=/usr/local/tomcat9
export CATALINA_9_BASE CATALINA_9_HOME


#第一个Tomcat路径
TOMCAT_HOME=/usr/local/tomcat8
export TOMCAT_HOME
#第二个Tomcat路径
TOMCAT_2_HOME=/usr/local/tomcat8
export TOMCAT_2_HOME
#第三个Tomcat路径
TOMCAT_9_HOME=/usr/local/tomcat9
export TOMCAT_9_HOME


source  /home/tomcat/.bash_profile


二、修改配置端口:
第一个tomcat解压出来不用修改,把第二个tomcat_2/conf下的server.xml打开
tomcat服务器需配置三个端口才能启动,安装时默认启用了这三个端口,当要运行多个tomcat服务时需要修改这三个端口,不能相同。修改的三个端口都不能被其它程序所占用,运行更多tomcat方法是一样的。
端口一:
修改http访问端口(默认为8080端口),配置文件为tomcat\ conf\service.xml
       
 
注意要把端口添加到防火墙配置里面
AJP端口,即容器使用,如 APACHE能通过AJP协议访问Tomcat的8009端口,一般用nginx+tomcat或者apache+tomcat整合
AJP端口不修改有可能启动会报错,但程序可以跑起来,所以可以把AJP端口也修改了。
 
三、设置tomcat调用的系统环境变量
主要要点就是tomcat启动的时候会去查找tomat 的根目录,而这是通过查询系统环境变量CATALINA_HOME 以及
CATALINA_BASE 来做到的,于是我们只需要设置这两个变量即可。
现在我们把tomcat拷贝成2份,分别为 tomcat1 和 tomcat2,tomcat1我们使用之前配置好的默认配置
(CATALINA_HOME 以及CATALINA_BASE 均指向 tomca1 目录),但tomcat2我们不能再使用系统上配置的这两个
变量了,那么我们就在 tomcat2的bin目录下面的 catalina.sh 临时修改设置 CATALINA_HOME 和 CATALINA_BASE
为tomcat2的根目录即可,如果再加tomcat以此类推即可。或者添加不同版本的tomcat,这里我做实验使用的tomcat的
 多个版本打开catalina.sh,找到下面红字,在下面增加如下代码
 # OS specific support. $var_must_ be set to either true or false.
# myself : add
export CATALINA_BASE=$CATALINA_8_BASE
export CATALINA_HOME=$CATALINA_8_HOME
#设置虚拟机参数
JAVA_OPTS="-server-Xms512m-Xmx512m -Xss512K -XX:PermSize=128m -XX:MaxPermSize=256m"


四、测试


由于我的虚拟机关了,具体的结果业比较的简单就不说了。查看进程是否正常启动,对应的端口是否都存在,然后测试,其实重点是环境变量设置,tomcat端口的合理规划


或者localhosts或者127.0.01:访问端口号




tomcat配置管理(三):基于多实例的tomcat配置管理


实验环境介绍:
红帽Redhat6.6,tomcat和jdk就不再介绍直接在tomcat配置管理一和管理二的基础上进行下一步的扩展
首先需要设置java环境变量
#set java evironment
JAVA_HOME=/usr/local/tomcat_jdk
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH


#第一个Tomcat,7版本
CATALINA_BASE=/usr/local/tomcat7
CATALINA_HOME=/usr/local/tomcat7
export CATALINA_BASE CATALINA_HOME


#第二个Tomcat,8版本
CATALINA_8_BASE=/usr/local/tomcat8
CATALINA_8_HOME=/usr/local/tomcat8
export CATALINA_8_BASE CATALINA_8_HOME


#第三个Tomcat,9版本
CATALINA_9_BASE=/usr/local/tomcat9
CATALINA_9_HOME=/usr/local/tomcat9
export CATALINA_9_BASE CATALINA_9_HOME


#第一个Tomcat路径
TOMCAT_HOME=/usr/local/tomcat7
export TOMCAT_HOME
#第二个Tomcat路径
TOMCAT_8_HOME=/usr/local/tomcat8
export TOMCAT_8_HOME
#第三个Tomcat路径
TOMCAT_9_HOME=/usr/local/tomcat9
export TOMCAT_9_HOME


在此基础上,我们对tomcat8做多实例配置:tomcat8的环境变量需要做如下配置
CATALINA_8_BASE=/usr/local/tomcat-instance/mydomain.com
CATALINA_8_HOME=/usr/local/tomcat8
export CATALINA_8_BASE CATALINA_8_HOME


然后在/usr/local/下创建一个文件夹tomcat-instance(该文件夹用于存放tomcat所有实例),与tomcat8同级别目录,并在这个文件夹下分别创建mydomain.com和mysite.com两个实例文件夹:
mkdir tomcat-instance
cd tomcat-instance
mkdir mydomain.com
mkdir mysite.com
对于mydomain.com,依次做以下步骤:
1. 拷贝Tomcat安装目录的conf文件夹下的所有内容,到mydomain.com文件夹下:
cd mydomain.com
cp -a /usr/local/tomca8/conf .
mkdir common logs temp server shared webapps work
2.修改mydomain.com/conf/server.xml,中三个端口号
我的规划是:
tomcat7
关闭断后号是8005+1 ,启动端口号是8080+1,AJP端口号是8009+1
tomcat 8
关闭断后号是8005+2 ,启动端口号是8080+1,AJP端口号是8009+2
tomcat-instance
关闭断后号是8005+3 ,启动端口号是8080+1,AJP端口号是8009+3
tomcat9
关闭断后号是8005+4 ,启动端口号是8080+1,AJP端口号是8009+4


3.删除server.xml中所有的Context元素(因为这份server.xml来自于tomcat的安装目录,如果曾经用该tomcat部署过项目,server.xml中就会有Context元素,由于现在没有将这些项目复制到mydomain.com实例的webapps文件夹下)及嵌套的所有元素,并加入与自己的webapps相关的内容。


4.修改tomcat8的bin下的catalina.sh,添加如下选项
# OS specific support.  $var _must_ be set to either true or false.
#add myself
export CATALINA_BASE=$CATALINA_8_BASE
export CATALINA_HOME=$CATALINA_8_HOME
#export CATALINA_8_HOME=/usr/local/tomcat8
#export ATALINA_8_BASE=/usr/local/tomcat-instance/mydomain.com


5.为了简化变量设置步骤,创建tomcat启动脚本start-mydomain.sh,并将该文件放在tomcat-instance目录下,该文件的内容如下:[root@agent2 tomcat-instance]# ls
mydomain.com  mysite.com  start-mydomain.sh
[root@agent2 tomcat-instance]# pwd
/usr/local/tomcat-instance
[root@agent2 tomcat-instance]# cat start-mydomain.sh 
#!/bin/bash
export CATALINA_8_BASE=/usr/local/tomcat-instance/mydomain.com
export CATALINA_8_HOME=/usr/local/tomcat8


cd $CATALINA_8_HOME
./bin/catalina.sh start     //注明:停止脚本把catalina.sh 改成shudown.sh即可
[root@agent2 tomcat-instance]# 






6.修改脚本的权限,使其可执行:chmod 700 start-mydomain.sh
7.用脚本启动tomcat实例:
[root@agent2 tomcat-instance]# sh start-mydomain.sh 
Using CATALINA_BASE:   /usr/local/tomcat-instance/mydomain.com
Using CATALINA_HOME:   /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat-instance/mydomain.com/temp
Using JRE_HOME:        /usr/local/tomcat_jdk
Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
[root@agent2 tomcat-instance]# 
可以看到,这个实例使用的CATALINA_BASE是instance/mydomain.com,这里的CATALINA_HOME是安装tomcat的目录。


8.拷贝示例文件到mydomain.com/webapps/mydoamin目录,从浏览器验证启动的tomcat实例
实例文件可以编辑一个html可以放置一张图片
:8083/mydomain
另一个实例mysite.com也按照1~8的步骤依次进行,但是注意以下步骤的不同配置:


2)Server端口号修改为8080+5。
3)Connector端口号修改为8080+5。
5)脚本中的CATALINA_BASE修改为/home/user/Software/tomcat-instance/mysite.com。


另外用脚本启动mysite.com实例的路径也需要更改下


[root@agent2 tomcat-instance]# ps -ef | grep java
root       6105      1  9 15:48 pts/1    00:00:03 /usr/local/tomcat_jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat-instance/mysite.com/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat-instance/mysite.com -Dcatalina.home=/usr/local/tomcat8 -Djava.io.tmpdir=/usr/local/tomcat-instance/mysite.com/temp org.apache.catalina.startup.Bootstrap start
root       6139      1 47 15:49 pts/1    00:00:03 /usr/local/tomcat_jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat-instance/mydomain.com/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat-instance/mydomain.com -Dcatalina.home=/usr/local/tomcat8 -Djava.io.tmpdir=/usr/local/tomcat-instance/mydomain.com/temp org.apache.catalina.startup.Bootstrap start
root       6163   2876  0 15:49 pts/1    00:00:00 grep java
[root@agent2 tomcat-instance]# 


当把Web应用的文件和Tomcat发行版的文件分开管理后,升级Tomcat将会变得十分容易,因为我们可以用新目录直接替换整个Tomcat发行版的目录。


小结:在建立多个tomcat配置是一定合理规划端口,避免端口占用服务起不来,浪费时间调整端口还不如提前先规划号端口设置。在做第二个实例的时候我发现下面的理解有点问题:


在此基础上,我们对tomcat8做多实例配置:tomcat8的环境变量需要做如下配置
CATALINA_8_BASE=/usr/local/tomcat-instance/mydomain.com
CATALINA_8_HOME=/usr/local/tomcat8
export CATALINA_8_BASE CATALINA_8_HOME


CATALINA_8_BASE应该还是设置tomcat8的安装路径,要是有有一万个实例,那我这里不要配置一万个新base,然后在tomcat8的bin/catalina.sh做环境变量映射
export CATALINA_BASE=$CATALINA_8_BASE
export CATALINA_HOME=$CATALINA_8_HOME


最后在实例的同一级别目录去设置区设置启动脚步,脚本中的环境变量才是实际实例路径中的配置路径
[root@agent2 tomcat-instance]# cat start-mydomain.sh 
#!/bin/bash
export CATALINA_8_BASE=/usr/local/tomcat-instance/mydomain.com
export CATALINA_8_HOME=/usr/local/tomcat8


cd $CATALINA_8_HOME
./bin/catalina.sh start
[root@agent2 tomcat-instance]# cat start-mysite.sh 
#!/bin/bash
export CATALINA_8_BASE=/usr/local/tomcat-instance/mysite.com
export CATALINA_8_HOME=/usr/local/tomcat8


cd $CATALINA_8_HOME
./bin/catalina.sh start
[root@agent2 tomcat-instance]# 


实例启动脚本--->调用tomcat8的catcalina.sh启动环境设置--->catcalina.是用变量赋值,然后去调用/etc/profile系统原始的base


阅读(4515) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~