目录
2.修改自定义目录下的二级目录使其不是默认ROOT(docBase)
Java概述
java是一种跨平台的、面向对象的程序设计语言,Java技术具有卓越的通用性、高效性、平台移植性和安全性。
Java体系
Java SE(标准版)
Java EE(企业版)
JDK概述
JDK(JavaDevelopmentKit)是Sun针对Java开发者推出的 Java语言的软件开发工具包 JDK是整个Java的核心
包括了Java运行环境
Java工具(如编译、排错、打包等工具)
Java基础的类库
JRE概述
JRE(Java Runtime Environment,Java运行环境),JRE是JDK的子集 JRE包括
Java虚拟机(jvm)
Java核心类库和支持文件
不包含开发工具(JDK) --编译器、调试器和其它工具
Java Servlet
Servlet是iava扩展Web服务器功能的组件规范
常见Servlet容器
IBM websphere
0racle weblogic
Apache tomcat
RedHat Jboss
- ~]# systemctl stop firewalld
- # 下载tomcat(官网:https://tomcat.apache.org/)
- ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
- ~]# tar -xf apache-tomcat-9.0.65.tar.gz -C /usr/local/tomcat
- ~]# yum -y install java-1.8.0-openjdk # 安装jdk
-
-
- ~]# cd /usr/local/tomcat/
- ~]# bin/startup.sh # 开启服务
- http://tomcat的ip:8080/ # 使用浏览器访问
-
- # 注意tomcat是绿色软件解压就可以直接用

- ~]# ls /usr/local/tomcat/
- # tomcat目录: bin 存放主要程序 logs 存放日志
- # conf 配置文件 webapps 存放网站页面
- # lib 存放库文件 work 存放编译之后的页面
-
- ~]# netstat -ntulp | grep java # 检查如果8005、8009、8080端口则正常
- # 8080 网站访问的端口
- # 8009 apache基金会内部使用的端口
- # 8005 关闭程序的端口
-
- ## 有时会出现端口缺少导致tomcat运行异常可以用以下方法解决
- #解决方案一:
- ~]# mv /dev/random /dev/random.bak # 将random改名
- ~]# ln -s /dev/urandom /dev/random # 用urandom替换random
-
- # 解决方案二:
- ~]# yum -y install rng-tools
- ~]# systemctl start rngd
- ## 这个问题是因为是tomcat开启需要随机字符串(多用一下服务器就会有随机字符串了,或用urandom内的无限字符串)
- ~]# cd /usr/local/tomcat
- ~]# echo "tomcat-test~~~~" > webapps/ROOT/test01.html
-
- #http://tomcat服务器的ip:8080/test01.html 浏览器访问测试
- ~]# cd /usr/local/tomcat
- ~]# vim webapps/ROOT/test02.jsp
- Now time is: <%=new java.util.Date()%>
- # http://tomcat服务器的ip:8080/test02.jsp 浏览器访问测试,刷新可以看到时间变化
在浏览器设置看查看中文编码(火狐浏览器)

