tomcat的安装,管理与配置

news2024/9/27 10:38:57

目录

Tomcat 服务部署

1.关闭防火墙,将安装 Tomcat 所需软件包上传到虚拟机

2.安装JDK

3.设置JDK环境变量

4.安装启动Tomcat

5.启动tomcat

6.优化tomcat启动速度

Tomcat 服务管理

systemd 管理控制

supervisor 管理控制

Tomcat 虚拟主机配置

1.创建 sunny101 和 sunny102 项目目录和文件

2.修改 Tomcat 主配置文件 server.xml

3.客户端浏览器访问验证

Tomcat多实例部署

2.配置 tomcat 环境变量

3.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

4.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

5.启动各 tomcat 中的 /bin/startup.sh

6.浏览器访问测试


Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目。

Tomcat 属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。一般来说,Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样,具有处理 HTML 页面的功能,然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx,所以 Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端。

Tomcat 由一系列的组件构成,其中核心的组件有三个:Web 容器,Servlet 容器和JSP 容器

Tomcat 服务部署

在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。

1.关闭防火墙,将安装 Tomcat 所需软件包上传到虚拟机

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

apache-tomcat-8.5.16.tar.gz,jdk-8u391-linux-x64.rpm

2.安装JDK

图形化界面自带(可以删除后重新安装)

rpm -ivh jdk-8u391-linux-x64.rpm
java -version

3.设置JDK环境变量

vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/jdk1.8.0-x64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile.d/java.sh

可用 which java 查找Java的安装目录

java环境测试

vim Hello.java

javac Hello.java
java Hello

4.安装启动Tomcat

tar -xf apache-tomcat-8.5.16.tar.gz

mv apache-tomcat-8.5.16 /usr/local/tomcat

5.启动tomcat

后台启动

方法一

/usr/local/tomcat/bin/startup.sh

方法二

/usr/local/tomcat/bin/catalina.sh start

前台启动

/usr/local/tomcat/bin/catalina.sh run

网页访问Tomcat的默认主页 http://192.168.110.60:8080

6.优化tomcat启动速度

第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。

vim /usr/java/jdk1.8.0-x64/jre/lib/security/java.security

重启

/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 

Tomcat 服务管理

systemd 管理控制

vim /usr/lib/systemd/system/tomcat.service

