1. tomcat

tomcat

  • 一、tomcat
    • 1、作用
    • 2、安装tomcat
      • 2.1 官方地址
      • 2.2 安装jdk
      • 2.3 安装tomcat
      • 2.4 tomcat相关文件
      • 2.5 启动
      • 2.6 测试部署java项目
      • 2.7 设置开机自启动
  • 二、部署java项目流程
    • 1、拉取代码
    • 2、安装maven编译工具
    • 3、修改maven仓库地址
    • 4、部署项目运行环境
    • 5、编译项目
    • 6、部署项目
    • 7、通过nginx实现反向代理
  • 三、tomcat配置文件 server.xml
  • 四、tomcat多实例部署
    • 1、规划实例目录
    • 2、创建实例目录
    • 3、编辑实例配置
    • 4、准备实例的启动脚本
    • 5、启动多实例
    • 6、nginx实现多实例的负载均衡

一、tomcat

1、作用

Apache开源的、java中间件

2、安装tomcat

2.1 官方地址

https://tomcat.apache.org/

2.2 安装jdk

[root@ca ~]# tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@ca ~]# ls /usr/local/
bin  etc  games  include  jdk1.8.0_91  lib  lib64  libexec  sbin  share  src
[root@ca ~]# 
[root@ca ~]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME/bin
[root@ca ~]# source /etc/profile
[root@ca ~]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

2.3 安装tomcat

[root@ca ~]# tar xf apache-tomcat-9.0.80.tar.gz -C /usr/local/
[root@ca ~]# ls /usr/local/
apache-tomcat-9.0.80  bin  etc  games  include  jdk1.8.0_91  lib  lib64  libexec  sbin  share  src
[root@ca ~]# 
[root@ca ~]# mv /usr/local/apache-tomcat-9.0.80/ /usr/local/tomcat90
[root@ca ~]# vim /etc/profile
export CATALINA_HOME=/usr/local/tomcat90
export JAVA_OPTS="-Xms128m -Xmx512m"JAVA_OPTS:指定最大、最小内存[root@ca ~]# source /etc/profile

2.4 tomcat相关文件

安装目录/bin: 可执行命令
安装目录/conf:server.xml主配置文件
安装目录/logs:日志
安装目录/webapps:项目目录

2.5 启动

[root@ca ~]# /usr/local/tomcat90/bin/catalina.sh start 
Using CATALINA_BASE:   /usr/local/tomcat90
Using CATALINA_HOME:   /usr/local/tomcat90
Using CATALINA_TMPDIR: /usr/local/tomcat90/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_91
Using CLASSPATH:       /usr/local/tomcat90/bin/bootstrap.jar:/usr/local/tomcat90/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.[root@ca ~]# netstat -tunlp | grep java 
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      2321/java           
tcp6       0      0 :::8080                 :::*                    LISTEN      2321/java      8005: 默认的实例端口
8080:默认的http服务端口   
[root@ca ~]# firewall-cmd --permanent --add-port=8080/tcp
success
[root@ca ~]# firewall-cmd --permanent --add-port=8005/tcp
success
[root@ca ~]# firewall-cmd --reload 
success

2.6 测试部署java项目

[root@ca ~]# cp project.war /usr/local/tomcat90/webapps/
[root@ca ~]# ls /usr/local/tomcat90/webapps/
project  project.war

2.7 设置开机自启动

[root@ca ~]# vim /etc/rc.d/rc.local 
export JAVA_HOME=/usr/local/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME/bin
/usr/local/tomcat90/bin/catalina.sh start

二、部署java项目流程

1、拉取代码

[root@ca ~]# yum install -y git
[root@ca ~]# git config --global user.name "Martin"
[root@ca ~]# git config --global user.email "Martin@qq.com"
[root@ca ~]# git clone https://gitee.com/martinwjc/cloudbook.git
Cloning into 'cloudbook'...
remote: Enumerating objects: 156, done.
remote: Counting objects: 100% (156/156), done.
remote: Compressing objects: 100% (116/116), done.

