运维五 Tomcat服务器初步了解

运维五 Tomcat服务器

JAVA

java Servlet
  • Servlet是java扩展Web服务器功能的组件规范

  • 常见Servlet容器

    • IBM websphere
    • Oracle weblogic
    • Apache tomcat
    • RedHat Jboss

环境配置

yum -y install java-1.8.0-openjdk   #安装jdk
#获得tomcat软件包解压
cp apache-tomcat-8.0 /usr/local/tomcat  #复制到自己定义的工作目录
cd /usr/local/tomcat
ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

#logs日志  lib库  conf配置文件 webapps网站页面东西 temp临时文件目录 work自动编译的目录




ls bin
bootstrap.jar       commons-daemon.jar            daemon.sh         setclasspath.sh  startup.sh            tool-wrapper.sh
catalina.bat        commons-daemon-native.tar.gz  digest.bat        shutdown.bat     tomcat-juli.jar       version.bat
catalina.sh         configtest.bat                digest.sh         shutdown.sh      tomcat-native.tar.gz  version.sh
catalina-tasks.xml  configtest.sh                 setclasspath.bat  startup.bat      tool-wrapper.bat
#可以看到.bat .sh  支持windows和Linux  (^-^)V



#启动tomcat
bin/startup.sh
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
Tomcat started.

ss -nutlp | grep 8080  #看下服务名 pgrep tomcat没有。。。
tcp    LISTEN     0      100      :::8080                 :::*                   users:(("java",pid=12261,fd=46))           #这叫java?

#关闭tomcat
bin/shutdown.sh
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

#再查查看
ss -nutlp | grep 8080        #没了  好像进程是叫java啊
ss -ntulp | grep java
tcp    LISTEN     0      1      ::ffff:127.0.0.1:8005                 :::*                   users:(("java",pid=12353,fd=67))
tcp    LISTEN     0      100      :::8009                 :::*                   users:(("java",pid=12353,fd=51))
tcp    LISTEN     0      100      :::8080                 :::*                   users:(("java",pid=12353,fd=46))
#tomcat服务总共3个端口 8005 8009 8080


#如果关闭掉
yum -y install psmisc 
killall java
存在问题
  • 问题描述

    • 运行tomcat 可能8005端口服务未启动 startup.sh shutdown.sh用不了 只能干等
  • 问题分析

    • tomcat8005端口启动需要一个随机字符串 由/dev/random提供 但是/dev/random比较慢 可能在tomcat启动了都给不出一个随机字符串 所以就存在tomcat8005端口缺少的情况
  • 解决方法一

    • 本质原因 /dev/random太慢了 那就变快就好了

    • mv /dev/random /dev/random.bak #备份/dev/random
      ln -s /dev/urandom /dev/random #用/dev/urandom 软链接替换  软连接快不用复制
      
    • /dev/urandom 产生随机字符 但是是有现成的(现货快)

  • 解决方法二

    • yum -y install rng-tools #8005端口无法开启
      systemctl start tngd    #启动服务就好
      
    • 为什么能解决 原理我也不知道


tomcat使用

使用案例
cd /usr/local/tomcat/webapps/ROOT/
cat << EOF > index.jsp
<html>
<body>
<center>
Now time is : <%=new java.util.Date()%>
</center>
</body>
</html>
EOF

cd /usr/local/tomcat
bin/startup.sh          #重启下
curl 192.168.2.100:8080
<html>
<body>
<center>
Now time is : Mon Dec 14 21:56:52 EST 2020
</center>
</body>
</html>
								#算是完成基本使用了
httpd nginx tomcat配置虚拟主机格式
  • httpd

    • <Virtualhost *:80>
      	servername www.a.com
      	documentroot /var/www/html
      </virtualhost>
      
  • nginx

    • http {
      	server {
      		lister:80;
      		server_name localhost;
      		location /{
      			root html;
      			index index.html index.htm;
      		}
      	}
      }
      
  • tomcat

    • <Host name="www.a.com" appBase="webapps">  #H大写 XML 有区别的!!!!!
      <Context path="" docBase=""/>     
      #path为虚拟路径  docBase是物理路径 指定webapps的下一级"ROOT"目录 为空默认指定ROOT
      </Host>
      
