Tomcat简介 安装 站点部署 多实例配置 反向代理

news2024/11/16 1:25:15

  • 一、Tomcat简介
  • 二 、Tomcat帮手 --- JDK
    • 安装jdk
    • 检查jdk是否安装成功
  • 三.安装Tomcat
    • Tomcat配置管理页面
  • 四、web站点部署
  • 五、部署开源站点(jspgou商城)
    • 安装数据库
  • 六、 jspgou商城上线
    • 配置数据库连接
  • 七、Tomcat多实例配置
    • 复制程序文件
    • 浏览器访问
  • 八、Tomcat反向代理集群
    • nginx负载均衡器
    • 配置负载均衡器

一、Tomcat简介

Tomcat的官网: http://tomcat.apache.org

Tomcat是Apache软件基金会项目中的核心项目,由apache、sun和其他一些公司以及个人共同开发完成Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选

Tomcat和nginx、apache(httpd)web服务器一样,具有处理HTML页面的功能,不过Tomcat处理静态HTML的能力不如Nginx/Apache服务器
一个tomcat默认的并发是200

tomcat使用方案
1567954650834
建议使用Nginx和Tomcat配合,Nginx处理静态,Tomcat处理动态程序
方案三中后端Tomcat可以运行在单独的主机,也可以是同一台主机上的多实例

二 、Tomcat帮手 — JDK

JDK是Java语言的软件开发工具包,JDK是整个java开发的核心,包含了JAVA的运行环境和JAVA工具

安装jdk

systemctl stop firewalld && setenforce 0
yum  -y install wget vim lrzsz 

jdk下载界面

[root@localhost ~]# tar xf jdk-8u211-linux-x64.tar.gz -C /usr/local
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv jdk1.8.0_211/ java
[root@localhost local]# cd java
[root@localhost java]# vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/java  #指定java安装目录
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH  #用于指定JAVA系统查找命令的路径 
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar  #类的路径,在运行java程序时,如果调用到其他类的时候,在classpath寻找相关的类
[root@localhost java]# source /etc/profile.d/jdk.sh

检查jdk是否安装成功

[root@localhost java]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

三.安装Tomcat

