jdk 安装
详情查看jdk安装
配置/etc/profile文件,
#vi /etc/profile
添加环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_172-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
重新加载profile文件
#source /etc/profile
配置tomcat 为单机多实例,以apache-tomcat-8.5.39为例
创建tomcat8文件夹 复制apache-tomcat-8.5.39到tomcat8下,创建tomcat-ins存放实例,(实例文件夹理论上随便放,为了更好的管理,建议和tomcat放在一致)
创建tomcat8 下创建apache-tomcat-8.5.39 和 tomcat-ins
tomcat8
apache-tomcat-8.5.39
tomcat-ins
tomcat-ins用来存放单例
tomcat-ins下创建webapps01,webapps02,webapps03,webapps04,webapps05,webapps06
6个单例
tomcat-ins
webapps01
webapps02
webapps03
webapps04
webapps05
webapps06
复制apache-tomcat-8.5.39里面conf,logs,temp,work到每个实例webapps0~下面
修改每个实例下conf里面server.xml
保证端口不重复,否则存在端口被占用,实例启动失败
1.修改监听关闭端口,保证不一致
2.修改http监听端口,和重定向端口
3.注解 接受其他服务转发过来的请求。
具体tomcat server.xml修改,属性详解参考tomcat server.xml讲解
appbase 路径地址不改变的话则表示多个实例访问同一个项目
修改完后每个实例直接不会因为端口互相干扰
下一步针对,每个实例设置启动文件
在每个实例下创建start.sh
内容如下
#!/bin/bash
#web1
. /etc/init.d/functions
export CATALINA_BASE="/app/tomcat8/tomcat-ins/webapp01"
export JAVA_OPTS='-Xms251m -Xmx512m'
case "$1" in
start)
/app/tomcat8/apache-tomcat-8.5.39/bin/startup.sh
;;
stop)
/app/tomcat8/apache-tomcat-8.5.39/bin/shutdown.sh
;;
restart)
/app/tomcat8/apache-tomcat-8.5.39/bin/shutdown.sh
sleep 5
/app/tomcat8/apache-tomcat-8.5.39/bin/startup.sh
;;
esac
其中 CATALINA_BASE为每个实例的路径地址,也可以设置JAVA_HOME,JRE_HOME 属性
在每个实例启动
#./start.sh start
可以写一个启动文件启动所有项目
#!/bin/bash
#webapp
CATALINA_HOME=/app/tomcat8/apache-tomcat-8.5.39
export CATALINA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_172-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export JAVA_OPTS='-Xms251m -Xmx512m'
case "$1" in
start)
for num in {1..6}; do
echo "webapp0$num start ..."
/app/tomcat8/tomcat-ins/webapp0"$num"/start.sh start
sleep 5
tomcatpid=`ps -ef | grep java| grep webapp0$num | grep -v grep | awk '{print $2}'`
echo "webapp0$num start success, pid in: $tomcatpid"
done
;;
stop)
for num in {1..6}; do
tomcatpid=`ps -ef | grep java| grep webapp0$num | grep -v grep | awk '{print $2}'`
echo "webapp0$num stop ... pid :$tomcatpid "
/app/tomcat8/tomcat-ins/webapp0"$num"/start.sh stop
kill -9 "$tomcatpid"
echo "webapp0$num stop success"
done
;;
restart)
for num in {1..6}; do
tomcatpid=`ps -ef | grep java| grep webapp0$num | grep -v grep | awk '{print $2}'`
echo "webapp0$num stop ... pid :$tomcatpid "
/app/tomcat8/tomcat-ins/webapp0"$num"/start.sh stop
kill -9 "$tomcatpid"
echo "webapp0$num stop success"
done
for num in {1..6}; do
echo "webapp0$num start ..."
/app/tomcat8/tomcat-ins/webapp0"$num"/start.sh start
sleep 5
tomcatpid=`ps -ef | grep java| grep webapp0$num | grep -v grep | awk '{print $2}'`
echo "webapp0$num start success, pid in: $tomcatpid"
done
;;
esac
复制启动文件至 /etc/init.d/tomcat后
centos7:输入service tomcat start/stop启动或关闭
service tomcat start
service tomcat stop
以下是我配置的截图:
以上就是完整的单机多例模式部署情况,小弟第一次做分布式项目,后面还会陆续更新分布式碰到的各种问题。