day46——Tomcat集群的实现

1.JVM基本介绍

JAVA业务都是运行在java虚拟机的,java虚拟机简称为JVM(java Virtual Machine)

JAVA是编译性语言
C语言 编译型--->
linux --->编译一次
windows --->编译一次
macos
ubuntu
优缺点:跨平台 移值型差

只需要将源代码进行一次编译 war包,能够在多处运行。
jvm虚拟机
windows jvm --->war
linux jvm --->war
mac jvm --->war

1.1JAVA环境JRE和JDK那么区别在哪儿?

jvm 如何安装?
jvm 需要 jre java运行环境

环境:

jre: java运行环境 包含 jvm

jdk: java开发环境 包含 jre

只想运行java代码,只需要jre即可
既想要运行环境,开发环境 jdk


2.什么是Tomcat?与Nginx区别

Tomcat是基于java开发一个web服务器软件, 和nginx类似。

tomcat能直接解析jsp代码,以及静态资源.

只不过Tomcat是基于JAVA开发的WEB容器,主要用于发布Java代码、网页代码Jsp


3.Tomcat安装启动

3.1安装:

java
[root@web01 ~]# yum install java -y
二进制安装tomcat
[root@web01 ~]# mkdir /soft && cd /soft
[root@web01 soft]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.26/bin/apache-tomcat-9.0.26.tar.gz
[root@web01 soft]# tar xf apache-tomcat-9.0.26.tar.gz 
#给解压获得的目录加个软链接
[root@web01 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat

3.2启动:

[root@web01 soft]# /soft/tomcat/bin/startup.sh   #tomcat的启动
[root@web01 soft]# netstat -lntp|grep java
tcp6       0      0 :::8009            :::*        LISTEN      8500/java           
tcp6       0      0 :::8080            :::*        LISTEN      8500/java           
tcp6       0      0 127.0.0.1:8005     :::*        LISTEN      8500/java

3.3二进制安装:

jdk使用二进制
tomcat使用二进制
[root@es-node1 ~]# mkdir /soft/
[root@es-node1 ~]# tar xf jdk-8u60-linux-x64.tar.gz -C /app/
[root@es-node1 ~]# ln -s /soft/jdk1.8.0_60 /soft/jdk
[root@es-node1 ~]# vim /etc/profile
#...最后面添加...
export JAVA_HOME=/app/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

[root@es-node1 ~]# tar xf apache-tomcat-9.0.26.tar.gz -C /soft
[root@es-node1 ~]# /soft/apache-tomcat-9.0.26/bin/startup.sh

3.4/soft/tomcat目录下的内容

目录 目录里的内容
/bin 主要包含启动和关闭Tomcat脚本,以及依赖的jar文件
/conf Tomcat配置文件目录
/lib Tomcat运行需要加载的jar包
/logs Tomcat在运行过程中产生的日志文件
/temp Tomcat存放临时文件
/webapps Tomcat默认站点目录
/work 运行时产生的缓存文件

4.Tomcat配置文件详解

tomcat配置文件图解.png

一个server表示一个tomcat实例
一个server中包含多个Connector连接器,Connector的主要功能是接受、响应用户请求。
service的作用是:将connector关联至engine(catalina引擎)
一个host就是一个站点,类似于nginx的多站点
context类似于nginx中location的概念


5.Tomcat配置虚拟主机

[root@web01 ~]# cat /soft/tomcat/conf/server.xml
<!--tomcat虚拟主机-->
    <Host name="tomcat1.oldxu.com"  appBase="/code1"
        unpackWARs="true" autoDeploy="true">

    <!--类似于nginx的location  path是访问的路径 ->映射 docBase是真实的路径-->
    <Context docBase="/code1/admin" path="/test" reloadable="true"/>

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
            prefix="tomcat1_access_log" suffix=".txt"
            pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>

5.1无法启动原因:

  1. 替换配置文件: pkill java 然后在启动

  2. 配置文件写错

  3. 虚拟主机是添加,不要修改

  4. context如果写了,一定要有对应的目录,不然整体就报错

    日志文件所在路径:/soft/tomcat/logs/catalina.out


6.Tomcat部署单台博客项目zrlog

域名: zrlog.oldxu.com:8080
    站点目录:  /code/zrlog      <--ROOT
    10.0.0.7  tomcat   端口 8080      
    10.0.0.51 mysql    端口 3306

6.1配置server.xml文件 ,新增在虚拟主机在engline层

[root@web01 ~]# vim /soft/tomcat/conf/server.xml
<!--zrlog站点-->
<Host name="zrlog.oldxu.com"  appBase="/code/zrlog"
      unpackWARs="true" autoDeploy="true">

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="zrlog_access_log" suffix=".txt"
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

6.2创建站点目录,上传zrlog的war包

ROOT目录就是存放tomcat软件的目录,必须要创建ROOT目录
[root@web01 ~]# mkdir /code/zrlog
[root@web01 ~]# cd /code/zrlog/
[root@web01 zrlog]# rz ROOT.war    <---这个是zrlog的war包,名称就叫ROOT

6.3重启Tomcat服务

#Tomcat重启服务是要用绝对路径,先关闭再重启再查看目录
[root@web01 zrlog]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh && tail -f /soft/tomcat/logs/catalina.out

6.4配置劫持,查看是否安装合适(虚拟域名做)

6.5创建数据库172.16.1.51

在172.16.1.51的数据库上,创建一个zrlog的库,配置授权访问用户

[root@db01 ~]# mysql -uroot -poldxu.com
MariaDB [(none)]> create database zrlog charset utf8;
        <---此前配置过all用户,可以复用
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'oldxu.com';
PS:tomcat是由java语言开发的,tomcat只编译ROOT.war包,所以上传的一个文件必须是war包然后为改名ROOT

7.源码包-->jar包--war包的关系

源码包和jar、war包之间的关系.png

8.安装一个jpress

8.1新添一个虚拟站点

配置conf/server.xml 增加一个Host
<!--jpress站点-->
    <Host name="jpress.oldxu.com"  appBase="/code/jpress"
        unpackWARs="true" autoDeploy="true">

     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="jpress_access_log" suffix=".txt"
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

8.2上传代码

[root@web01 ~]# mkdir /code/jpress && cd /code/jpress
[root@web01 jpress]# rz jpress.war
[root@web01 jpress]# mv jpress.war ROOT.war

8.3重启tomcat

[root@web01 jpress]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh && tail -f /soft/tomcat/logs/catalina.out

9.Tomcat配置基础认证

9.1如何开启 Server Status Host Manager页面

tomcat主站.png
1.配置conf/tomcat-users.xml中的用户名和密码
[root@web01 ~]# vim /soft/tomcat/conf/tomcat-users.xml
-->
  <role rolename="manager-gui"/>      #Host Manager页面定义的规则名
  <role rolename="admin-gui"/>        #其他两个页面的规则名
  <user username="tomcat" password="123456" roles="manager-gui,admin-gui"/>       #应用规则名
</tomcat-users>
2.配置Server Status和Manager App和Host Manager设置允许网段所在目录:
1.Server Status和Manager App
[root@web01 ~]# vim /soft/tomcat/webapps/manager/META-INF/context.xml

2.Host Manager设置允许网段所在的目录
[root@web01 ~]# vim /soft/tomcat/webapps/host-manager/META-INF/context.xml

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
#修改为
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.0\.0\.\d+" />

9.2启用zrlog的基础认证 (了解 可以在负载均衡上面搞)

启用zrlog的基础认证 ---> zrlog.oldxu.com/admin 了解 使用Nginx替代

[root@es-node1 tomcat]# vim /code/zrlog/ROOT/WEB-INF/web.xml
<web-app>
...
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>zrlog</web-resource-name>
            <url-pattern>/admin/*</url-pattern>
        </web-resource-collection>
    
        <auth-constraint>
            <role-name>zrlog_role</role-name>
        </auth-constraint>
    </security-constraint>
    
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>Default</realm-name>
    </login-config>
...
</web-app>

#配置用户名密码,关联对应的角色(多个role不要使用相同用户)
[root@es-node1 tomcat]# vim /soft/tomcat/conf/tomcat-users.xml
<role rolename="zrlog_role"/>
<user username="tomcat" password="123456" roles="zrlog_role"/>

#重启tomcat
[root@es-node1 ~]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh

10.部署多节点Tomcat集群

10.0.0.7 ---> 10.0.0.51
10.0.0.8 ---> 10.0.0.51

10.1安装jdk

[root@web02 ~]# yum install java -y

10.2安装tomcat 部署代码 (scp)

[root@web02 ~]# mkdir /soft && cd /soft
[root@web02 soft]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.26/bin/apache-tomcat-9.0.26.tar.gz
[root@web02 soft]# tar xf apache-tomcat-9.0.26.tar.gz 
#给解压获得的目录加个软链接
[root@web02 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat

10.3打包、推送

在web01上操作
[root@web01 ~]# scp -rp /soft root@172.16.1.8:/
[root@web01 ~]# scp -rp /code/zrlog root@172.16.1.8:/code/

在web02上操作还要安装java
[root@web02 soft]# rm -rf /soft/tomcat/
[root@web02 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat
[root@web02 soft]# /soft/tomcat/bin/startup.sh

10.4修改域名解析

11.解决静态资源共享

11.1安装NFS

[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# yum install nfs-utils -y
#编写配置文件
[root@nfs ~]# cat /etc/exports
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
#根据配置文件初始化环境
[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# systemctl restart nfs

11.2找到图片资源 推送至NFS

[root@web01 ~]# scp -rp /code/zrlog/ROOT/attached/* root@172.16.1.31:/data/zrlog/
[root@nfs ~]# chown -R www.www /data/zrlog/         #重新授权

11.3多节点挂载

# mount -t nfs 172.16.1.31:/data/zrlog/ /code/zrlog/ROOT/attached/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。