2、安装maven编译工具

[root@ca ~]# tar xf apache-maven-3.6.3-bin.tar.gz -C /usr/local/
[root@ca ~]# mv /usr/local/apache-maven-3.6.3/ /usr/local/maven36
[root@ca ~]# ls /usr/local/maven36
bin  boot  conf  lib  LICENSE  NOTICE  README.txt[root@ca ~]# vim /etc/profile
export MAVEN_HOME=/usr/local/maven36
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin[root@ca ~]# source /etc/profile
[root@ca ~]# mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven36
Java version: 1.8.0_91, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_91/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
[root@ca ~]# 

3、修改maven仓库地址

[root@ca conf]# vim /usr/local/maven36/conf/settings.xml 55   <localRepository>/data</localRepository>146   <mirrors>
147 <mirror>
148      <id>aliyunmaven</id>
149      <mirrorOf>*</mirrorOf>
150      <name>阿里云公共仓库</name>
151     <url>https://maven.aliyun.com/repository/public</url>
152  </mirror>
153  
154  <mirror>
155     <id>nexus-aliyun</id>
156     <mirrorOf>central</mirrorOf>
157      <name>Nexus aliyun</name>
158     <url>http://maven.aliyun.com/nexus/content/groups/public</url>
159  </mirror>
160   </mirrors>

4、部署项目运行环境

安装jdk、tomcat、MySQL

[root@ca ~]# yum install -y mariadb-server
[root@ca ~]# systemctl enable --now mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@ca ~]# 
[root@ca ~]# mysql -uroot 
MariaDB [(none)]> update mysql.user set password=PASSWORD("root") where user="root" and host="localhost";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> exit

导入项目需要的数据库

[root@ca cloudbook]# ls
cloudbook  cloudlibrary.sql
[root@ca cloudbook]# 
[root@ca cloudbook]# mysql -uroot -proot < cloudlibrary.sql 

5、编译项目

[root@localhost cloudbook]# ls
cloudbook.iml  pom.xml  src  target[root@localhost cloudbook]# mvn package 
...........
[INFO] Webapp assembled in [373 msecs]
[INFO] Building war: /root/book/cloudbook/target/cloudbook-1.0-SNAPSHOT.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:38 min
[INFO] Finished at: 2023-09-08T14:15:46+08:00
[INFO] ------------------------------------------------------------------------
[root@ca cloudbook]# pwd
/root/cloudbook/cloudbook
[root@ca cloudbook]# 
[root@ca cloudbook]# ls target/
classes  cloudbook-1.0-SNAPSHOT  cloudbook-1.0-SNAPSHOT.war  generated-sources  maven-archiver  maven-status
[root@ca cloudbook]# 

6、部署项目

[root@ca cloudbook]# cp target/cloudbook-1.0-SNAPSHOT.war  /usr/local/tomcat90/webapps/cloudbook.war
[root@ca cloudbook]# /usr/local/tomcat90/bin/catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat90
Using CATALINA_HOME:   /usr/local/tomcat90
Using CATALINA_TMPDIR: /usr/local/tomcat90/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_91
Using CLASSPATH:       /usr/local/tomcat90/bin/bootstrap.jar:/usr/local/tomcat90/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
[root@ca cloudbook]# /usr/local/tomcat90/bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat90
Using CATALINA_HOME:   /usr/local/tomcat90
Using CATALINA_TMPDIR: /usr/local/tomcat90/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_91
Using CLASSPATH:       /usr/local/tomcat90/bin/bootstrap.jar:/usr/local/tomcat90/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@ca cloudbook]# 
[root@ca cloudbook]# ls /usr/local/tomcat90/webapps/
cloudbook  cloudbook.war  project  project.war

