但是,很多情况下,我们想在一个tomcat下部署多个网站,下面介绍一种比较方便的方法。
1. 创建一个文件夹,用于存放所有的网站,比如/home/website, 下面统一称为$WEB-Base
2. 在$WEB-Base下创建默认路径$WEB-Base/default
3. 把tomcat安装目录下的所有文件复制到default中, cp /usr/apache-tomcat-7.0.55/* /home/website/default/
4. 删除/usr/apache-tomcat-7.0.55/ 下的所有文件,只保留bin、lib
5. 删除/home/website/default/ 下的bin、lib
6. 在/home/website/default/ 下创建文件setup_env.sh, 内容如下
#
export TOMCAT_USER="tomcat"
export JAVA_OPTS="-Xms64m -Xmx128m -server -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$CATALINA_BASE/logs/gc.log"
chown -R tomcat:tomcat $CATALINA_BASE/logs
chown -R tomcat:tomcat $CATALINA_BASE/conf
chown -R tomcat:tomcat $CATALINA_BASE/work
chown -R tomcat:tomcat $CATALINA_BASE/temp
该文件用于配置java虚拟机的启动参数,并且修改该目录下文件属性
7. 在家目录中创建tomcat_start.sh文件(可以是其他目录,只是家目录比较容易访问),内容如下
#!/bin/bash
source /etc/profile
export CATALINA_HOME=/usr/apache-tomcat-7.0.55/
if echo $1 | grep -q "/home/website"
then
export CATALINA_BASE=${1%/}
else
export CATALINA_BASE=/home/website/${1%/}
fi
instance=`ls /home/website | head -1`;
if ! [ -e $CATALINA_BASE/conf/server.xml ]
then
echo -e " usage: $0 home/website/$instance\n"
exit 1;
fi
if [ -r "$CATALINA_BASE"/setup_env.sh ]; then
. "$CATALINA_BASE"/setup_env.sh
fi
TOMCAT_ID=`ps aux |grep "java"|grep "Dcatalina.base=$CATALINA_BASE"|grep -v "grep"|awk '{ print $2}'`
if [ -n "$TOMCAT_ID" ] ; then
echo "tomcat(${TOMCAT_ITOMCAT_ID}) still running now , please shutdown it firest";
exit 2;
fi
TOMCAT_START_LOG=`$CATALINA_HOME/bin/startup.sh`
if [ "$?" = "0" ]; then
echo "$0 ${1%/} start succeed"
else
echo "$0 ${1%/} start failed"
echo $TOMCAT_START_LOG
fi
注意其中的
/usr/apache-tomcat-7.0.55/ /home/website/要和自己建的目录对应
8. 类似的,创建tomcat_stop.sh文件,如下
#!/bin/bash
source /etc/profile
export CATALINA_HOME=/usr/apache-tomcat-7.0.55/
if echo $1 | grep -q "/home/website"
then
export CATALINA_BASE=${1%/}
else
export CATALINA_BASE=/home/website/${1%/}
fi
instance=`ls /home/website/ | head -1`;
if ! [ -e $CATALINA_BASE/conf/server.xml ]
then
echo -e " usage: $0 home/website/$instance\n"
exit 1;
fi
TOMCAT_ID=`ps aux |grep "java"|grep "[D]catalina.base=$CATALINA_BASE "|awk '{ print $2}'`
if [ -n "$TOMCAT_ID" ] ; then
TOMCAT_STOP_LOG=`$CATALINA_HOME/bin/shutdown.sh`
else
echo "Tomcat instance not found : ${1%/}"
exit
fi
for i in {1..10}; do
TOMCAT_ID=`ps aux |grep "java"|grep "Dcatalina.base=$CATALINA_BASE "|grep -v "grep"|awk '{ print $2}'`
if [ -n "$TOMCAT_ID" ]; then
if [ "$i" = "1" ]; then
echo -n "trying stop ($TOMCAT_ID): $i"
else
echo -n -e "\b$i"
fi
if [ $i -ge 5 ]; then
kill "$TOMCAT_ID"
fi
sleep 1
else
if [ $i -gt 5 ]; then
echo -e "\n$TOMCAT_BASE was killed($i)"
else
echo -e "\n$TOMCAT_BASE was stoped"
fi
exit;
fi
done;
kill -9 "$TOMCAT_ID"
echo "$TOMCAT_BASE was force killed"
另外,创建tomcat_restart.sh,内容如下
#!/bin/bash
~/stop_tomcat.sh $1
~/start_tomcat.sh $1
这三个文件可以使网站管理变得非常方便,接下来会看到。
9. 进行完了上面的工作,我们就可以非常方便的添加新的网站了,比如新的网站:MyNewWebSite
只需要复制 /home/website/default 到 /home/website/MyNewWebSite
把要打包好的网站放到
/home/website/MyNewWebSite/webapps下,并修改相应的server.xml中的端口号,注意server.xml中的context节点,路径要和自己的网站相符。
10. 最后,只需要在家目录下运行 ./start_tomcat.sh MyNewWebSite就可以启动自己新加入的网站了。其中后面跟的参数MyNewWebSite跟新加网站建的目录名一致即可。这样,每次我们想新部署网站,只需要复制default文件夹,修改相应的参数即可