tomcat单机多实例配置实战

凉白开 Tomcat2349,37138字数 2780阅读9分16秒阅读模式

java不同于php,单个站点更新维护都会影响到其他站点,一般都会将几个站点放在一个实例下。今天全称演示单台服务器如何配置多个tomcat实例。

环境

tomcat:/usr/local/tomcat-7.0.50
a.ttlsa.com
站点程序:/data/site/a.ttlsa.com
端口:8080文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

b.ttlsa.com
站点程序:/data/site/b.ttlsa.com
端口:8081文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

1. tomcat安装

安装很简单,配置好jdk与解压tomcat即可,关于《tomcat安装》我这边不再重复了。文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

如果连接失效,请复制https://www.ttlsa.com/web/install-tomcat7-on-linux/文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

2. 配置多实例目录

在tomcat安装目录下创建a.ttlsa.com、b.ttlsa.com,并且将conf、logs、webapp、temp、work目录拷贝到这两个目录,然后tomcat安装目录只需要留下bin、a.ttlsa.com、b.ttlsa.com、lib这4个目录即可。配置后的目录结构如下:文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

# pwd
 /usr/local/tomcat-7.0.50
 # tree -d -L 2
 ├── bin
 ├── a.ttlsa.com
 │ ├── conf
 │ ├── logs
 │ ├── target
 │ ├── temp
 │ ├── webapp
 │ └── work
 ├── lib
 └── b.ttlsa.com
 ├── conf
 ├── logs
 ├── temp
 ├── webapp
 └── work

3. 配置站点server.xml

3.1 配置a.ttlsa.com文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

# vim /usr/local/tomcat-7.0.50/a.ttlsa.com/conf/server.xml
//注释ajp
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->

//server端口8005改为8001
<Server port="8001" shutdown="SHUTDOWN">

//在<Engine name="Catalina" defaultHost="localhost">增加host配置,如下
<Host name="a.ttlsa.com" appBase="/data/site/a.ttlsa.com"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
      <Context path="" docBase=""  reloadable="true">
        <valve className="org.apache.catalina.valves.RemoteAddrValve" />
      </Context>
</Host>

 文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

3.2 配置b.ttlsa.com文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

# vim /usr/local/tomcat-7.0.50/a.ttlsa.com/conf/server.xml
//注释ajp
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->

//server端口8005改为8002
<Server port="8002" shutdown="SHUTDOWN">

//在<Engine name="Catalina" defaultHost="localhost">增加host配置,如下
<Host name="b.ttlsa.com" appBase="/data/site/b.ttlsa.com"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
      <Context path="" docBase=""  reloadable="true">
        <valve className="org.apache.catalina.valves.RemoteAddrValve" />
      </Context>
</Host>

4. 多实例启动脚本

在a.ttlsa.com、b.ttlsa.com目录下分别创建启动脚本tomcat.sh
4.1 脚本内容tomcat.sh文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

#!/bin/sh
 # AuthName:凉白开
 # Website:https://www.ttlsa.com
 # DateTime:2014-05-04
 # description: 启动tomcat多实例.
 . /etc/init.d/functions
 RETVAL=$?
 # tomcat实例目录
 export CATALINA_BASE="$PWD"
 # tomcat安装目录
 export CATALINA_HOME="/usr/local/tomcat-7.0.50"
 # 可选
 export JVM_OPTIONS="-Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m"
 case "$1" in
 start)
 if [ -f $CATALINA_HOME/bin/startup.sh ];then
 echo $"Start Tomcat"
 $CATALINA_HOME/bin/startup.sh
 fi
 ;;
 stop)
 if [ -f $CATALINA_HOME/bin/shutdown.sh ];then
 echo $"Stop Tomcat"
 $CATALINA_HOME/bin/shutdown.sh
 fi
 ;;
 *)
 echo $"Usage: $0 {start|stop}"
 exit 1
 ;;
 esac
 exit $RETVAL

4.2 启动脚本赋权限文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

