CentOS 7 Linux 安装Tomcat 8 - 同一个软件包启动多个服务实例(咋个办呢 zgbn)
此文章主要介绍一下同一个tomcat程序包启动多个服务实例,虽然在很多时候有些程序员感觉这么做很无聊,但对我这种很会节省磁盘空间的人来说,此方法还是很不错的,而且通过这种方法,升级Tomcat版本也是非常容易的。
话不多说直接上操作。
安装Tomcat
此过程不介绍,大家请看之前的文章吧。
CentOS 7 Linux 安装Tomcat 8(咋个办呢 zgbn)
CentOS 7 Linux 安装Tomcat 8 - JVM内存优化(咋个办呢 zgbn)
配置多个服务实例
闲来看一下配置好的目录,如下图。
Tomcat程序包创建软连接
Tomcat安装完成并优化配置后,方便操作配置,为原来程序包创建一个软连接目录。
[root@iZ28sn apache]# ln -s tomcat-8.5.27/ tomcat
[root@iZ28sn apache]# ll
total 12
lrwxrwxrwx 1 root root 14 Feb 9 19:22 tomcat -> tomcat-8.5.27/
drwxr-xr-x 9 www www 4096 Jan 31 01:23 tomcat-8.5.27
创建多服务实例配置文件
通过安装完成Tomcat程序包进行copy动作,重新命名为tomcat-8180
,tomcat-8280
,之所以这么做,主要是方便我管理,这里名字代表的意思为:
tomcat-8.5.27
:此tomcat服务将使用默认的8080端口对外发布服务(我个人不会开启此服务);
tomcat-8180
:此tomcat服务将使用8180端口对外发布服务;
tomcat-8280
:此tomcat服务将使用8280端口对外发布服务;
命令:
[root@iZ28sn apache]# cp -r tomcat-8.5.27/ tomcat-8180
[root@iZ28sn apache]# cp -r tomcat-8.5.27/ tomcat-8280
进入tomcat-8180
目录下,除下面列出的文件夹外,其他的文件夹全部可以删除掉。
drwxr-x--- 2 www www 4096 Feb 9 19:12 bin
drwx------ 3 www www 4096 Feb 1 01:06 conf
drwxr-x--- 2 www www 4096 Feb 9 19:08 logs
drwxr-x--- 2 www www 4096 Feb 1 01:03 temp
drwxr-x--- 2 www www 4096 Feb 1 01:01 webapps
drwxr-x--- 2 www www 4096 Feb 1 01:01 work
进入/tomcat-8180/bin
目录下,删除所有文件。
[root@iZ28sn tomcat-8180]# cd bin/
[root@iZ28sn bin]# rm -rf *
[root@iZ28sn bin]# cd ..
分别进入/tomcat-8180/logs
、/tomcat-8180/temp
、/tomcat-8180/webapps
、/tomcat-8180/work
目录下,删除所有文件。
只保留/tomcat-8180/conf
目录下的配置文件,并修改配置文件中端口号,我修改的比较直接,我的规则就是按着目录的名字中的8180
,将默认的8080发布端口修改为8180
,其他的服务端口端部将第二位修改成_1__
即可。
[root@iZ28sn conf]# vim server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8105" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<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 executor="tomcatThreadPool" port="8180" redirectPort="8143" protocol="HTTP/1.1"
connectionTimeout="20000" maxThreads="1000"
minSpareThreads="100" maxSpareThreads="1000" acceptCount="1000"
minProcessors="100" maxProcessors="1000"
disableUploadTimeout="true" enableLookups="false"
/>
<Connector port="8109" protocol="AJP/1.3" redirectPort="8143" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
-->
</Host>
</Engine>
</Service>
</Server>
编写多服务实例启动脚本
其实同一个Tomcat程序包,启动多个服务实例,其原理就是通过启动脚本,来控制tomcat启动的时候加载不同的配置文件。
进入/tomcat-8180/bin
目录下,创建脚本文件,并赋予可执行权限。
[root@iZ28sn bin]# vim startup.sh
[root@iZ28sn bin]# chmod +x startup.sh
脚本内容
#!/bin/bash
# 这里执行的是软连接地址,方便以后更换tomcat发行版本
export CATALINA_HOME=/opt/apache/tomcat
export CATALINA_BASE="/opt/apache/tomcat-8180"
export CATALINA_TMPDIR="$CATALINA_BASE/temp"
export CATALINA_PID="$CATALINA_BASE/logs/tomcat.pid"
# 创建logs目录
if [ ! -d "$CATALINA_BASE/logs" ]; then
mkdir $CATALINA_BASE/logs
fi
# 创建temp目录
if [ ! -d "$CATALINA_BASE/temp" ]; then
mkdir $CATALINA_BASE/temp
fi
# 调用tomcat启动脚本
case $1 in
start|stop|run)
bash $CATALINA_HOME/bin/daemon.sh $1
echo ""
echo "CATALINA_HOME=$CATALINA_HOME"
echo "CATALINA_BASE=$CATALINA_BASE"
echo "CATALINA_TMPDIR=$CATALINA_TMPDIR"
echo "CATALINA_PID=$CATALINA_PID"
echo "Action $CATALINA_BASE $1 end ......"
echo ""
;;
*)
echo "usage: [start | stop | run]"
;;
esac
启动tomcat服务实例
启动服务,查看tomcat进程情况。
[root@iZ28sn bin]# ./startup.sh start
[root@iZ28sn bin]# ps -ef | grep tomcat
root 4310 1 0 19:43 ? 00:00:00 jsvc.exec -java-home /usr/lib/jvm/java-1.8.0-openjdk/jre ... -Dcatalina.base=/opt/apache/tomcat-8180 ... org.apache.catalina.startup.Bootstrap
www 4311 4310 6 19:43 ? 00:00:01 jsvc.exec -java-home /usr/lib/jvm/java-1.8.0-openjdk/jre ... -Dcatalina.base=/opt/apache/tomcat-8180 ... org.apache.catalina.startup.Bootstrap
root 4446 3286 0 19:43 pts/2 00:00:00 grep --color=auto tomcat
[root@iZ28sn bin]#