上一节已经分析了tomcat多实例的原理,这节只需按着那思路实现自动化脚本即可。
一、思路规划
最终安装完成的目录:
- app:根目录;
- servers:放置所有安装的容器,包含tomcat、nginx等等,以实例名区分;
- tomcat:放置官方tomcat的安装原文件(如果是nginx,就放置在nginx目录);
- deploytool:放置容器管理脚本(启停),后面会分析它的具体结构。
二、自动化部署脚本实现
部署工具目录结构:
- deploytool:放置实例管理器脚本,直接整个复制过去
- install:放置要安装的软件
其中tomcat:放置tomcat相关
nginx:放置nginx相关
config:放置通用配置文件 - deploy.py:自动部署脚本
1、 tomcat-server.xml
三个重要的占位符,安装时会用具体内容替换:
shutdownport:关闭端口
port:监听端口
appBase:应用部署目录
这些内容最后会输出到实例的 server.xml 文件中
<Server port="$shutdownport" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener" />
<!--Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /-->
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<GlobalNamingResources>
<!-- Used by Manager webapp -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="$port" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" minSpareThreads="25"
enableLookups="false" redirectPort="8443" acceptCount="200"
connectionTimeout="40000"
disableUploadTimeout="false"/>
<!-- This is here for compatibility only, not required -->
<!-- <Connector port="59009" protocol="AJP/1.3" /> -->
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />