Linux下Tomcat的配置

本文详述了如何在Linux环境中配置Java JDK,安装Tomcat服务器,部署Java Web应用,以及创建和配置虚拟主机,包括设置SSL加密和日志管理。此外,还介绍了如何处理Tomcat的内存问题以及设置集群环境。
摘要由CSDN通过智能技术生成

Tomcat

提到tomcat就不能不说java,tomcat是服务器,是一种比较简单的中间件,用来把java web开发部署到tomcat中。并且tomcat本身也是java开发的

java

java简介

  • java是一种跨平台的,面向对象的程序设计语言,java技术具有卓越的通用性。高效性,平台移植性和安全性

java的体系

  • java SE(标准版)
  • java EE(企业版)
  • java ME(移动版)

jdk简介

  • jdk(java development kit)是sun针对java开发者退出的java语言的软件开发工具包

  • jdk是整个java的核心

    包括了java的运行环境

    java工具(如编译、排错、打包等工具)

    java基础的库类

  • JRE:java的运行环境,JRE是JDK的子集

  • JRE包括

    java虚拟机(jvm)

    java核心库类和支持文件

    不包括开发工具(JDK)–编译器、调试器和其他工具

Java servlet

  • servlet是java扩展web服务器功能的嘴贱规范

  • 常见的servlet容器

    IBM websphere

    Oracle weblogic

    Apache tomcat

    Redhat jboss

以上的软件只能用作java,除tomcat是免费的,其余的都是收费的

Tomcat的部署

1.问题:

部署tomcat服务器,要求如下

  • 安装部署jdk基础环境
  • 安装部署tomcat服务器
  • 创建测试页面,文件名为test.jsp,显示服务器当前时间

然后使用客户机访问web服务器验证效果

  • 使用浏览器访问Tomcat服务器的8080端口,浏览默认首页
  • 使用浏览器访问Tomcat服务器的8080端口,浏览默认测试页面

2.方案:

使用两台虚拟机,其中一台作为Tomcat服务器,另一台作为测试机

3.步骤:

步骤一:安装软件

1)部署Tomcat服务器软件

使用yum安装jdk环境

yum -y install java-1.8.0-openjdk   #安装javajdk
yum -y install java-1.8.0-openjdk-headless    #
java -version           #查看java版本

2)安装tomcat

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.52/bin/apache-tomcat-9.0.52.tar.gz   
#本次实验使用的是tomcat-9.0版本
tar -xf apache-tomcat-9.0.52.tar.gz 
mv apache-tomcat-9.0.52 /usr/local/tomcat
#这个软件不需要安装,因为tomcat本身就是java写的程序脚本
ls /usr/local/tomcat
bin          #   主程序目录    
conf         #配置文件目录   
lib         #库文件目录(类的库)
logs      #日志目录 
webapps    #页面目录(网站根目录)
temp         #临时目录
work          #自动编译目录jsp

3)启动服务

/usr/local/tomcat/bin/startup.sh   
ss -ntulp | grep java
查看端口情况,如果为8005 和8080这两个端口则启动成功,如果不是,或者只有其中一个,启动失败
8005为tomcat软件使用端口,8080为用户使用端口

提示:如果检查端口时,8005端口启动非常慢,可使用下面的命令用urandom替换random(非必须操作),tomcat启动时需要大量的随机数据(在、dev/random)

mv /dev/random /dev/random.bak
ln -s /dev/urandom /dev/random

4)验证

在浏览器输入 http://192.168.19.130:8080 (ip为Tomcat服务器的IP)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ECYDAMNk-1631280338614)(E:\Typort\image-20210910182406491.png)]

步骤二:修改tomcat配置文件

1)创建测试jsp页面

vim /usr/local/tomcat/webapps/ROOT/test.jsp
<html>
        <body>
                <center>
        Now time is: <%=new java.util.Date()%>
                </center>
        </body>
</html>

2)验证:

输入http://192.168.19.130:8080/test.jsp来验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TNPavqfP-1631280338618)(E:\Typort\image-20210910183659392.png)]

使用Tomcat部署虚拟主机

1.问题:

沿用上述练习,使用Tomcat部署加密虚拟主机,实现以下要求

  • 实现基于两个域名的虚拟主机,分别为www.a.com和www.b.com
  • 使用www.a.com域名访问的页面根路径为/usr/local/tomcat/a/ROOT
  • 使用www.b.com域名访问的页面根路径为/usr/local/tomcat/b/base
  • 访问www.a.com/test时,页面自动跳转到/var/www/html目录下的页面
  • 访问页面时支持SSL加密通讯
  • 私钥,证书存储路径为/usr/local/tomcat/conf/cert
  • 每个虚拟主机都拥有独立的访问日志文件
  • 配置tomcat集群环境

2.方案:

修改server.xml配置文件,创建两个域名的虚拟主机,修改如下两个参数模块

介绍主配置文件的主要参数
cat  /usr/local/tomcat/conf/server.xml  #tomcat的主配置文件

<Server>
 <service>
 <Connector prot=8080/>  #tomcat的默认端口
 <Connector prot=8009/>
<Engine name="Catalina" defaultHost="localhost">
 #如果输入ip,defaultHost等于谁,就打开谁
 <Host name="www.a.com"  appBase="a"
            unpackWARs="true" autoDeploy="true">
 </Host>
 <Host name="www.b.com"  appBase="b"
            unpackWARs="true" autoDeploy="true">
 </Host>
 ...           
 
 每一对<host>代表一个主机 name代表主机名字 ,appbase代表网页根路径,unpackWARs 是否自动解压war包,auwodeploy,自动部署

3.步骤:

步骤一:配置服务器虚拟主机

1)修改server.xml配置文件,创建虚拟主机

vim /usr/local/tomcat/conf/server.xml
...
<Host name="www.a.com"  appBase="a"
            unpackWARs="true" autoDeploy="true">
 </Host>
 <Host name="www.b.com"  appBase="b"
            unpackWARs="true" autoDeploy="true">
 </Host>
 ...
 整个配置文件严格区分大小写

2)创建虚拟主机对应的页面根路径

mkdir -p /usr/local/tomcat/{a,b}/ROOT
echo "AAA" > /usr/local/tomcat/a/ROOT/index.html
echo "BBB" > /usr/local/tomcat/b/ROOT/index.html

3)重启服务

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
ss -ntulp | grep java
#查看是否启动成功

4)客户端设置hosts文件,并测试

vim /etc/hosts
192.168.19.130 www.a.com www.b.com
curl www.a.com:8080
curl www.b.com:8080

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aDSxNCQw-1631280338619)(E:\Typort\image-20210910191246564.png)]

步骤二:修改www.b.com网站的首页目录为base

1)使用docBase参数可以修改默认网站首页路径

vim /usr/local/tomcat/conf/server.xml
...
<Host name="www.a.com"  appBase="a"
            unpackWARs="true" autoDeploy="true">
 </Host>
 <Host name="www.b.com"  appBase="b"
            unpackWARs="true" autoDeploy="true">
            <Context path="" docBase="base"/>
 </Host>
 ...
 #    <Context path="" docBase="base"/> 默认路径在ROOT,加上docBase参数,修改默认路径
 mkdir /usr/local/tomcat/b/base
 echo "BASE" > /usr/local/tomcat/b/base/index.html
 /usr/local/tomcat/bin/shutdown.sh
 /usr/local/tomcat/bin/startup.sh

2)测试查看页面是否正确

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5X2E2VDk-1631280338621)(E:\Typort\image-20210910194608878.png)]

步骤三:跳转

1)当用户访问http://www.com/test打开/var/www/html目录下的页面

vim /usr/local/tomcat/conf/server.xml
...
<Host name="www.a.com"  appBase="a"
            unpackWARs="true" autoDeploy="true">
            <Context path="/test" docBase="/var/www/html/" />
 </Host>
 <Host name="www.b.com"  appBase="b"
            unpackWARs="true" autoDeploy="true">
            <Context path="" docBase="base"/>
 </Host>
 ...
 /var/www/html/为apache的httpd默认目录,如果没有安装过httpd是没有这个目录的,所以可以自己建,也可以对上述路径进行修改
 /usr/local/tomcat/bin/shutdown.sh
 /usr/local/tomcat/bin/startup.sh

2)测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9iHP7blQ-1631280338624)(E:\Typort\image-20210910200930727.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sjfq0kST-1631280338625)(E:\Typort\image-20210910202152400.png)]

步骤四:配置Tomcat支持SSL加密网站

