tomcat
网站搭建
[root@web1 ~]# yum -y install java-1.8.0-openjdk
[root@web1 ~]# tar -xf apache-tomcat-8.0.30.tar.gz
[root@web1 ~]# tar -xf apache-tomcat-8.0.30.tar.gz
[root@web1 ~]# cp -r apache-tomcat-8.0.30 /usr/local/tomcat
[root@web1 ~]# cd /usr/local/tomcat
[root@web1 tomcat]# ls
tomcat 目录介绍: conf 存放配置文件 logs 存放日志
webapps 存放网站页面 work 存放了编译的网站页面 temp 临时文件目录
lib 库文件目录 bin 存放主程序
[root@web1 tomcat]# bin/startup.sh #开启服务
[root@web1 tomcat]# bin/shutdown.sh #关闭服务
[root@web1 tomcat]# ss -ntulp | grep java #查看tomcat状态端口号有三个才能正常使用 8005关闭服务 8009测试 8080服务
火狐打开http://192.168.1.18:8080
无法正常开启tomcat时解决方案
tomcat启动调用/dev/random里的随机数据,数据不多tomcat不能够成功开启或稳定运行。故创建软连接调用/dev/urandom的随机数。
解决方案
[root@web1 tomcat]#mv /dev/random /dev/random.bak #备份原有random文件
[root@web1 tomcat]#ln -s /dev/urandom /dev/random #使用urandom创建软连接替代random即可
[root@web1 tomcat]# killall java
[root@web1 tomcat]# bin/startup.sh
[root@web1 tomcat]# ss -ntulp | grep java
测试tomcat服务
[root@web1 tomcat]# echo "tomcat-test~~~~" > webapps/ROOT/test.html
http://192.168.1.18:8080/test.html
[root@web1 tomcat]#vim webapps/ROOT/test.jsp #Java语言 .jsp是固定后缀,动态网站
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>
http://192.168.1.18:8080/test.jsp #使用浏览器访问可以看到当前时间
利用tomcat搭建虚拟主机
[root@web1 tomcat]# vim conf/server.xml
122 <Host name="www.b.com" appBase="web_b"
123 unpackWARs="true" autoDeploy="true">
#默认目录是/usr/local/tomcat/webapps目录下的ROOT下,这里修改了目录
124 </Host>
125 <Host name="www.a.com" appBase="webapps" # 默认的虚拟主机,改成a网站
unpackWARs="true" autoDeploy="true">
</Host>
[root@web1 tomcat]# mkdir -p web_b/ROOT #在/usr/local/tomcat目录下创建b网站的测试目录
[root@web1 tomcat]# echo "tomcat-A~~" > webapps/ROOT/index.html #创建a网站测试页面
[root@web1 tomcat]# echo "tomcat-B~~" > web_b/ROOT/index.html #创建b网站测试页面
[root@web1 tomcat]# vim /etc/hosts
192.168.1.18 www.a.com www.b.com www.c.com
[root@web1 tomcat]# curl www.a.com:8080
tomcat-A~~
[root@web1 tomcat]# curl www.b.com:8080
tomcat-A~~
autoDeploy和unpackWARs 自动解WAR包。自动更新
122 <Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true"> #自动解WAR包。自动更新
123 </Host>
测试自动解war包功能:
[root@web1 ~]# yum -y install java-1.8.0-openjdk-devel #安装创建war包的工具包
[root@web1 ~]# jar -cf xyz.war /var/log #创建war包
[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@web1 ~]# /usr/local/tomcat/bin/startup.sh
[root@web1 ~]# cp xyz.war /usr/local/tomcat/web_b #把war包扔到虚拟主机的网页目录下
[root@web1 ~]# ls /usr/local/tomcat/web_b #上传后会自动解开war包,并产生目录
使用tomcat搭建https加密网站
[root@web1 tomcat]# vim conf/server.xml
84 <!-- 注释开始,dd删掉
85 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
86 maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
87 clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456"/>
##新增keystore 123456可改变,需要跟下面操作一致
88 --> 注释末尾,dd删掉
[root@web1 tomcat]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore
Enter keystore password: 123456 #输入密钥库口令同配置文件
Re-enter new password:
What is your first and last name?
[Unknown]: xx
What is the name of your organizational unit?
[Unknown]: xx
What is the name of your organization?
[Unknown]: xx
What is the name of your City or Locality?
[Unknown]: xx
What is the name of your State or Province?
[Unknown]: xx
What is the two-letter country code for this unit?
[Unknown]: xx
Is CN=xx, OU=xx, O=xx, L=xx, ST=xx, C=xx correct?
[no]: y
Enter key password for <tomcat>
(RETURN if same as keystore password):
Re-enter new password:
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /usr/local/tomcat/keystore -destkeystore /usr/local/tomcat/keystore -deststoretype pkcs12".
[root@web1 tomcat]# bin/startup.sh
[root@web1 tomcat]# ss -ntulp | grep java #四个端口8005,8009,8080,8443
[root@web1 tomcat]# curl -k https://www.b.com:8443
tomcat-B~~
为b网站虚拟主机添加日志
[root@web1 tomcat]# vim conf/server.xml # 复制137-139到创建的虚拟web机内,修改
137 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
138 prefix="localhost_access_log" suffix=".txt"
139 pattern="%h %l %u %t "%r" %s %b" />
121 <Host name="www.b.com" appBase="web_b"
122 unpackWARs="true" autoDeploy="true">
123 <Context path="" docBase=""/>
124 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
125 prefix="www.b.com_access" suffix=".log"
126 pattern="%h %l %u %t "%r" %s %b" />
127 </Host>
[root@web1 tomcat]# bin/shutdown.sh
[root@web1 tomcat]# bin/startup.sh
[root@web1 tomcat]# curl www.b.com:8080
tomcat-B~~
root@web1 tomcat]# ls logs/
www.b.com_access.2022-01-19.log
页面路径测试
调整默认的ROOT目录到 tomcat/web_b/
<Host name="www.b.com" appBase="web_b" #网页在默认在web_b下的ROOT目录
unpackWARs="true" autoDeploy="true">
<Context path="" docBase=""/> #直接在web_b下添加
</Host>
[root@web1 tomcat]# killall java
[root@web1 tomcat]# bin/startup.sh
[root@web1 tomcat]# echo "web_b/index.html"> web_b/index.html
[root@web1 tomcat]# curl www.b.com:8080
web_b/index.html
tomcat/web_b/abc/目录
[root@web1 tomcat]# vim conf/server.xml
121 </Realm>
122 <Host name="www.b.com" appBase="web_b"
123 unpackWARs="true" autoDeploy="true">
124 <Context path="" docBase="abc"/> #doc添加了abc
125 </Host>
[root@web1 tomcat]# bin/shutdown.sh
[root@web1 tomcat]# bin/startup.sh
[root@web1 tomcat]# ss -ntulp | grep java //由于此时abc目录未创建java无法启动
[root@web1 tomcat]# mkdir web_b/abc
[root@web1 tomcat]# echo "web_b/abc/index.html"> web_b/abc/index.html
[root@web1 tomcat]# bin/shutdown.sh
[root@web1 tomcat]# bin/startup.sh
[root@web1 tomcat]# curl www.b.com:8080
web_b/abc/index.html
/abc
[root@web1 tomcat]# vim conf/server.xml
121 </Realm>
122 <Host name="www.b.com" appBase="web_b"
123 unpackWARs="true" autoDeploy="true">
124 <Context path="" docBase="/abc"/> #网站的存放位置由appBase="web_b" docBase="/abc"两部分确定,默认在web_b目录内,docBase为"空",网页放web_b/ROOT目录下,为abc放web_b/abc目录下,为/abc则不受前者影响,存放到绝对路径/abc目录下
125 </Host>
[root@web1 tomcat]# echo "/abc/index.html" > /abc/index.html
[root@web1 tomcat]# curl www.b.com:8080
/abc/index.html
域名增加/test/
[root@web1 tomcat]# vim conf/server.xml
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context path="/test" docBase="/abc"/>
</Host>
[root@web1 tomcat]# curl www.b.com:8080/test/ #访问域名需要加path路径
/abc/index.html
联合常用
<Host name="www.b.com" appBase="web_b"
unpackWARs="true" autoDeploy="true">
<Context path="/test" docBase="abc"/>
</Host>
[root@web1 tomcat]# curl www.b.com:8080/test/ #红色字三个部分连接到一块
web_b/abc/index.htm
[root@web1 tomcat]# echo "web_b/ROOT/index.html" > web_b/ROOT/index.html
[root@web1 tomcat]# curl www.b.com:8080/ #默认web_b下的网页
web_b/ROOT/index.html