tomcat实现多虚拟主机
1.一键安装 tomcat(Ubuntun也通用,包含oracle jdk的安装)
1.准备文件
[root@centos8:~]#
ll
total 152856
-rw-r--r-- 1 root root 11579290 Jul 13 12:29 apache-tomcat-9.0.64.tar.gz
-rw-r--r-- 1 root root 144935989 Sep 1 2021 jdk-8u291-linux-x64.tar.gz
#(oracle的jdk下载需要注册,因此放在云盘中自己直接下载
https://www.123pan.com/s/X5m9-YOGj)
2.编写脚本
[root@centos8:~]#
vim install_jdk_tomcat.sh
#!/bin/bash
DIR=`pwd`
JDK_FILE="jdk-8u291-linux-x64.tar.gz"
TOMCAT_FILE="apache-tomcat-9.0.64.tar.gz"
JDK_DIR="/usr/local"
TOMCAT_DIR="/usr/local"
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
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 jdk1.8.* 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
#通过函数调用进行实现,只要注释掉最后的调用关系,就可以作为单独的安装部分使用,比如注释掉install_jdk ,则此脚本就只安装tomcat,不安装jdk。
3.执行脚本
[root@centos8:~]#
bash install_jdk_tomcat.sh
2.tomcat实现多虚拟主机
1.新建虚拟主机目录
[root@centos8:~]#
mkdir /data/website{1,2,3}/ROOT -pv
2.制作页面文件
[root@centos8:~]#
echo www.a.com /data/website1/ROOT/index.html >> /data/website1/ROOT/index.html
[root@centos8:~]#
echo www.b.com /data/website2/ROOT/index.html > /data/website2/ROOT/index.html
[root@centos8:~]#
echo www.c.com /data/website3/ROOT/index.html > /data/website3/ROOT/index.html
3.修改配置文件,添加对应的基于域名的虚拟主机,实现多台在虚拟主机
[root@centos8:~]#
systemctl restart tomcat #添加Host,在 </Host>和</Engine>之间添加
......
</Host>
<Host name="www.a.com" appBase="/data/website1"
unpackWARs="true" autoDeploy="true">
</Host>
<Host name="www.b.com" appBase="/data/website2"
unpackWARs="true" autoDeploy="true">
</Host>
<Host name="www.c.com" appBase="/data/website3"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
</Server>
[root@centos8:~]#
systemctl restart tomcat
3.修改主机host文件
C:\Windows\System32\drivers\etc\hosts 添加对应域名和ip
10.0.0.18 www.a.com www.b.com www.c.com
4.访问测试www.a.com:8080