配置tomcat虚拟主机测试案例
vim /usr/local/tomcat/conf/server.xml
======================================
<Host name="www.b.com" appBase="web_b">
</Host>
<Host name="www.a.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">           #autoDeploy自动更新 												 #如果网页更新了话
#unpackWARs 自动解war包
#yum -y install java-1.8.0-openjdk-devel  #提供jar命令压缩出war包
#jar -cf xyz.war /var/log
#cp xyz.war /usr/local/tomcat/webapps  #拷贝war包到能自动解压的webapps目录
#ls /usr/local/tomcat/webapps
#xyz  xyz.war           #发现webapp目录下war包被自动释放了
</Host>
======================================

vim /etc/hosts
==========================================
192.168.2.100 www.a.com www.b.com www.c.com
=============================================
/usr/local/tomcat/bin/shutdown.sh #关闭
/usr/local/tomcat/bin/startup.sh  #重启


echo "web_a" > /usr/local/tomcat/webapps/ROOT/index.html
mkdir -p /usr/local/tomcat/web_b/ROOT
echo "web_b" > /usr/local/tomcat/web_b/ROOT/index.html

curl www.a.com:8080
web_a
curl www.b.com:8080
web_b

windows下的hosts配置文件是c:\Windows\System32\drivers\etc\hosts

docBase和path测试
vim /usr/local/tomcat/conf/server.xml
=========================================
<Host name="www.b.com" appBase="web_b">           #appBase定义默认目录
<Context path="/haha" docBase="xyz"/>			#docBase定义实际网页文件位置,相对路径默认appBase定义的目录下
												#绝对路径就是绝对路径了
<Context path="" docBase="ROOT">				#path为空 定义的其实是虚拟路径/
</Host>											
==========================================
#说明     web_b下的ROOT中index.html 内容为   web_b
#说明		web_b下的xyz中index.html 内容为	xyz
curl www.b.com:8080                        #path定义了虚拟路径 所以默认还是ROOT了
web_b
curl www.b.com:8080/haha/index.html         #可以这样访问 :8080/haha这样是不行的
xyz
添加虚拟主机的日志功能
vim /usr/local/tomcat/conf/server.xml
==========================================
<Host name="www.b.com" appBase="web_b">
	 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
            prefix="www.b.com" suffix=".log" #定义日志文件名为www.b.com.log linux下.txt无意义
            pattern="%h %l %u %t &quot;%r&quot; %s %b" /> # 固定格式占位符
</Host>
==========================================

curl www.b.com:8080
#重复访问多次
tail -5 /usr/local/tomcat/logs/www.b.com.log #查看日志
192.168.2.100 - - [15/Dec/2020:03:35:25 -0500] "GET / HTTP/1.1" 200 5
192.168.2.100 - - [15/Dec/2020:03:35:26 -0500] "GET / HTTP/1.1" 200 5
192.168.2.100 - - [15/Dec/2020:03:35:26 -0500] "GET / HTTP/1.1" 200 5
192.168.2.100 - - [15/Dec/2020:03:35:26 -0500] "GET / HTTP/1.1" 200 5
192.168.2.100 - - [15/Dec/2020:03:35:27 -0500] "GET / HTTP/1.1" 200 5
#OK了
添加SSL加密https服务 8443
vim /usr/local/tomcat/conf/server.xml
============================================#
<Connector port="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"    #密码123456
               />
=========================================================
keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore
#genkeypair    生成公私钥成对的
#alias	别名
#keyalg  使用加密的算法是 RSA
#keystore  生成路径+文件名

#输入密码123456 对应配置文件里面的keystorePass
#一通交互得到密钥和公钥

#重启tomcat
ss -nutlp | grep java
tcp    LISTEN     0      1      ::ffff:127.0.0.1:8005                 :::*                   users:(("java",pid=17994,fd=74))
tcp    LISTEN     0      100      :::8009                 :::*                   users:(("java",pid=17994,fd=55))
tcp    LISTEN     0      100      :::8080                 :::*                   users:(("java",pid=17994,fd=46))
tcp    LISTEN     0      100      :::8443                 :::*                   users:(("java",pid=17994,fd=51))
###多了个8443端口服务!!!

curl -k https://www.b.com:8443     #8443提供服务https服务
web_b
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值