[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0-x64"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

可以通过systemctl命令管理tomcat

supervisor 管理控制

supervisor是Python开发的c/s服务,是Linux系统下的进程管理工具。可以监听、启动、停止、重启一个或多个进程。用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程的自动恢复的功能,不在需要自己写脚本来控制。

1.使用yum安装supervisor

yum install -y supervisor

2.修改配置文件

使用yum安装的supervisor会在/etc/会生成一个supervisor.conf文件及一个supervisor.d文件目录

vi /etc/supervisord.conf

也可使用sed -i 's/;chmod=0700/chmod=0766/g' /etc/supervisord.conf修改

也可使用

sed -i '$a [include] \files = /etc/supervisord.d/*.conf' /etc/supervisord.conf

3.supervisor管理服务有两种设置方式

方法一

在 /etc/supervisord.conf 文件中添加

[program:tomcat]
command=/usr/local/tomcat/bin/catalina.sh run
autostart=true
startsecs=10
autorestart=true
startretries=3
user=root
priority=999
redirect_stderr=true
stdout_logfile_maxbytes=200MB
stdout_logfile_backups=20
; stdout
stdout_logfile=/var/log/supervisor/logs/catalina.out
stopasgroup=false
killasgroup=false
environment=JAVA_HOME=/usr/java/jdk1.8.0-x64

方法二

在etc/supervisord.d/目录下创建

vim /etc/supervisord.d/nginx.conf

[program:nginx]
command=/usr/local/nginx/sbin/nginx -g 'daemon off;'
stdout_logfile=/var/log/supervisor/nginx_run.log
stderr_logfile=/var/log/supervisor/nginx_error.log
autostart=true
startsecs=10
autorestart=true
startretries=1
user=root
priority=998
stdout_logfile_maxbytes=200MB
stdout_logfile_backups=20
stopasgroup=true
killasgroup=true
redirect_stderr=true

4.创建存放日志的目录(重要,一定要建立)

mkdir -p /var/log/supervisor/logs/

5.启动supervisord

systemctl start supervisord
systemctl enable supervisord

或者

supervisord -c /etc/supervisor.conf

supervisor常用命令(注意要在服务关闭后再使用supervisord开启管理)

supervisorctl是supervisord的命令行工具

查看所有进程的状态supervisorctl status


停止进程:supervisorctl stop <name>  

   
启动进程:supervisorctl start <name>    


重启进程:supervisorctl restart <name>  
配置文件修改后可以使用该命令加载新的配置:supervisorctl update          
重新启动配置中的所有程序:supervisorctl reload          

nginx状态:supervisorctl status nginx
停止nginx:supervisorctl stop nginx
启动nginx:supervisorctl start nginx
重启nginx:supervisorctl restart nginx
重载nginx:supervisorctl reload nginx

测试supervisord的自动恢复的功能

Tomcat 虚拟主机配置

很多时候公司会有多个项目需要运行,一般不会是在一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时, 就需要使用到 Tomcat 虚拟主机。

例如现在新增两个域名 www.sunny101.com 和 www.sunny.com, 希望通过这两个域名访问到不同的项目内容。

1.创建 sunny101 和 sunny102 项目目录和文件

mkdir /usr/local/tomcat/webapps/sunny101

mkdir /usr/local/tomcat/webapps/sunny102

echo "This is sunny101 page!" > /usr/local/tomcat/webapps/sunny101/index.jsp

echo "This is sunny102 page!" > /usr/local/tomcat/webapps/sunny102/index.jsp

2.修改 Tomcat 主配置文件 server.xml

vim /usr/local/tomcat/conf/server.xml

<Host name="www.sunny101.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/sunny101" path="" reloadable="true" />
 </Host>

<Host name="www.sunny102.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/sunny102" path="" reloadable="true" />

重启

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

3.客户端浏览器访问验证

修改hosts文件

网页访问

Tomcat多实例部署

1.创建tomcat1,2

tar -xf apache-tomcat-8.5.16.tar.gz

mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1

cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2

2.配置 tomcat 环境变量

vim /etc/profile.d/tomcat.sh

#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1

#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2

source /etc/profile.d/tomcat.sh

3.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

vim /usr/local/tomcat/tomcat2/conf/server.xml

4.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

vim /usr/local/tomcat/tomcat1/bin/shutdown.sh

vim /usr/local/tomcat/tomcat2/bin/startup.sh

vim /usr/local/tomcat/tomcat2/bin/shutdown.sh

5.启动各 tomcat 中的 /bin/startup.sh

/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

netstat -natp | grep java

6.浏览器访问测试

http://www.sunny101.com:8080

http://192.168.110.60:8081/

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

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

相关文章

EE trade:黄金 999 和黄金 9999 的区别

黄金&#xff0c; 作为一种珍贵的金属&#xff0c; 一直是人们投资和收藏的对象。 在购买黄金时&#xff0c; 您可能会遇到两种纯度的黄金 —— 黄金 999 和黄金 9999。 这两种黄金有什么区别? 消费者应该如何选择呢? 一、 黄金 999 和黄金 9999 的区别 含金量&#xff1a;…

OCR 行驶证识别 离线识别

目录 正页识别 副页识别 全部识别 OCR 行驶证识别 离线识别 正页识别 副页识别 全部识别

C语言实现归并排序(Merge Sort)

目录 一、递归实现归并排序 1. 归并排序的基本步骤 2.动图演示 3.基本思路 4.代码 二、非递归实现 1.部分代码 2.代码分析 修正后代码&#xff1a; 归并过程打印 性能分析 复杂度分析 归并排序是一种高效的排序算法&#xff0c;采用分治法&#xff08;Divide and Con…

中电金信:“源启”金融级数字底座

01方案简介 金融级数字底座是中电金信依托中国电子自主安全计算产业链&#xff0c;采用新一代技术架构&#xff0c;为金融及重点行业打造的数字化新型基础设施。 “源启”面向金融等重点行业场景&#xff0c;依照系统工程方法论&#xff0c;进行全栈技术产品的验证、适配和调…

word2vector训练数据集整理(代码实现)

import math import os import random import torch import dltools from matplotlib import pyplot as plt #读取数据集 def read_ptb():"""将PTB数据集加载到文本行的列表中"""with open(./ptb/ptb.train.txt) as f:raw_text f.read()return…

【深度学习基础模型】双向循环神经网络(Bidirectional Recurrent Neural Networks, BiRNN)详细理解并附实现代码。

【深度学习基础模型】双向循环神经网络&#xff08;Bidirectional Recurrent Neural Networks, BiRNN&#xff09; 【深度学习基础模型】双向循环神经网络&#xff08;Bidirectional Recurrent Neural Networks, BiRNN&#xff09;详细理解并附实现代码。 文章目录 【深度学习…

使用 Llama 3.1 和 Qdrant 构建多语言医疗保健聊天机器人的步骤

长话短说&#xff1a; 准备好深入研究&#xff1a; 矢量存储的复杂性以及如何利用 Qdrant 进行高效数据摄取。掌握 Qdrant 中的集合管理以获得最佳性能。释放上下文感知响应的相似性搜索的潜力。精心设计复杂的 LangChain 工作流程以增强聊天机器人的功能。将革命性的 Llama …

虚幻蓝图Ai随机点移动

主要函数: AI MoveTo 想要AI移动必须要有 导航网格体边界体积 (Nav Mesh Bounds Volume) , 放到地上放大 , 然后按P键 , 可以查看范围 然后创建一个character类 这样连上 AI就会随机运动了 为了AI移动更自然 , 取消使用控制器旋转Yaw 取消角色移动组件 的 使用控制器所需的…

风扇模块(直流5V STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 三、程序设计 main.c文件 fan.h文件 fan.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 直流风扇(Fan)&#xff0c;具有高转速、大风量、低噪音、低能耗和低震动的特点&#xff0c;有DC5V和12V两种型号可供…

【HarmonyOS】Web组件同步与异步数据获取

Web组件交互同步与异步获取数据的方式示例 【html测试文件】src/main/resources/rawfile/Page04.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><script>let isEnvSupported CSS in window &&…

云上攻防 | AWS中的常见 Cognito 配置错误

引言 AWS Cognito 是由亚马逊网络服务&#xff08;AWS&#xff09;提供的全托管服务&#xff0c;旨在简化 Web 和移动应用程序的用户认证和授权过程。它提供了一整套功能来处理用户注册、登录和用户管理&#xff0c;免去了开发人员从头构建这些功能的需求。 尽管本文讨论的攻…

8.11 矢量图层线要素单一符号使用二(箭头)

8.11 矢量图层线要素单一符号使用二(箭头)_qgis箭头-CSDN博客 目录 前言 箭头&#xff08;Arrow&#xff09; QGis设置线符号为箭头(Arrow) 二次开发代码实现 总结 前言 本章介绍矢量图层线要素单一符号中箭头&#xff08;Arrow&#xff09;的使用说明&#xff1a;文章中…

等保2.0数据库测评之达梦数据库测评

一、达梦数据库介绍 达梦数据库管理系统属于新一代大型通用关系型数据库&#xff0c;全面支持 ANSI SQL 标准和主流编程语言接口/开发框架。行列融合存储技术&#xff0c;在兼顾 OLAP 和 OLTP 的同时&#xff0c;满足 HTAP 混合应用场景。 本次安装环境为Windows10专业版操作…

华夏ERP3.1权限绕过代码审计

POC: /jshERP-boot/user/getAllList;.ico 调试分析poc: 这是poc很明显就是绕过权限&#xff0c;我们分析filter里面的代码。 Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {Htt…

基于Spring Boot的校园管理系统

目录 前言 功能设计 系统实现 获取源码 博主主页&#xff1a;百成Java 往期系列&#xff1a;Spring Boot、SSM、JavaWeb、python、小程序 前言 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自…

使用API有效率地管理Dynadot域名,设置域名服务器(NS)

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…

SQL Server的文本和图像函数

新书速览|SQL Server 2022从入门到精通&#xff1a;视频教学超值版_sql server 2022 出版社-CSDN博客 《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) SQL Se…

【Python】Ajenti:轻量级、强大的服务器管理面板

在现代服务器管理中&#xff0c;管理员们经常需要通过命令行执行各种任务&#xff0c;这不仅耗时&#xff0c;而且对不熟悉 Linux 系统的用户来说并不友好。为了更高效地管理服务器、网站和应用&#xff0c;借助一个功能强大的管理面板是非常有必要的。Ajenti 就是这样一款轻量…

MySql数据库---判断函数,和窗口结合的函数,窗口函数

思维导图 判断函数 if(expr,v1,v2): 表达式结果为true返回v1,否则返回v2 ifnull(列名,dv): 列值为null返回dv,否则返回列值. nullif(expr1,expr2): 表达式1表达式2返回null,不等于返回表达式1的值. 窗口函数 作用: 可以为表新增一列,新增的列是什么取决于over()函数前面的函…

Spring Boot入门到精通:网上购物商城系统

第3章 系统分析 3.1 可行性分析 在系统开发之初要进行系统可行分析&#xff0c;这样做的目的就是使用最小成本解决最大问题&#xff0c;一旦程序开发满足用户需要&#xff0c;带来的好处也是很多的。下面我们将从技术上、操作上、经济上等方面来考虑这个系统到底值不值得开发。…