- ##1.修改配置文件
- # 注:一个Host就是一个虚拟主机
-
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml # 打开配置文件Host行上添加虚拟主机配置(注意大写,并且可以把默认的主机域名也修改成www.a.com)
- ......
"www.b.com" appBase="web_b" > - ......
-
- ## 2.创建测试网站
- ~]# mkdir -p web_b/ROOT # 之后创建b网站的目录
- ~]# echo "tomcat-A~~~" > webapps/ROOT/index.html
- ~]# echo "tomcat-B~~~" > web_b/ROOT/index.html
-
- ##3.测试(重启)
- ~]# bin/shutdown.sh # 关闭tomcat
- ~]# bin/startup.sh # 开启
- ~]# tail -1 /etc/hosts # 查看域名解析
- tomcat服务的ip www.a.com www.b.com www.c.com
- ~]# curl www.a.com:8080 # 测试
- tomcat-A~~~
- ~]# curl www.b.com:8080
- tomcat-B~~~
- #1.添加功能
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml
- .......
"www.b.com" appBase="web_b" - unpackWARs="true" autoDeploy="true"> # 添加unpackWARs自动解war包,和autoDeploy可以自动更新开发工程师编写的网站功能代码
- .......
-
- ~]# bin/shutdown.sh # 然后重启tomcat
- ~]# bin/startup.sh
- ~]# netstat -ntulp | grep java # 检查
-
- #2.测试
- #首先tomcat服务必须是开启状态
- ~]# yum -y install java-1.8.0-openjdk-devel # 安装软件包
- ~]# jar -cf b.war /var/log # 之后可以使用jar命令打war包
- ~]# cp b.war web_b/ # 将war包放入虚拟主机的网页目录
- ~]# ls web_b/ # 检查,可以看到已经自动解开
- # 注意:9.0.65好像自带解war包的能力
Context path 匹配用户输入的地址栏
docBase 可以定义网站页面位置
注:默认在webapps/ROOT/;Context可添加多个
- # 默认是访问Root
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml
- .......
"www.b.com" appBase="web_b" - unpackWARs="true" autoDeploy="true">
"" docBase="" /> # 添加本行 - # appBase是访问主目录而ROOT是默认的下级目录,docBase表示不访问ROOT而访问其他的目录,这里设置成空表示直接访问一级目录web_b(此时path和docBase都是空)
- # path 只是网页要输入的目录,本地不需要存在。docBase指定的目录则需要真实存在的
-
- ~]# echo "web_b/index.html" > web_b/index.html # 创建素材,定义新路径
- ~]# echo "web_b/ROOT/index.html" > web_b/ROOT/index.html # 默认页面路径
- ~]# curl www.b.com:8080 # 测试可以看到的是默认的页面路径
- ~]# bin/shutdown.sh
- ~]# bin/startup.sh
- ~]# curl www.b.com:8080 # 重启后测试可以看到新路径
- # 默认是访问ROOT
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml
- .......
"www.b.com" appBase="web_b" - unpackWARs="true" autoDeploy="true">
"" docBase="abc" /> # 修改成abc - # 这样默认页的本地路径就会是web_b/abc/(此时path是空,而docBase是等于abc)
-
- ~]# mkdir web_b/abc # 创建abc目录
- ~]# echo "web_b/abc/index.html" > web_b/abc/index.html # 创建测试页面
- # 重启tomcat
- ~]# bin/shutdown.sh
- ~]# bin/startup.sh
- ~]# curl www.b.com:8080 # 再次访问可以看到新路径的页面
- # 默认是访问appBase/Root
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml
- .....
"www.b.com" appBase="web_b" - unpackWARs="true" autoDeploy="true">
"" docBase="/abc" /> # 当此处使用绝对路径时,可以更自由定义网页位置 - # 测试访问就不会在去调用appBase的目录了(此时path是空而docBase是等于/abc)
-
- ~]# mkdir /abc # 创建主目录
- ~]# echo "/abc/index.html" > /abc/index.html
- # 重启tomcat
- ~]# bin/shutdown.sh
- ~]# bin/startup.sh
- ~]# curl www.b.com:8080 # 访问测试,看到的是/abc/index.html的页面
- # 之前的配置都不能在网页后面再次输入目录,这里可以解决这个问题
- # 默认是访问appBase/Root
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml
- ....
"www.b.com" appBase="web_b" - unpackWARs="true" autoDeploy="true">
"/test" docBase="/abc" /> # path后面添加内容可以匹配用户访问路径 - # 注:此时访问域名加path后面的目录值就会直接去访问docBase后面的目录值下的网页文件,而域名后不加目录则访问默认配置appBase下的值与Context就无关了
- ....
- # 重启tomcat
- ~]# bin/shutdown.sh
- ~]# bin/startup.sh
- ~]# curl www.b.com:8080/test/
- /abc/index.html
- ~]# curl www.b.com:8080
- web_b/ROOT/index.html
- # 默认是访问appBase/Root
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml
- ....
"www.b.com" appBase="web_b" - unpackWARs="true" autoDeploy="true">
"/test" docBase="abc" /> //将/abc改成abc - ....
- # 重启tomcat
- ~]# bin/shutdown.sh
- ~]# bin/startup.sh
- ~]# curl www.b.com:8080/test/
- web_b/abc/index.html
- ~]# curl www.b.com:8080
- web_b/ROOT/index.html
访问www.b.com:8080 看到的是/usr/local/tomcat/test01/a/index.html中的内容
访问www.b.com:8080/abc/ 看到的是/var/www/html/index.html中的内容
- # 默认是访问appBase/Root
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml
- ....
"www.b.com" appBase="test01" - unpackWARs="true" autoDeploy="true">
"" docBase="a" /> "/abc" docBase="/var/www/html" /> - ....
-
- ~]# mkdir -p test01/a # 创建测试目录
- ~]# echo "/var/www/html" > /var/www/html/index.html
- ~]# echo "/usr/local/tomcat/test01/a/index.html" > test01/a/index.html # 创建测试文件
- # 重启tomcat
- ~]# bin/shutdown.sh
- ~]# bin/startup.sh
- ~]# curl www.b.com:8080
- /usr/local/tomcat/test01/a/index.html
- ~]# curl www.b.com:8080/abc/
- /var/www/html
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml
- ....
- # 修改配置文件,复制最后一页默认虚拟主机的日志配置
-
- ## directory:日志存放目录
- ## prefix:日志名称(会自动创建)
- ## suffix:日志后缀名
"www.b.com" appBase="test01" - unpackWARs="true" autoDeploy="true">
"" docBase="a" /> "/abc" docBase="/var/www/html" /> -
"org.apache.catalina.valves.AccessLogValve" directory="logs" - prefix="www-b-com" suffix=".log"
- pattern="%h %l %u %t "%r" %s %b" />
- .....
-
- # 配置好之后开启或者重启tomcat服务
- ~]# bin/shutdown.sh
- ~]# bin/startup.sh
-
- ~]# curl www.b.com:8080 # 访问一次网站,可以产生日志记录
- ~]# ls logs/ # 查看日志目录可以看到b网站的日志名称
- www-b-com.2022-08-21.log
- ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
- ~]# tar -xf apache-tomcat-9.0.65.tar.gz -C /usr/local/tomcat
- ~]# cp -r apache-tomcat-8.0.30 /usr/local/tomcat
- ~]# yum -y install java-1.8.0-openjdk
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml # 修改配置文件,创建b虚拟主机
- ......
"www.b.com" appBase="web_b" > -
"www.a.com" appBase="webapps" - ....
- ~]# mkdir -p web_b/ROOT # 然后创建b网站目录
- ~]# echo "tomcat-A~~~" > webapps/ROOT/index.html
- ~]# echo "tomcat-B~~~" > web_b/ROOT/index.html
- ~]# mv /dev/random /dev/random.bak
- ~]# ln -s /dev/urandom /dev/random
- ~]# bin/startup.sh # 开启服务
- ~]# curl www.a.com:8080
- tomcat-A~~~
- ~]# curl www.b.com:8080
- tomcat-B~~~
- ~]# cd /usr/local/tomcat/
- ~]# vim conf/server.xml
- ....
- # 修改配置文件,打开找到85或以上几行行,将前后的注释删除
"8443" protocol="org.apache.coyote.http11.Http11NioProtocol" - maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
- clientAuth="false" sslProtocol="TLS"
- keystoreFile="/usr/local/tomcat/keystore"
- keystorePass="123456" /> # 这里
- 添加keystoreFile(指定公钥私钥文件)和keystorePass(公钥私钥文件密码)
-
- ~]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore # 创建密钥对,别名是tomcat,加密算法是RSA,最后是存储位置
- 输入密钥库口令: 这里输入123456
- 再次输入新口令: 再次输入123456之后回答一系列问题,可以都写"yk"您的名字与姓氏是什么?
- [Unknown]: yk
- .....
- CN=yk, OU=yk, O=yk, L=yk, ST=yk, C=yk是否正确?
- [否]: y
-
- 输入
的密钥口令 - (如果和密钥库口令相同, 按回车): 直接敲回车
- # 然后重启tomcat服务
- ~]# bin/shutdown.sh
- ~]# bin/startup.sh
- ~]# curl -k https://www.a.com:8443
- tomcat-A~~~
- ~]# curl -k https://www.b.com:8443
- tomcat-B~~~