tomcat实现多虚拟主机

发布时间 2023-10-07 15:24:16作者: 小糊涂90

 

1.安装tomcat
#下载tomcat8的包
[root@centos8 ~]#wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.73/bin/apache-tomcat-8.5.73.tar.gz
[root@centos8 ~]#tar -xf apache-tomcat-8.5.73.tar.gz -C /usr/local/
[root@centos8 ~]#cd /usr/local/
[root@centos8 local]#ln -s apache-tomcat-8.5.73/ tomcat
[root@centos8 local]#echo 'PATH=/usr/local/tomcat/bin:$PATH'> /etc/profile.d/tomcat.sh
[root@centos8 local]#. /etc/profile.d/tomcat.sh
[root@centos8 local]#echo $PATH
/usr/local/tomcat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2.安装jdk
[root@centos8 ~]#dnf -y install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel
[root@centos8 ~]#java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

3.启动及关闭tomcat
[root@centos8 ~]#catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@centos8 ~]#ps aux|grep tomcat
root 32332 2.1 1.6 5129608 134564 pts/0 Sl 17:56 0:03 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 32431 0.0 0.0 12112 1000 pts/0 S+ 17:59 0:00 grep --color=auto tomcat
#关闭tomcat
[root@centos8 ~]#catalina.sh stop

4.配置 tomcat自启动的 service 文件
#创建tomcat专用帐户
[root@centos8 ~]#useradd -r -s /sbin/nologin tomcat
#准备service文件中相关环境文件
[root@centos8 ~]#vim /usr/local/tomcat/conf/tomcat.conf
[root@centos8 ~]#cat /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/

[root@centos8 ~]#chown -R tomcat.tomcat /usr/local/tomcat/

#创建tomcat.service文件
[root@centos8 ~]#vim /lib/systemd/system/tomcat.service
[root@centos8 ~]#cat /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target

[root@centos8 ~]#systemctl daemon-reload
[root@centos8 ~]#systemctl enable --now tomcat
Created symlink /etc/systemd/system/multi-user.target.wants/tomcat.service →
/usr/lib/systemd/system/tomcat.service.
[root@centos8 jre]#systemctl status tomcat
● tomcat.service - Tomcat
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor preset: disa>
Active: active (running) since Fri 2021-12-31 18:12:55 CST; 6s ago
Process: 32824 ExecStop=/usr/local/tomcat/bin/shutdown.sh (code=exited, status=0/SUCC>
Process: 32903 ExecStart=/usr/local/tomcat/bin/startup.sh (code=exited, status=0/SUCC>
Main PID: 32911 (java)
Tasks: 25 (limit: 50407)
Memory: 116.4M
CGroup: /system.slice/tomcat.service
└─32911 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64//bin/ja>
Dec 31 18:12:55 centos8.magedu.org systemd[1]: Starting Tomcat...
Dec 31 18:12:55 centos8.magedu.org systemd[1]: Started Tomcat.

5.多虚拟主机配置
#说明:name 必须是主机名,用主机名来匹配;
#appBase 当前主机的网页根目录,是相对于 $CATALINA_HOME ,也可以使用绝对路径;
#unpackWARs 是否自动解压war格式;
#autoDeploy 热部署,自动加载并运行应用
[root@centos8 jre]#vim /usr/local/tomcat/conf/server.xml
[root@centos8 jre]#tail /usr/local/tomcat/conf/server.xml
#添加了以下四行
<Host name="node1.tomcat.com" appBase="/data/webapps1">
</Host>
<Host name="node2.tomcat.com" appBase="/data/webapps2">
</Host>
</Engine>
</Service>
</Server>

#对每个虚拟主机,准备数据
[root@centos8 jre]#mkdir /data/webapps{1,2}/ROOT -pv
mkdir: created directory '/data'
mkdir: created directory '/data/webapps1'
mkdir: created directory '/data/webapps1/ROOT'
mkdir: created directory '/data/webapps2'
mkdir: created directory '/data/webapps2/ROOT'

[root@centos8 ~]#cat /data/webapps1/ROOT/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp例子</title>
</head>
<body>
后面的内容是服务器端动态生成字符串,最后拼接在一起
<br>
<%=request.getRequestURL()%>
</body>
</html>
[root@centos8 ~]#cp -p /data/webapps1/ROOT/index.jsp /data/webapps2/ROOT/index.jsp
[root@centos8 ~]#chown -R tomcat.tomcat /data/webapps{1,2}/
[root@centos8 ~]#echo '10.0.0.150 node1.tomcat.com node2.tomcat.com' >> /etc/hosts
[root@centos8 ~]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.150 node1.tomcat.com node2.tomcat.com

#修改配置文件后重启tomcat服务
[root@centos8 ~]#systemctl restart tomcat
#访问测试
[root@centos8 ~]#curl http://node1.tomcat.com:8080

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp例子</title>
</head>
<body>
后面的内容是服务器端动态生成字符串,最后拼接在一起
<br>
http://node1.tomcat.com:8080/
</body>
</html>
[root@centos8 ~]#curl http://node2.tomcat.com:8080

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp例子</title>
</head>
<body>
后面的内容是服务器端动态生成字符串,最后拼接在一起
<br>
http://node2.tomcat.com:8080/
</body>
</html>