Tomcat实现基于域名的多虚拟主机

【Tomcat实现基于域名的多虚拟主机】努力尽今夕,少年犹可夸。这篇文章主要讲述Tomcat实现基于域名的多虚拟主机相关的知识,希望能为你提供帮助。


1.基础环境准备

# 主机上完成JDK 和 tomcat 安装,完成基础环境的准备

[root@Tomcat-HostsIP48 ]#ll
-rw-r--r--1 root root11915655 Apr8 20:53 apache-tomcat-10.0.20.tar.gz
-rw-r--r--1 root root2500 Apr 18 13:55 install_tomcat2022.sh
-rw-r--r--1 root root 168679847 Apr8 22:27 jdk-11.0.14_linux-x64_bin.tar.gz

[root@Tomcat-HostsIP48 ]#

[root@Tomcat-HostsIP48 ]#cat install_tomcat2022.sh
#!/bin/bash
#

DIR=`pwd`
JDK_FILE="jdk-11.0.14_linux-x64_bin.tar.gz"
TOMCAT_FILE="apache-tomcat-10.0.20.tar.gz"
JDK_DIR="/usr/local"
TOMCAT_DIR="/usr/local"

color ()
RES_COL=60
MOVE_TO_COL="echo -en \\\\033[$RES_COLG"
SETCOLOR_SUCCESS="echo -en \\\\033[1; 32m"
SETCOLOR_FAILURE="echo -en \\\\033[1; 31m"
SETCOLOR_WARNING="echo -en \\\\033[1; 33m"
SETCOLOR_NORMAL="echo -en \\E[0m"
echo -n "$2" & & $MOVE_TO_COL
echo -n "["
if [ $1 = "success" -o $1 = "0" ] ; then
$SETCOLOR_SUCCESS
echo -n $"OK"
elif [ $1 = "failure" -o $1 = "1"] ; then
$SETCOLOR_FAILURE
echo -n $"FAILED"
else
$SETCOLOR_WARNING
echo -n $"WARNING"
fi
$SETCOLOR_NORMAL
echo -n "]"
echo




install_jdk()
if ![-f "$DIR/$JDK_FILE" ]; then
color 1 "$JDK_FILE 文件不存在"
exit;
elif [ -d $JDK_DIR/jdk ]; then
color 1"JDK 已经安装"
exit
else
[ -d "$JDK_DIR" ] || mkdir -pv $JDK_DIR
fi
tar xvf $DIR/$JDK_FILE-C $JDK_DIR
cd$JDK_DIR & & ln -s jdk* jdk

cat > /etc/profile.d/jdk.sh < < EOF
export java_HOME=$JDK_DIR/jdk
export JRE_HOME=\\$JAVA_HOME/jre
export CLASSPATH=\\$JAVA_HOME/lib/:\\$JRE_HOME/lib/
export PATH=\\$PATH:\\$JAVA_HOME/bin
EOF
./etc/profile.d/jdk.sh
java -version & & color 0 "JDK 安装完成" ||color 1"JDK 安装失败" ; exit;



install_tomcat()
if ! [ -f "$DIR/$TOMCAT_FILE" ]; then
color 1 "$TOMCAT_FILE 文件不存在"
exit;
elif [ -d $TOMCAT_DIR/tomcat ]; then
color 1 "TOMCAT 已经安装"
exit
else
[ -d "$TOMCAT_DIR" ] || mkdir -pv $TOMCAT_DIR
fi
tar xf $DIR/$TOMCAT_FILE -C $TOMCAT_DIR
cd$TOMCAT_DIR & & ln -s apache-tomcat-*/tomcat
echo "PATH=$TOMCAT_DIR/tomcat/bin:"$PATH > /etc/profile.d/tomcat.sh
id tomcat & > /dev/null || useradd -r -s /sbin/nologin tomcat

cat > $TOMCAT_DIR/tomcat/conf/tomcat.conf < < EOF
JAVA_HOME=$JDK_DIR/jdk
EOF

chown -R tomcat.tomcat $TOMCAT_DIR/tomcat/

cat > /lib/systemd/system/tomcat.service< < EOF
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target

[Service]
Type=forking
EnvironmentFile=$TOMCAT_DIR/tomcat/conf/tomcat.conf
ExecStart=$TOMCAT_DIR/tomcat/bin/startup.sh
ExecStop=$TOMCAT_DIR/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now tomcat.service & > /dev/null
systemctl is-active tomcat.service & > /dev/null & & color 0 "TOMCAT 安装完成" ||color 1 "TOMCAT 安装失败" ; exit;



install_jdk

install_tomcat

[root@Tomcat-HostsIP48 ]#bash install_tomcat2022.sh

2.修改Tomcat的配置文件,实现基于主机头的虚拟主机基本内容:修改Tomcat的配置文件,实现 w1.shone.cn和 w2.shone.cn 基于主机头的两个虚拟主机。准备两个虚拟主机的网站目录及网页文件。
# 默认的 tomcat/usr/local/tomcat/conf/server.xml配置信息
[root@Tomcat-HostsIP48 ]#vim /usr/local/tomcat/conf/server.xml
< ?xml version="1.0" encoding="UTF-8"?>
< Server port="8005" 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 port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
< 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"

    推荐阅读