7、通过nginx实现反向代理

        location /kr {proxy_pass http://192.168.140.11:8080/project;proxy_set_header X-REAL-IP $remote_addr;}location /sj {proxy_pass http://192.168.140.11:8080/cloudbook;proxy_set_header X-REAL-IP $remote_addr;}

修改tomcat配置文件,指定日志格式

[root@ca ~]# vim /usr/local/tomcat90/conf/server.xml <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%{X-REAL-IP}i %t &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i" />
192.168.140.1 [31/May/2024:11:07:42 +0800] "GET /cloudbook HTTP/1.0" 302 - - Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Mobile Safari/537.36

三、tomcat配置文件 server.xml

1、tomcat实例端口

<Server port="8005" shutdown="SHUTDOWN">

2、提供http服务的端口

    <Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxParameterCount="1000"/>

3、提供AJP协议的端口

    <Connector protocol="AJP/1.3"address="::1"port="8009"redirectPort="8443"maxParameterCount="1000"/>

4、定义项目目录

      <Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true">appBase="目录"

5、定义访问日志位置、格式

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%{X-REAL-IP}i %t &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i" />catalina.out: 错误日志 

6、定义tomcat线程池

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="300" minSpareThreads="8"/>
maxThreads=:		 最大线程数
minSpareThreads=: 最少的空闲线程数量 

四、tomcat多实例部署

1、规划实例目录

实例端口: 8006	http服务: 9000	项目目录: /opt/tomcat01/webapps
实例端口: 8007	http服务: 9001	项目目录: /opt/tomcat02/webapps 

2、创建实例目录

[root@ca ~]# mkdir -p /opt/tomcat0{1,2}/{conf,webapps,logs}
[root@ca ~]# tree /opt/tomcat0{1,2}
/opt/tomcat01
├── conf
├── logs
└── webapps
/opt/tomcat02
├── conf
├── logs
└── webapps6 directories, 0 files[root@ca ~]# cp -ra /usr/local/tomcat90/conf/* /opt/tomcat01/conf/
[root@ca ~]# cp -ra /usr/local/tomcat90/conf/* /opt/tomcat02/conf/

3、编辑实例配置

[root@ca ~]# cat /opt/tomcat01/conf/server.xml<Server port="8006" shutdown="SHUTDOWN"><Connector port="9000" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxParameterCount="1000"/><Host name="localhost"  appBase="/opt/tomcat01/webapps"unpackWARs="true" autoDeploy="true"><!-- SingleSignOn valve, share authentication between web applicationsDocumentation at: /docs/config/valve.html --><!--<Valve className="org.apache.catalina.authenticator.SingleSignOn" />--><!-- Access log processes all example.Documentation at: /docs/config/valve.htmlNote: The pattern used is equivalent to using pattern="common" --><Valve className="org.apache.catalina.valves.AccessLogValve" directory="/opt/tomcat01/logs"prefix="localhost_access_log" suffix=".txt"pattern="%{X-REAL-IP}i %t &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i" /></Host>

4、准备实例的启动脚本

[root@ca ~]# cat /opt/tomcat01/daemon.sh
#!/bin/bash
#tomcat_start_cmd=/usr/local/tomcat90/bin/startup.sh
tomcat_stop_cmd=/usr/local/tomcat90/bin/shutdown.shexport CATALINA_HOME=/usr/local/tomcat90
export CATALINA_BASE=/opt/tomcat01case $1 instart)$tomcat_start_cmd;;stop)$tomcat_stop_cmd;;restart)$tomcat_stop_cmdsleep 2$tomcat_start_cmd;;
esac
[root@ca ~]# chmod a+x /opt/tomcat01/daemon.sh

5、启动多实例

