麒麟操作系统服务架构保姆级教程(十三)tomcat环境安装以及LNMT架构

news2025/2/23 5:05:52

   如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情

        之前咱们学习了LNMP架构,但是PHP对于技术来说确实是老掉牙了,PHP的市场占有量越来越少了,我认识一个10年的PHP开发工程师,十年工资从15k到今天的6k,现在比较主流的是Java+前端实现界面访问,但是Java需要特定的web服务进行解析展示今天咱们学习tomcat的安装部署,话不多说直接开干~~~~

目录

一、安装java环境,配置tomcat

二、部署Java环境的Tomcat部署zrlog项目

三、搭建LNMT架构(https+nginx负载均衡+mysql数据库+tomcat服务)

四、配置session会话保持

💬欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!

👍点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!

🚀推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对Linux感兴趣的朋友,让我们一起进步,共同提升!

一、安装java环境,配置tomcat

安装java环境yum install java -y
或者上传rpm包
rpm -ivh  jdk....rpm
查看是否安装成功
[root@web01 ~]# rpm -qa|grep jdk
jdk1.8-1.8.0_181-fcs.x86_64
安装tomcat(下载 Tomcat、解压、启动 )
Tomcat官网: https://tomcat.apache.org/
[root@web01 ~]#wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz
[root@web01 ~]#mkdir /soft
[root@web01 ~]#tar xf  apache-tomcat-9.0.98.tar.gz  -C /soft/
[root@web01 ~]#ln -s /soft/apache-tomcat-9.0.98/ /soft/tomcat
[root@web01 ~]# /soft/tomcat/bin/startup.sh     # 启动
[root@web01 ~]# /soft/tomcat/bin/shutdown.sh    # 停止
# 8080 对外提供服务的端口    # 8005 关闭Tomcat端口
[root@web01 ~]# netstat -lntp |grep java
tcp6    0    0 127.0.0.1:8005      :::*           LISTEN    6867/java       
tcp6    0    0 :::8080            :::*           LISTEN    6867/java
配置systemc方式启动
[root@web01 soft]#vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target
​
[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh
ExecRestart=/soft/tomcat/bin/shutdown.sh  && sleep2  && /soft/tomcat/bin/star
tup.sh
​
[Install]
WantedBy=multi-user.target
重载tomcat,加入开机自启
[root@web01 ~]# systemctl daemon-reload
[root@web01 ~]#systemctl enable  tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.
tomcat配置文件
tomcat软件目录结构:
bin          ---主要包含启动和关闭tomcat的脚本(启停java脚本依赖jar包文件)
conf            ---tomcat配置文件的目录(站点配置:server.xml)
lib           ---tomcat运行时需要加载的jar包
logs            ---tomcat日志存放位置
temp            ---tomcat临时存放文件路径
webapps       ---tomcat默认站点目录
work            ---tomcat运行时产生的缓存文件
​
关闭防火墙
[root@web01 ~]#systemctl stop firewalld.service iptables
[root@web01 ~]#systemctl disable firewalld.service iptables
​
​
测试:添加一个虚拟主机
[root@web01 conf]#vim server.xml
 <Host name="www.yuxiaopi.cn"  appBase="/code/tomcat"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="yuxiaopi" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
mkdir -p /code/tomcat/ROOT
[root@web01 conf]#echo 学运维找小屁 >/code/tomcat/ROOT/index.html
[root@web01 conf]#vim /code/tomcat/ROOT/index.html
<?xml version="1.0" encoding="UTF-8"?>
学运维找小屁

二、部署Java环境的Tomcat部署zrlog项目

定义虚拟主机
[root@web01 conf]#vim server.xml 
<Host name="zrlog.yunzhongzi.com"  appBase="/code/zrlog"    #添加域名和软件存放的位置
            unpackWARs="true" autoDeploy="true">
​
        <Valve className="org.apache.catalina.valves.AccessLogValve" 
directory="logs"
               prefix="zrlog" suffix=".log"     #修改日志文件的名称
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
配置环境
[root@web01 conf]#mkdir /code/zrlog/ROOT -p
[root@web01 conf]#cd /code/zrlog
将准备好的ROOT.war文件拖拽至zrlog(环境里可以自动解压war包,如果没解压可以重启tomcat服务)
进入10.0.0.51服务器新建zrlog数据库
[root@db01 ~]#mysql -uroot -pqy123.com
MariaDB [(none)]> create database zrlog;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| she                |
| test               |
| wp                 |
| zrlog              |
+--------------------+
windows端做完hosts解析
访问zrlog.yunzhongzi.com创建即可

三、搭建LNMT架构(https+nginx负载均衡+mysql数据库+tomcat服务)

配置nfs
web01操作如下
[root@web01  ~]# scp -rp /soft  10.0.0.8:/
[root@web01  ~]# scp -rp /code/zrlog  10.0.0.8:/code/zrlog
[root@web01 ~]# scp /usr/lib/systemd/system/tomcat.service  172.16.1.8:/usr/lib/systemd/system/tomcat.service
web02操作如下
[root@web02 ~]#ln -s /soft/apache-tomcat-9.0.98/ /soft/tomcat
[root@web02 ~]# systemctl daemon-reload
[root@web02 ~]# systemctl start tomcat
[root@web02 ~]# systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.
[root@web02 ~]# yum install nfs-utils -y
配置nfs共享目录
[root@nfs  ~]# cat /etc/exports
[root@nfs ~]#vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/code/wp 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/code/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
新建挂载的目录
[root@nfs code]#mkdir zrlog
修改目录权限
[root@nfs code]#chown -R www.www zrlog
[root@nfs code]#ll
total 0
drwxr-xr-x 2 www www  6 May  9 22:39 she
drwxr-xr-x 3 www www 18 Apr 27 20:25 wp
drwxr-xr-x 2 www www  6 May 10 17:17 zrlog
重启nfs
[root@nfs code]#systemctl restart nfs
挂载(部署playbook的时候写入开机自动挂载)
[root@web02 image]#mount -t nfs 172.16.1.31:/code/zrlog /code/zrlog/ROOT/attached/
配置负载均衡
[root@lb01 conf.d]#vim zrlog.conf 
upstream zrlog {
    server 10.0.0.7:8080;
    server 10.0.0.8:8080;
}
server {
    listen 443 ssl;
    server_name zrlog.yunzhongzi.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
​
    location / {
        proxy_pass http://zrlog;
        include proxy_params;
    }
}
server {
    listen 80;
    server_name zrlog.yunzhongzi.com;
    return 302 https://$server_name$request_uri;
}
密钥文件已经存在服务器直接引用即可(但记得调整web端的服务的属主属组为www)

四、配置session会话保持

db01上的redis会话保持功能已经安装完成并开启
[root@web01 ~]# wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/4.0/tomcat-cluster-redis-session-manager.zip
1.解压zip包   
[root@web01 ~]# unzip tomcat-cluster-redis-session-manager.zip
2.拷贝jars到tomcat的/lib目录中
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/
3.拷贝conf下的redis.properties文件,到tomcat的conf文件
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/
4.将配置文件中连接redis地址修改为如下地址即可
[root@web01 ~]# vim /soft/tomcat/conf/redis-data-cache.properties
redis.hosts=172.16.1.51:6379
5.添加如下两行至tomcat/conf/context.xml  (添加在</Context> 上一行 )
[root@web01 ~]# vim /soft/tomcat/conf/context.xml
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />
注意: 修改完一台直接和另外一台进行无差异同步rsync --delete
修改完成后重启Tomcat

今天的LNMT架构就介绍到这里了,接下来介绍一下nginx的优化和防火墙~~~


想成为大佬,就要从小白开始,从0开始,一点一点的积累,慢慢成长,明天你就是大佬!!想学习更多麒麟操作系统的知识,关注小屁,让你成为运维老鸟~~~~~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2280475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

67,【7】buuctf web [HarekazeCTF2019]Avatar Uploader 2(未完成版)

进入靶场 和上一题一母同胞&#xff0c;先把上一题的答案拖进去看看 区别在于上一题这块直接显示了flag&#xff0c;这里并没有 看看源码 加载不出来&#xff0c;ctrlu <!-- 上传头像的提示信息&#xff0c;说明上传要求 --><p>Please upload a PNG image less th…

QD Laser携“Lantana”激光器参展SPIE光子学西部展2025,聚焦紧凑型设计

据悉&#xff0c;QD Laser公司将在2025年SPIE光子学西部展览会上展出其最新产品——世界最小一体化紧凑型可见光激光器“Lantana”。该展会将于1月28日至30日在旧金山的Moscone中心举行。 在展会期间&#xff0c;QD Laser公司将现场展示这款超小型、轻便设备—— “Lantana”。…

63,【3】buuctf web Upload-Labs-Linux 1

进入靶场 点击pass1 查看提示 既然是上传文件&#xff0c;先构造一句话木马&#xff0c;便于用蚁剑连接 <?php eval($_POST[123])?> 上传木马 文件后缀写为.php.jpg 右键复制图片地址 打开蚁剑连接 先点击测试连接&#xff0c;显示成功后&#xff0c;再点击添加即可 …

不重启JVM,替换掉已经加载的类

不重启JVM&#xff0c;替换掉已经加载的类 直接操作字节码 使用ASM框架直接操作class文件&#xff0c;在类中修改代码&#xff0c;然后retransform就可以了 下边是BTrace官方提供的一个简单例子&#xff1a; package com.sun.btrace.samples;import com.sun.btrace.annotati…

使用插件SlideVerify实现滑块验证

作者gitee地址&#xff1a;https://gitee.com/monoplasty/vue-monoplasty-slide-verify 使用步骤&#xff1a; 1、安装插件 npm install --save vue-monoplasty-slide-verify 2、在main.js中进行配置 import SlideVerify from vue-monoplasty-slide-verify; Vue.use(SlideV…

Kafka 和 MQ 的区别

1.概述 1.1.MQ简介 消息中间件&#xff0c;其实准确的叫法应该叫消息队列&#xff08;message queue&#xff09;&#xff0c;简称MQ。其本质上是个队列&#xff0c;有FIFO的性质&#xff0c;即first in first out&#xff0c;先入先出。 目前市场上主流的MQ有三款&#xff…

61,【1】BUUCTF WEB BUU XSS COURSE 11

进入靶场 左边是吐槽&#xff0c;右边是登录&#xff0c;先登录试试 admin 123456 admiin# 123456 admin"# 123456 不玩了&#xff0c;先去回顾下xss 回顾完就很尴尬了&#xff0c;我居然用SQL的知识去做xss的题 重来 吐槽这里有一个输入框&#xff0c;容易出现存储型…

CAN 网络介绍

背景 在T-Box 产品开发过程中&#xff0c;我们离不开CAN总线&#xff0c;因为CAN总线为我们提供了车身的相关数据&#xff0c;比如&#xff0c;车速、油耗、温度等。用于上报TSP平台&#xff0c;进行国标认证&#xff1b;也帮助我们进行车身控制&#xff0c;比如车门解锁/闭锁…

【C++】在线五子棋对战项目网页版

目录 1.Websocket 1.1.Websocket的简单认识 1.2.什么是轮询呢&#xff1f; 1.3.websocket协议切换过程 1.4.websocketpp库常用接口认识 1.5.websocketpp库搭建服务器流程 1.6.websocketpp库搭建服务器 2.mysqlclient库-接口认识 3.项目模块的划分&#xff1a; 4.项目…

《鸿蒙 HarmonyOS 应用开发从入门到精通(第 2 版)》学习笔记 ——HarmonyOS 环境搭建之安装DevEco Studio

作为一款开发工具&#xff0c;除了具有基本的代码开发、编译构建及调测等功能外&#xff0c;DevEco Studio还具有如下特点&#xff1a; 高效智能代码编辑&#xff1a;支持Java、XML、ArkTS、JS、C/C等语言的代码高亮、代码智能补齐、代码错误检查、代码自动跳转、代码格式化、…

2025年最新深度学习环境搭建:Win11+ cuDNN + CUDA + Pytorch +深度学习环境配置保姆级教程

本文目录 一、查看驱动版本1.1 查看显卡驱动1.2 显卡驱动和CUDA对应版本1.3 Pytorch和Python对应的版本1.4 Pytorch和CUDA对应的版本 二、安装CUDA三、安装cuDANN四、安装pytorch五、验证是否安装成功 一、查看驱动版本 1.1 查看显卡驱动 输入命令nvidia-smi可以查看对应的驱…

LAYA3.0 组件装饰器说明

原文 在LayaAirIDE中&#xff0c;如果想在IDE内展示组件脚本的属性&#xff0c;需要通过装饰器的规则来实现。下面分别介绍四种装饰器。 文章目录 一、regClass()二、property()2.1 组件属性的常规使用2.2 属性访问器的装饰器使用2.3 是否序列化保存2.4 组件属性是否在IDE中显…

PostIn安装教程

PostIn是一款国产开源免费的接口管理工具&#xff0c;包含项目管理、接口调试、接口文档设计、接口数据MOCK等模块&#xff0c;支持常见的HTTP协议、websocket协议等&#xff0c;支持免登陆本地接口调试&#xff0c;同时可以对项目进行灵活的成员权限、消息通知管理等。 1、服务…

RabbitMQ--延迟队列

&#xff08;一&#xff09;延迟队列 1.概念 延迟队列是一种特殊的队列&#xff0c;消息被发送后&#xff0c;消费者并不会立刻拿到消息&#xff0c;而是等待一段时间后&#xff0c;消费者才可以从这个队列中拿到消息进行消费 2.应用场景 延迟队列的应用场景很多&#xff0c;…

后端面试题分享第一弹(状态码、进程线程、TCPUDP)

后端面试题分享第一弹 1. 如何查看状态码&#xff0c;状态码含义 在Web开发和调试过程中&#xff0c;HTTP状态码是了解请求处理情况的重要工具。 查看状态码的步骤 打开开发者工具&#xff1a; 在大多数浏览器中&#xff0c;您可以通过按下 F12 键或右键单击页面并选择“检查…

网络通信---MCU移植LWIP

使用的MCU型号为STM32F429IGT6&#xff0c;PHY为LAN7820A 目标是通过MCU的ETH给LWIP提供输入输出从而实现基本的Ping应答 OK废话不多说我们直接开始 下载源码 LWIP包源码&#xff1a;lwip源码 -在这里下载 ST官方支持的ETH包&#xff1a;ST-ETH支持包 这里下载 创建工程 …

CSS笔记基础篇02——浮动、标准流、定位、CSS精灵、字体图标

黑马程序员视频地址&#xff1a; 前端Web开发HTML5CSS3移动web视频教程https://www.bilibili.com/video/BV1kM4y127Li?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p70https://www.bilibili.com/video/BV1kM4y127Li?vd_source…

Linux:进程(三)

1. 进程创建补充 fork之后父子两个执行流分别执行&#xff0c;fork之后谁谁先执行由调度器来决定。 一般&#xff0c;父子代码共享。当父子不再写入时&#xff0c;数据也是共享的&#xff0c;但是当有一方要写入&#xff0c;就触发写时拷贝。 fork调用失败的原因 1. 系统中有…

2025年1月21日刷题记录

1.leetcode1768题目 链接&#xff1a;1768. 交替合并字符串 - 力扣&#xff08;LeetCode&#xff09; 代码&#xff1a; class Solution { public:string mergeAlternately(string word1, string word2) {string word3;int a word1.size(), b word2.size();int i 0, j 0…

Mysql触发器(学习自用)

一、介绍 二、触发器语法 注意&#xff1a;拿取新的数据时用new&#xff0c;旧数据用old。