[root@localhost ~]# mkdir /data/application -p
[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.tar.gz
[root@localhost ~]# tar xf apache-tomcat-8.5.95.tar.gz -C /data/application/
[root@localhost ~]# cd /data/application/
[root@localhost application]# mv apache-tomcat-8.5.95/ tomcat

设置环境变量
	
[root@localhost tomcat]# vim /etc/profile
export TOMCAT_HOME=/data/application/tomcat   #指定tomcat的安装目录
[root@java-tomcat1 application]# source  /etc/profile #重新加载环境变量
[root@localhost tomcat]# /data/application/tomcat/bin/version.sh #查看安装的tomcat的信息
Using CATALINA_BASE:   /data/application/tomcat
Using CATALINA_HOME:   /data/application/tomcat
Using CATALINA_TMPDIR: /data/application/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /data/application/tomcat/bin/bootstrap.jar:/data/application/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Server version: Apache Tomcat/8.5.95
Server built:   Oct 12 2023 00:55:53 UTC
Server number:  8.5.95.0
OS Name:        Linux
OS Version:     3.10.0-1160.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_211-b12
JVM Vendor:     Oracle Corporation

启动tomcat
[root@localhost tomcat]# /data/application/tomcat/bin/startup.sh
检查tomcat是否正常启动
[root@location tomcat]# netstat -lntp  |grep java
tcp6       0      0 :::8080         :::*                   LISTEN      30560/java
tcp6       0      0 127.0.0.1:8005          :::*          LISTEN      30560/java

8005:监听关闭Tomcat的请求,shutdown:向以上端口发送关闭服务器的命令字符串
8080:建立http也就是客户端访问连接用
8009:与其他http服务通信

浏览器访问
在这里插入图片描述
日志文件在/data/application/tomcat/logs/catalina.out

Tomcat配置管理页面

修改配置文件
 vim /data/application/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="user" password="password" roles="tomcat,manager-gui,manager-script,admin-gui,admin-script"/>    #写在<tomcat-users>标签里

修改配置如下图
 vim /data/application/tomcat/webapps/host-manager/META-INF/context.xml 
 vim /data/application/tomcat/webapps/manager/META-INF/context.xml 

image-20200212212447153

四、web站点部署

方法一 直接将程序目录放在webapps下
方法二 使用开发工具将程序打包成war包,然后上传到webapps目录下

 wget http://updates.jenkins-ci.org/download/war/2.129/jenkins.war
 cd /data/application/tomcat
 cp -r webapps/ /opt/
 cd /data/application/tomcat/webapps/
  rm -rf *  
  mkdir ROOT 
   cd ROOT/
   cp /root/jenkins.war  .
   unzip jenkins.war

在这里插入图片描述

五、部署开源站点(jspgou商城)

安装数据库

下载yum源的安装包
[root@mysql ~]# yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
[root@mysql ~]# vim /etc/yum.repos.d/mysql-community.repo
把安装5.7的源打开, 关闭安装8.0的源,如下图

1566037635973.png

安装mysql
yum -y install mysql mysql-server
启动mysql
systemctl start  mysqld
查找密码
[root@mysql ~]# grep "password" /var/log/mysqld.log
2023-10-30T05:11:55.455672Z 1 [Note] A temporary password is generated for root@localhost: !s9MldEIDQz*

#更改密码
mysqladmin -uroot -p'!s9MldEIDQz*' password "Qianfeng@123"

#配置数据库
mysql -pQianfeng@123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.44 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database jspgou default charset=utf8;  #创建数据库
Query OK, 1 row affected (0.00 sec)

六、 jspgou商城上线

上传软件包
rz

解压
[root@localhost DB]# /data/application/tomcat/bin/shutdown.sh 
[root@localhost ~]#unzip jspgouV6.1-ROOT.zip
[root@localhost ~]#cp -r ROOT/ /data/application/tomcat/webapps/

[root@localhost ~]#cd /data/application/tomcat/webapps/
[root@localhost webapps]# vim ROOT/WEB-INF/config/jdbc.properties

1562343052362

配置数据库连接

[root@localhost ~]# cd DB
[root@localhost DB]# ls
jspgou.sql
[root@localhost DB]# vim /etc/my.cnf
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUB
explicit_defaults_for_timestamp=1
[root@localhost DB]# mysql -uroot -p'Qianfeng@123' -D jspgou < jspgou.sql
[root@localhost DB]# /data/application/tomcat/bin/startup.sh

在这里插入图片描述

七、Tomcat多实例配置

多实例(多进程):同一个程序启动多次,分为两种情况:

第一种:一台机器跑多个站点;

第二种:一个机器跑一个站点多个实例,配合负载均衡

复制程序文件

[root@localhost ~]# cd /data/application
[root@localhost application]# cp -r tomcat/ tomcat2
[root@localhost application]# ls
tomcat  tomcat2
[root@localhost application]# sed -i 's#8005#8011#' tomcat/conf/server.xml
[root@localhost application]# sed -i 's#8005#8012#;s#8080#8082#' tomcat2/conf/server.xml
[root@localhost application]# sed -i 's#8009#8019#' tomcat/conf/server.xml
[root@localhost application]# sed -i 's#8009#8029#' tomcat2/conf/server.xml
[root@localhost application]# diff tomcat/conf/server.xml tomcat2/conf/server.xml
22c22
< <Server port="8011" shutdown="SHUTDOWN">
---
> <Server port="8012" shutdown="SHUTDOWN">
67c67
<          Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
---
>          Define a non-SSL/TLS HTTP/1.1 Connector on port 8082
69c69
<     <Connector port="8080" protocol="HTTP/1.1"
---
>     <Connector port="8082" protocol="HTTP/1.1"
77c77
<                port="8080" protocol="HTTP/1.1"
---
>                port="8082" protocol="HTTP/1.1"
122c122
<     <!-- Define an AJP 1.3 Connector on port 8019 -->
---
>     <!-- Define an AJP 1.3 Connector on port 8029 -->
126c126
<                port="8019"
---
>                port="8029"


[root@localhost tomcat2]# rm -rf  webapps
[root@localhost tomcat2]# cp -r /opt/webapps .
[root@localhost application]# cd /data/application/tomca2t/bin/
[root@localhost bin]# vim catalina.sh
CATALINA_HOME=/data/application/tomcat2
[root@localhost application]# /data/application/tomcat2/bin/startup.sh

检查端口是否启动
[root@localhost bin]# ss -nplt |grep java
LISTEN     0      100       [::]:8080                  [::]:*                   users:(("java",pid=1488,fd=52))
LISTEN     0      100       [::]:8082                  [::]:*                   users:(("java",pid=1765,fd=52))
LISTEN     0      1       [::ffff:127.0.0.1]:8005                  [::]:*                   users:(("java",pid=1488,fd=170))

浏览器访问

在这里插入图片描述
在这里插入图片描述

八、Tomcat反向代理集群

nginx负载均衡器

[root@localhost ~]# echo '
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1 ' > /etc/yum.repos.d/nginx.repo
[root@localhost ~]# yum install yum-utils -y
[root@localhost ~]# yum install nginx -y

配置负载均衡器

 [root@localhost ~]# cd /etc/nginx/conf.d/
 [root@localhost conf.d]# rm -f default.conf
 [root@localhost conf.d]# vim tomcat.conf
upstream testweb {
   server 10.36.192.169:8080 weight=1 max_fails=1 fail_timeout=2s;
   server 10.36.192.169:8082 weight=1 max_fails=1 fail_timeout=2s;
}
 server {
   listen       80;
   server_name  localhost;
   location / {
      proxy_pass http://testweb;
   } 
}
重启nginx
[root@localhost conf.d]# systemctl start nginx

浏览器访问

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

3D LUT 滤镜 shader 源码分析

最近在做滤镜相关的渲染学习&#xff0c;目前大部分 LUT 滤镜代码实现都是参考由 GPUImage 提供的 LookupFilter 的逻辑&#xff0c;整个代码实现不多。参考网上的博文也有各种解释&#xff0c;参考了大量博文之后终于理解了&#xff0c;所以自己重新整理了一份&#xff0c;方便…

RT-Smart 开发笔记:int 类型数值溢出造成的奇怪问题的分析与排查记录

前言 最近在调试 RT-Smart 上的用户态 mq&#xff08;消息队列&#xff09;时&#xff0c;遇到一个奇怪的问题&#xff0c;这个例程打印了一下获取的时间&#xff0c;就可以正常的工作&#xff08;超时退出&#xff09;&#xff0c;否则&#xff0c;就一直卡住&#xff08;无法…

10.27~10.29数电第三次实验分析与问题

实验要求 分析 寄存器 D触发器有两个输出口&#xff0c;一个输入口&#xff0c;一个时钟信号&#xff0c;一个复位信号 同步异步就是说复位信号在不在always里 给它加一个load就成了一位寄存器&#xff0c; 寄存器堆 8个8位的寄存器堆&#xff0c;每个寄存器都有两读一写…

Zynq-Linux移植学习笔记之64- 国产ZYNQ在linux下配置国产5396芯片

1、背景介绍 复旦微ZYNQ通过SPI配置国产JEM5396&#xff0c;框图如下&#xff1a; 现在需要在linux下的应用程序内配置JEM5396的寄存器。其中FMQL和进口的XILINX ZYNQ类似&#xff0c;JEM5396和进口的BCM5396兼容。因此可以参考进口ZYNQ在linux下配置BCM5396过程。Zynq-Linux移…

【Java 进阶篇】Java HTTP响应消息详解

在Web开发中&#xff0c;HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一种用于传输数据的协议&#xff0c;它用于浏览器和Web服务器之间的通信。当你在浏览器中访问一个网页时&#xff0c;浏览器向Web服务器发送HTTP请求&#xff0c;然后Web服务器返回HTTP响应。…

YOLOv8如何添加注意力模块?

分为两种&#xff1a;有参注意力和无参注意力。 eg: 有参&#xff1a; import torch from torch import nnclass EMA(nn.Module):def __init__(self, channels, factor8):super(EMA, self).__init__()self.groups factorassert channels // self.groups > 0self.softmax …

CondaError_ Downloaded bytes did not match Content-Length

问题 使用anaconda下载包文件时&#xff0c;出现了CondaError: Downloaded bytes did not match Content-Length的错误 CondaError: Downloaded bytes did not match Content-Lengthurl: https://conda.anaconda.org/pytorch/win-64/pytorch-2.1.0-py3.11_cuda11.8_cudnn8_0.…

二维码智慧门牌管理系统升级,打造高效事件处理流程

文章目录 前言一、二维码智慧门牌管理系统的升级目标二、事件处理流程优化三、升级带来的好处 前言 随着城市化的不断推进&#xff0c;城市管理面临越来越多的挑战。为了更好地解决这些问题&#xff0c;许多城市已经开始采用二维码智慧门牌管理系统。这个系统不仅可以提高城市…

操作系统第一章-第三章大题_期末考试_详细易考

1.ABC三道作业如下表所示: 作业输入CPU输出A1505050B10060100C806050 (1) 计算在单道环境下运行时CPU的利用率;(2分) (2) 假设计算机系统中具有一个CPU、三个通道,画出ABC三道作业并发执行的情况图&#xff0c;并计算CPU利用率。(12分) 问题分析: c p u 利用率 c p u 有效…

Python对象(Object)与类型(Type)的关系

Object与Type 1、Object与Type概述2、Object与Type的关系 1、Object与Type概述 对象&#xff08;Object&#xff09;和类型&#xff08;Type&#xff09;是Python中两个最最基本的概念&#xff0c;它们是构筑Python语言大厦的基石 所有的数据类型&#xff0c;值&#xff0c;变…

[BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn

再补完这个就基本上完了. crypto RSA Variation II Schmidt-Samoa密码系统看上去很像RSA,其中Npqq, 给的eN给了d from secret import flag from Crypto.Util.number import *p getPrime(1024) q getPrime(1024)N p*p*qd inverse(N, (p-1)*(q-1)//GCD(p-1, q-1))m bytes…

cause: java.lang.numberformatexception: for input string

一个十分粗心的错误 我本来想要写的是name不为空&#xff0c;并且不为空字符串&#xff0c;结果不小心写成了空格&#xff01; 解决方案&#xff1a;将空格改为空字符串即可

JMeter的使用——傻瓜式学习【中】

目录 前言 1、JMeter参数化 1.1、什么是参数化 1.2、用户定义的变量 1.2.1、什么时候使用用户定义的变量 1.2.2、使用“用户定义的变量”进行参数化的步骤&#xff1a; 1.2.3、案例 1.3、用户参数 1.3.1、什么时候使用用户参数&#xff1f; 1.3.2、使用“用户参数”进…

交叉编译工具链(以STM32MP1为例)

1.什么是交叉编译工具链&#xff1f; 在一个系统上进行编译&#xff0c;在另一个系统上进行执行 2.STM32MP1交叉编译工具链 3.交叉编译器内容 4.两种工具链模式 5.两种链接模式 6.工具使用 注意&#xff1a;OpenSTLinux已经提供了编译框架&#xff0c;不需要命令行手工编译 …

Spring Cloud 实战 | 解密Feign底层原理,包含实战源码

专栏集锦&#xff0c;大佬们可以收藏以备不时之需 Spring Cloud实战专栏&#xff1a;https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏&#xff1a;https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏&#xff1a;https:/…

在VM虚拟机上安装centos并了解Linux常用命令

一. centos安装 新建一个虚拟机&#xff0c;使用ISO映像文件&#xff08;在浏览器上直接搜索阿里云镜像站&#xff0c;下载合适的镜像文件&#xff09; 安装后设置密码然后重启 重启后输入账号和密码 查看IP 输入命令&#xff1a; vi ifcfg-ens33&#xff0c;进入编辑界面&a…

物联网AI MicroPython传感器学习 之 PAJ7620手势识别传感器

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 手势识别传感器PAJ7620u2是一款集成3D手势识别和运动跟踪为一体的交互式传感器&#xff0c;传感器可以在有效范围内识别手指的顺时针/逆时针转动方向和手指的运动方向等。它可以识别13种手势&a…

STM32的RTC模块的难点推导

在 S T M 32 STM32 STM32的 R e a l t i m e c l o c k , R T C Real\quad time\quad clock,RTC Realtimeclock,RTC模块中有一些功能点不太好理解&#xff0c;下面我根据我自己对这些功能难点的理解来做一些推导并记录如下。 首先来看一下平滑数字校准。假设我们目前的 R …

万字解析设计模式之原型模式与建造者模式

一、原型模式 1.1概述 原型模式是一种创建型设计模式&#xff0c;其目的是使用已有对象作为原型来创建新的对象。原型模式的核心是克隆&#xff0c;即通过复制已有对象来创建新对象&#xff0c;而不是通过创建新对象的过程中独立地分配和初始化所有需要的资源。这种方式可以节…

CMT2310A一款低功耗高性能Sub-1GHz射频收发器芯片

CMT2310A是一款超低功耗,高性能&#xff0c;适用于各种113至960 MHz无线应用的00K&#xff0c;(G)FSK 和4(G)FSK 射频收发器。它是CMOSTEK NextGenRFTM 射频产品线的一部分&#xff0c;这条产品线包含完整的发射器&#xff0c;接收器和收发器。CMT2310A的高集成度&#xff0c;简…