tomcat部署多个网站

时间:2022-09-17 08:31:39
一般情况下,我们安装了tomcat后,比如安装在了/usr/apache-tomcat-7.0.55目录下,只需要把网站打成war包,放在webapps目录下即可,然后修改conf/server.xml文件,进行端口等参数的设置。最后,通过bin/startup.sh启动tomcat即可。这样网站就部署好了。

但是,很多情况下,我们想在一个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文件夹,修改相应的参数即可