[root@ca ~]# /opt/tomcat01/daemon.sh start
Using CATALINA_BASE:   /opt/tomcat01
Using CATALINA_HOME:   /usr/local/tomcat90
Using CATALINA_TMPDIR: /opt/tomcat01/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_91
Using CLASSPATH:       /usr/local/tomcat90/bin/bootstrap.jar:/usr/local/tomcat90/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.[root@ca ~]# /opt/tomcat02/daemon.sh start
Using CATALINA_BASE:   /opt/tomcat02
Using CATALINA_HOME:   /usr/local/tomcat90
Using CATALINA_TMPDIR: /opt/tomcat02/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_91
Using CLASSPATH:       /usr/local/tomcat90/bin/bootstrap.jar:/usr/local/tomcat90/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.[root@ca ~]# netstat -tunlp | grep java
tcp6       0      0 127.0.0.1:8006          :::*                    LISTEN      4189/java           
tcp6       0      0 127.0.0.1:8007          :::*                    LISTEN      4233/java           
tcp6       0      0 :::9000                 :::*                    LISTEN      4189/java           
tcp6       0      0 :::9001                 :::*                    LISTEN      4233/java           
tcp6       0      0 :::8080                 :::*                    LISTEN      4087/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      4087/java   

6、nginx实现多实例的负载均衡

upstream shouji {server 192.168.140.11:9000;server 192.168.140.11:9001;
}location /sj {proxy_pass http://shouji/phone_war;proxy_set_header X-REAL-IP $remote_addr;
}

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

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

相关文章

文章《Causal Inference for Knowledge Graph based Recommendation》阅读

文章《Causal Inference for Knowledge Graph based Recommendation》阅读 论文概况及动机&#xff08;Introduction&#xff09;问题形式化方法论Causal Intervention (C1)Model ImplementationU()f()协同过滤部分模型优化 Causal Inference &#xff08;C2&#xff09; Exper…

Kafka生产者消息异步发送并返回发送信息api编写教程

1.引入依赖&#xff08;pox.xml文件&#xff09; <dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>3.6.2</version> </dependency> </depende…

SQL入门详细教程

一、什么是SQL&#xff1f; SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于访问和操作数据库的标准语言。它用于查询、插入、更新和删除数据库中的数据&#xff0c;并且能够创建和修改数据库结构&#xff08;例如表、视图、索引等…

Python登录漏洞复现

Python登录漏洞复现 3.1 环境准备 1&#xff09;升级pip pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple2&#xff09;安装ddddocr图形识别库 pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple3&#xff09;安装requests网络请求…

伦敦金1手指的是什么?

就算没有进行过伦敦金投资&#xff0c;甚至是没有做过任何金融产品投资的朋友&#xff0c;相信也听过别人做交易决定&#xff0c;他们都是1手两手那样头买入。有些朋友就好奇了&#xff0c;这伦敦金1手指的是什么意思&#xff1f;下面我们就来讨论一下。 首先&#xff0c;如果我…

CDH6.3.2集成Flink1.12.2

一、Linux下载httpd服务并开启 yum install y httpd systemctl start httpd systemctl enable httpd 二、获取已制作好的安装包 flink-1.12.2-bin-scala_2.11.tar ​ FLINK_ON_YARN-1.12.2.jar ​ flink-shaded-hadoop-2-uber-3.0.0-cdh6.3.2-10.0.jar 三、集成CM 1.上传编…

ERV-Net:一种用于脑肿瘤分割的高效3D残差神经网络| 文献速递-深度学习肿瘤自动分割

Title 题目 ERV-Net: An efficient 3D residual neural network for brain tumor segmentation ERV-Net&#xff1a;一种用于脑肿瘤分割的高效3D残差神经网络 01 文献速递介绍 脑肿瘤在全球范围内是致命的&#xff0c;与其他类型的肿瘤相比。胶质瘤是最具侵略性的脑肿瘤类…

java opcua实现数据点位事件订阅

前言 之前写了一篇文章《Java实现OPC UA断连重连和数据监听》 里面有代码实现对点位订阅的实现,但是有些x需求下这么写感觉不太好,今天又更新一种订阅的实现方式,根据不同的场景需求选择更合适的方案。 教程 依赖 首先在maven项目种引入opc依赖 <dependency><g…

数据挖掘与机器学习——聚类算法