在Tomcat中端口和虚拟主机并不绑定,这和httpd和nginx不同

例:httpd用80只能访问固定的网站

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxKnikPS-1631280338625)(E:\Typort\image-20210910202359208.png)]

nginx:端口和网站也是绑定的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6T7JoBPQ-1631280338626)(E:\Typort\image-20210910202504256.png)]

tomcat端口和虚拟主机并不绑定,每个网站公用8080端口,Tomcat加密做一次,所有的网站都会加密

Tomcat工作原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NdBJW4My-1631280338627)(E:\Typort\image-20210910202804895.png)]

用户从8080端口访问网页,通过engine来查找你想要看的网页,如果有,则导航去相应的网页,如果没有,则导航去默认网页localhost,<host 的三大参数,决定了网页位置,path,appbase,docbase>

1)创建加密用的私钥和证书文件

keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore
#-genkeypair 生成密钥对,生成只有一个文件,公钥私钥在一个文件里
#-alias  密钥别名
#-keyalg  定义密钥算法为RSA算法
#-keystore 定义密钥文件存储在/usr/lcoal/tomcat/keystore

2)再次修改server.xml配置文件,创建支持加密连接的Connector

vim /usr/local/tomcat/conf/server.xml
...
Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
            maxThreads="150" SSLEnabled="true" schme="https" secure="true" clientauth="false" sslProtocol="TLS" keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456">
#这行配置文件在主配置文件中存在,大概在86行左右,打开部分注释,修改密钥路径,密钥密码即可
#keystorePass 打开密钥的密码
#keystoreFile 密钥位置
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

3)开始测试

使用https://www.a.com:8443开始验证,tomcat加密之后端口改为8443,这个端口可以修改。配置文件里默认为8443

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sKwSm3zy-1631280338629)(E:\Typort\image-20210910210121314.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8spVEvKh-1631280338629)(E:\Typort\image-20210910210132567.png)]

步骤五:配置Tomcat日志

Tomcat默认日志在/usr/local/tomcat/logs

catalina.时间.log 为tomcat的系统日志,这个日志每天产生一个

1)为每个虚拟主机设置不同的日志文件

vim /usr/local/tomcat/conf/server.xml
...
<Host name="www.a.com"  appBase="a"
            unpackWARs="true" autoDeploy="true">
            <Context path="/test" docBase="/var/www/html/" />
             <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="www.a.com" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 </Host>
#directory="logs"  日志存放目录
#prefix   日志文件名
#suffix   日志扩展名
#这个<valve>在之前的默认host中存在,可以复制下来,修改其中内容
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

2)开始测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s2wY0z7y-1631280338630)(E:\Typort\image-20210910211722757.png)]

进行一次访问之后再次查看

在这里插入图片描述
我们发现多了一个www.a.com的日志

步骤六:配置Tomcat集群

配置过程

1)使用一台虚拟机配置nginx调度器

详细配置过程请见Nginx的反向代理

vim /usr/local/nginx/conf/nginx.conf
....
upstream tomcat{
        server 192.168.20.30:8080;  #使用server定义集群中的具体服务器和端口
        server 192.168.20.40:8080;
}
server {
        listen       80;
        server_name  www.a.com;
        location / {
          proxy_pass http://tomcat;
        }
}

通过调度之后,访问调度器的80端口,会被转发到Tomcat集群的8080端口

tomcat内存空间设置

常见内存错误:
1、java.lang.OutOfMemoryError: Java heap space
整体意思是超出内存堆空间的错误
使用Java程序从数据库中查询大量的数据时出现异常
在JVM中如果98%的时间是用于GC(Garbage Collection)且可用的Heap size 不足2%的时候将抛出此异常信息。

2、java.lang.OutOfMemoryError: PermGen space
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的。
如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

3、OutOfMemoryError: unable to create new native thread.
无法创建新的线程。
4、java “Too small initial heap” 错误
Xmx设置小了。

具体解决方法:
#生产环境设置,假设内存空间为8G,在catalina.sh在文件头部的注释下面,加入下面的内容
下面使用的为JDK

export JAVA_OPTS='-server –Xms4096m –Xmx4096m -Xmn256m  -XX:PermSize=256m -XX:MaxNewSize=512m -XX:MaxPermSize=512m '

提示:
使用64位tomcat版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值