# chmod a+x tomcat.sh

5. 启动测试

5.1 启动/关闭a.ttlsa.com文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

启动
 # cd /usr/local/tomcat-7.0.50/a.ttlsa.com/
 # ./tomcat.sh start
 关闭
 # cd /usr/local/tomcat-7.0.50/a.ttlsa.com/
 # ./tomcat.sh stop

5.2 启动/关闭b.ttlsa.com文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

启动
 # cd /usr/local/tomcat-7.0.50/a.ttlsa.com/
 # ./tomcat.sh start
 关闭
 # cd /usr/local/tomcat-7.0.50/a.ttlsa.com/
 # ./tomcat.sh stop

备注:一定需要cd到tomcat.sh的当前目录下执行才可以文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

6. 结束

配置到此结束,如果需要操作多个实例显得比较麻烦,大家可以自行写统一的脚本,我这边有自己的一份,有需要的可以找我要。内容比较多,就不贴出来了。文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/ 文章源自运维生存时间-https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 04/06/2014 01:00:46
  • 转载请务必保留本文链接:https://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
评论  23  访客  22
    • Bruce
      Bruce 1

      请问楼主有centos7下的启动多实例tomcat的脚本吗

      • 莎天,图拉
        莎天,图拉 9

        既然云系统诞生,为什么数据还是信用度差。生效的硬件库比是不是成本不见了呢??kavascripT..CC是不是构架太烂了

        • 追马
          追马 9

          这种方式很不建议,因为多个实例都依赖于同一个HOME 另外启动脚本中JVM_OPTIONS并不能生效,所以还是每个tomcat应用单独的HOME和BASE,不过还是要给作者点个赞,因为拿出来分享就是贡献

          • 匿名
            匿名 1

            按照这种方式,应用程序访问不了

            • 匿名
              匿名 1

              war包放在/data/site/a.ttlsa.com下不能访问到报404,也没看到8081端口啊

                • 管理员
                  管理员 5

                  @ 匿名 有个配置端口的地方,文中没有体现出来。不知道你是否配置了8080和8081

                • 林杰
                  林杰 1

                  多实例能否共享lib呢, 还有多实例貌似比单实例耗内存啊。都是单独分配的内存空间吗?

                    • 运维生存时间
                      运维生存时间 7

                      @ 林杰 都是单独分配空间

                      • 匿名
                        匿名 9

                        @ 林杰 千万不要贡献lib,如果出现lib冲突,你就被迫重启整个tomcat了,哭都来不及

                          • 南山小樵
                            南山小樵 1

                            @ 匿名 lib冲突,这个是怎么个意思,求指点?

                        • 学习
                          学习 9

                          楼主好
                          tomcat 单机多实例 用zabbix怎么监控每个实例的使用情况

                          • 东东一世
                            东东一世 9

                            为什么只能切换到目录下才能执行

                              • TSA
                                TSA 9

                                @ 东东一世 环境变量的关系

                              • lanegg
                                lanegg 9

                                访问的路径分别是?

                                  • TTLSA
                                    TTLSA 9

                                    @ lanegg 不明白你的意思~!

                                  • 管理员
                                    管理员 5

                                    学习了 :

                                    按你说的做了一遍 不能成功,
                                    提示这个错误-bash: ./tomcat.sh: /bin/sh^M: bad interpreter: No such file or directory

                                    @学习了
                                    文件编码有问题,vim文件,把^M删除,或者使用dos2unix命令转换。

                                    • 学习了
                                      学习了 1

                                      按你说的做了一遍 不能成功,
                                      提示这个错误-bash: ./tomcat.sh: /bin/sh^M: bad interpreter: No such file or directory

                                      • 学习了
                                        学习了 1

                                        学习了, 很有用, 楼主不知道麻烦不, 能不能把整个配置好的 打包发给我研究下, hpze2000@qq.com
                                        谢谢!

                                        • FMN
                                          FMN 9

                                          很有用,学习了。。。

                                        评论已关闭!