目录 无监督学习 聚类算法 概念&#xff1a; 功能&#xff1a; 应用场景&#xff1a; 评判标准&#xff1a; 划分聚类&#xff1a; K-means聚类 逻辑实现&#xff1a; 聚类方式 问题&#xff1a; 解决&#xff1a; 可能存在的问题&#xff1a; 1.初始值对K-means聚…

Ubuntu 22.04, 如何让VSCode中的cmakelist高亮显示

安装cmake插件即可。 CMakeLists.txt is not syntax highlighted Issue #534 microsoft/vscode-cmake-tools GitHub

CANOE制造dll文件,以及应用dll文件

1、使用canoe自带的capl dll 2、然后使用Visual Studio 2022 打开项目 3、项目打开后修改下项目属性 4、修改capldll.cpp文件 4.1 添加的内容 void CAPLEXPORT far CAPLPASCAL appSum(long i, long j, long* s){*s i j;} {"sum", (CAPL_FARCALL)appSum, "…

python前端streamlit模型部署

简单介绍使用前端streamlit框架快速部署本地模型&#xff1a; 1、模型训练&#xff1a; import pandas as pd # 流程整合 from sklearn.pipeline import make_pipeline, Pipeline # 数据处理 from sklearn.impute import SimpleImputer from sklearn.preprocessing import Min…

01 - Maven入门安装

目录 1、软件下载地址 2、安装的版本 3、安装的条件 4、软件的结构 5、Maven环境配置 5.1、配置MAVEN_HOME 5.2、配置Path 5.3、命令测试&#xff08;cmd窗口&#xff09; 6、Maven的功能配置 6.1、配置本地仓库地址 6.2、配置国内阿里镜像 6.3、配置jdk8版本项目构…

鸿蒙ArkTS声明式开发:跨平台支持列表【背景设置】 通用属性

背景设置 设置组件的背景样式。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版…

设计模式22——备忘录模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 备忘录模式&#xff08;Mement…

EG2106 原装正品 贴片SOP-8 大功率MOS管栅极驱动芯片耐压600V

EG2106 在电机控制中的应用非常广泛&#xff0c;下面是一些典型的应用案例&#xff1a; 1. 无刷直流电机&#xff08;BLDC&#xff09;控制&#xff1a;EG2106 可以用于驱动无刷直流电机的功率MOSFET或IGBT。在无刷电机控制器中&#xff0c;通常会用到H桥电路来控制电机的正…

基于Java的KTV点歌系统

开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术&#xff0c;JAVA&#xff0c;B/S架构 工具&#xff1a;浏览器&#xff08;360浏览器、谷歌浏览器、QQ浏览器等&#xff09;&#xff0c;数据库管理工具&#xff08;MySQL&#xff09; 系统展示 …

HTML动态响应2-Servlet+Ajax实现HTTP前后台交互方式

作者:私语茶馆 前言 其他涉及到的参考章节: HTML动态响应1—Ajax动态处理服务端响应-CSDN博客 Web应用JSON解析—FastJson1.2.83/Tomcat/IDEA解析案例-CSDN博客 HTML拆分与共享方式——多HTML组合技术-CSDN博客 1.场景: WEb项目经常需要前后端交互数据,并动态修改HTML页…

Linux:subshell(子shell)和childprocess(子进程)

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 一、预备知识 在进行这个话题之前&#xff0c;首先要了解Linux系统中一个进程是如何创建的&#xff0c;当一个命令被执行时&#xff0c;首先会在当前进程创建一个子进程…

Vue3使用mitt进行组件通信

mitt&#xff1a;事件总线&#xff0c;是第三方插件。 Vue2.x 使用 EventBus 事件总线进行兄弟组件通信&#xff0c;而在Vue3中 EventBus 事件总线模式已经被移除&#xff0c;官方建议使用外部的、实现了事件触发器接口的库&#xff0c;例如 mitt 或 tiny-emitter。 比起 Vue…