828华为云征文 | Flexus X实例与华为云EulerOS的Tomcat安装指南

news2024/12/24 20:17:27

文章目录

    • 前言
    • 安全组设置
    • 操作步骤
      • 软件安装
      • 配置软件
      • 验证Tomcat安装是否成功
    • 总结

前言

Tomcat是一个由Apache软件基金会开发并维护的免费、开源的Web应用服务器。它主要用于处理Java Servlet、JavaServer Pages(JSP)和JavaServer Pages Standard Tag Library(JSTL)等Java EE技术,同时也可以作为静态内容的Web服务器。由于其轻量级、跨平台、易于部署和配置的特点,Tomcat成为了许多开发者和企业部署Web应用程序的首选。

在本教程中,我们将指导您如何在Flexus X实例上安装和部署Tomcat。

查看镜像信息
本地连接服务器之后输入指令 lsb_release -a 查看镜像信息

从镜像信息中我们可以看到我们使用的镜像是Huawei Cloud EulerOS

安全组设置

首先我们需要在服务器的安全组入口方向开放8080端口如下图所示

操作步骤

软件安装

1.1 执行以下命令安装Java

dnf install java-1.8.0-openjdk

1.2 执行如下命令验证是否安装成功

java -version

1.3 执行如下命令安装Tomcat

dnf install tomcat

注意此时Tomcat会被安装到<font style="color:rgb(25, 25, 25);">/usr/share/tomcat</font>目录

配置软件

2.1 编辑“/etc/profile”配置环境变量

在服务器中使用vim 进行环境变量配置 <font style="color:rgb(25, 25, 25);">vim /etc/profile</font> , 在<font style="color:rgb(25, 25, 25);">profile</font>中添加

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-0.hce2.x86_64/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH

2.2 激活环境变量

当配置好环境变量后通过命令 source /etc/profile来激活环境变量

2.3 清空“/usr/share/tomcat/conf/server.xml”文件中的内容,并重新进行配置,示例代码如下

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8006" shutdown="SHUTDOWN">
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
    <Listener className="org.apache.catalina.core.AprLifecycleListener"/>
    <GlobalNamingResources>
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  description="User database that can be updated and saved"
                  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                  pathname="conf/tomcat-users.xml"/>
    </GlobalNamingResources>
    <Service name="Catalina">
        <Connector port="8080"
                  protocol="HTTP/1.1"
                  connectionTimeout="20000"
                  redirectPort="8443"
                  maxThreads="1000"
                  minSpareThreads="20"
                  acceptCount="1000"
                  maxHttpHeaderSize="65536"
                  debug="0"
                  disableUploadTimeout="true"
                  useBodyEncodingForURI="true"
                  enableLookups="false"
                  URIEncoding="UTF-8"/>
        <Engine name="Catalina" defaultHost="localhost">
            <Realm className="org.apache.catalina.realm.LockOutRealm">
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                        resourceName="UserDatabase"/>
            </Realm>
            <Host name="localhost" appBase="/data/wwwroot/default" unpackWARs="true" autoDeploy="true">
                <Context path="" docBase="/data/wwwroot/default" debug="0" reloadable="false" crossContext="true"/>
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                        prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t %s %b"/>
            </Host>
        </Engine>
    </Service>
</Server>

代码讲解:

<?xml version="1.0" encoding="UTF-8"?>

这行声明了XML文件的版本和编码方式。

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

这行定义了Tomcat服务器的端口号为8006,并且定义了一个关闭命令,当服务器接收到这个命令时会关闭。

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>

这行定义了一个监听器,用于防止JRE内存泄露。

<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

这行定义了一个监听器,用于管理全局资源的生命周期。

<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

这行定义了一个监听器,用于防止线程局部变量泄露。

<Listener className="org.apache.catalina.core.AprLifecycleListener"/>

这行定义了一个监听器,用于处理Apache的运行时库(APR)的生命周期。

<GlobalNamingResources>

这行开始定义全局命名资源,全局命名资源是Tomcat中的命名服务,用于存储用户、角色、权限等数据。

<Resource name="UserDatabase" auth="Container"  type="org.apache.catalina.UserDatabase"  description="User database that can be updated and saved"  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"  pathname="conf/tomcat-users.xml"/>

这行定义了一个名为<font style="color:rgb(25, 25, 25);">UserDatabase</font>的资源,它是一个用户数据库,可以被更新和保存。<font style="color:rgb(25, 25, 25);">factory</font>属性指定了这个资源是由<font style="color:rgb(25, 25, 25);">MemoryUserDatabaseFactory</font>创建的,并且路径是<font style="color:rgb(25, 25, 25);">conf/tomcat-users.xml</font>

</GlobalNamingResources>

这行结束全局命名资源的定义。

<Service name="Catalina">

这行定义了一个服务,服务是一组引擎的集合,它们可以共享资源和处理请求。

<Connector port="8080"  protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443"  maxThreads="1000"  minSpareThreads="20"  acceptCount="1000"  maxHttpHeaderSize="65536"  debug="0"  disableUploadTimeout="true"  useBodyEncodingForURI="true"  enableLookups="false"  URIEncoding="UTF-8"/>

这行定义了一个连接器,它监听8080端口,使用HTTP/1.1协议,并且定义了连接超时时间、重定向端口、最大线程数、最小空闲线程数、接受队列大小、最大HTTP头大小等参数。

<Engine name="Catalina" defaultHost="localhost">

这行定义了一个引擎,引擎是一个服务中的容器,它负责处理请求并创建响应。<font style="color:rgb(25, 25, 25);">defaultHost</font>属性指定了默认的主机名。

<Realm className="org.apache.catalina.realm.LockOutRealm">

这行定义了一个身份验证领域,用于验证用户的凭据。

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"   resourceName="UserDatabase"/>

这行定义了一个身份验证领域,它使用<font style="color:rgb(25, 25, 25);">UserDatabase</font>资源来验证用户。

</Realm>

这行结束身份验证领域的定义。

<Host name="localhost" appBase="/data/wwwroot/default" unpackWARs="true" autoDeploy="true">

这行定义了一个主机,主机是引擎中的容器,它负责处理来自特定主引擎中的容器,它负责处理来自特定主机的请求。appBase属性指定了应用程序的根目录,unpackWARs属性指定了是否在部署时解压WAR文件,autoDeploy属性指定了是否自动部署新应用程序。

<Context path="" docBase="/data/wwwroot/default" debug="0" reloadable="false" crossContext="true"/>

这行定义了一个上下文,上下文是主机中的容器,它负责处理来自特定路径的请求。<font style="color:rgb(25, 25, 25);">docBase</font>属性指定了应用程序的目录,<font style="color:rgb(25, 25, 25);">debug</font>属性指定了调试级别,<font style="color:rgb(25, 25, 25);">reloadable</font>属性指定了是否可以重新加载应用程序,<font style="color:rgb(25, 25, 25);">crossContext</font>属性指定了是否可以在上下文之间共享数据。

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t %s %b"/>

这行定义了一个阀门,用于记录访问日志。<font style="color:rgb(25, 25, 25);">directory</font>属性指定了日志文件的目录,<font style="color:rgb(25, 25, 25);">prefix</font><font style="color:rgb(25, 25, 25);">suffix</font>属性指定了日志文件的前缀和后缀,<font style="color:rgb(25, 25, 25);">pattern</font>属性指定了日志记录的格式。

2.4 执行以下命令创建上述配置中appbase和docbase填入的目录

mkdir -p /data/wwwroot/default

2.5 执行以下命令将上述目录所属用户设置为tomcat

chown -R tomcat.tomcat /data/wwwroot/ 

2.6 新建“/usr/share/tomcat/bin/setenv.sh”文件, 输入以下内容配置JVM内存参数。

JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom -server -Xms256m -Xmx496m -Dfile.encoding=UTF-8'

2.7 启动Tomcat服务

输入指令 <font style="color:rgb(25, 25, 25);">systemctl start tomcat</font> 启动Tomcat

2.8 查看Tomcat服务状态

输入指令 <font style="color:rgb(25, 25, 25);">systemctl status tomcat</font>查看Tomcat服务状态, 如果显示active (running)则表示服务启动成功。

验证Tomcat安装是否成功

输入指令 echo Tomcat test > /data/wwwroot/default/index.jsp<font style="color:rgb(26, 32, 41);">Tomcat test</font>写入到<font style="color:rgb(26, 32, 41);">/data/wwwroot/default/index.jsp</font>文件中, 同时在浏览器中输入<font style="color:rgb(25, 25, 25);">http://<Tomcat服务公网IP>:8080</font>进行访问, 效果如下图所示

总结

在本篇博客中,我们详细介绍了如何在华为云的EulerOS镜像上安装Tomcat,这一过程不仅加深了我们对Flexus X实例的理解,也让我们对华为云提供的EulerOS镜像有了更全面的认知。此外,正值华为云828 B2B企业节期间,Flexus X实例的促销活动十分诱人,不容错过。对于那些追求高性能算力和需要自行搭建MySQL、Redis、Nginx等服务的用户来说,这个优惠机会非常宝贵。

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

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

相关文章

新增一个数组传递给后端

实现的效果&#xff1a; 页面 <div style"margin-bottom: 10px" v-if"totalPrice"><p style"font-weight: bolder;margin-bottom: 10px">支付计划<el-button type"text" size"small" click"addPayInf…

53 mysql pid 文件的创建

前言 接上一篇文章 mysql 启动过程中常见的相关报错信息 在 mysql 中文我们在 “service mysql start”, “service mysql stop” 经常会碰到 mysql.pid 相关的错误信息 比如 “The server quit without updating PID file” 我们这里来看一下 mysql 中 mysql.pid 文件的…

软件工程知识点总结(2):需求分析(一)——用例建模

1 软件项目开发流程&#xff1a; 需求分析→概要设计→详细设计→编码实施→测试→产品提 交→维护 2 系统必须做什么&#xff1f; 获取用户需求&#xff0c;从用户角度考虑&#xff0c;用户需要系统必须完成哪些工作&#xff0c;也就是对目 标系统提出完整、准确、清晰、具体…

算法day22|组合总和 (含剪枝)、40.组合总和II、131.分割回文串

算法day22|组合总和 &#xff08;含剪枝&#xff09;、40.组合总和II、131.分割回文串 39. 组合总和 &#xff08;含剪枝&#xff09;40.组合总和II131.分割回文串 39. 组合总和 &#xff08;含剪枝&#xff09; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 ta…

使用Node-API实现跨语言交互开发流程

一、前言 使用Node-API实现跨语言交互&#xff0c;首先需要按照Node-API的机制实现模块的注册和加载等相关动作。 ArkTS/JS侧&#xff1a;实现C方法的调用。代码比较简单&#xff0c;import一个对应的so库后&#xff0c;即可调用C方法。 Native侧&#xff1a;.cpp文件&#xf…

【C语言】十六进制、二进制、字节、位、指针、数组

【C语言】十六进制、二进制、字节、位 文章目录 [TOC](文章目录) 前言一、十六进制、二进制、字节、位二、变量、指针、指针变量三、数组与指针四、指针自加运算五、二维数组与指针六、指向指针的指针七、指针变量作为函数形参八、函数指针九、函数指针数组十、参考文献总结 前…

JVM面试(六)垃圾收集器

目录 概述STW收集器的并发和并行 Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器Garbage First&#xff08;G1&#xff09;收集器 概述 上一章我们分析了垃圾收集算法&#xff0c;那这一章我们来认识一下这些垃圾收集器是如何运…

某云彩SRM2.0任意文件下载漏洞

文章目录 免责申明搜索语法漏洞描述漏洞复现修复建议 免责申明 本文章仅供学习与交流&#xff0c;请勿用于非法用途&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 搜索语法 fofa icon_hash"1665918155"漏洞描述 某云采 SRM2.0是一款先…

制作自己的游戏:打砖块

文章目录 &#x1f680; 前言&#x1f680; 前期准备&#x1f680; 玩法设计&#x1f680; 游戏场景&#x1f353; 什么是游戏场景&#x1f353; 绘制左上角积分&#x1f353; 绘制右上角生命值&#x1f353; 绘制砖块&#x1f353; 绘制小球&#x1f353; 绘制挡板&#x1f35…

场景是人工智能第四要素,是垂直领域人工智能的第一要素。

"场景是人工智能的第四要素&#xff0c;与数据、算力、算法同等重要。"拿着技术找场景&#xff0c;还是拿着场景找技术&#xff1f;这个锤子和钉子的问题&#xff0c;一直困扰着各家AI大厂。从近5年的实践来看&#xff0c;拿着场景找技术是更为稳健的&#xff0c;否则…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《面向电网调峰的聚合温控负荷多目标优化控制方法 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

R901085689比例流量控制阀配置HE-SP1比例放大器

R901085689比例流量控制阀配置HE-SP1比例放大器的功能是将电信号转换成对应的流量变化&#xff0c;通过调整阀门开度来控制介质的流量。这种转换是通过比例电磁铁实现的&#xff0c;它将输入的电流信号转换成力或位移&#xff0c;从而驱动阀芯移动&#xff0c;实现流量的连续调…

html+css+js网页设计 珠宝首饰模版13个页面

htmlcssjs网页设计 珠宝首饰模版13个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&…

手机同时传输USB功能与充电的实现及LDR6500的作用

在智能设备日益普及的今天&#xff0c;用户对于手机的功能需求愈发多样化&#xff0c;其中同时实现USB数据传输与充电功能成为了许多用户的迫切需求。这一功能的实现离不开先进的硬件技术和创新的芯片解决方案&#xff0c;而LDR6500正是这样一款能够满足这一需求的USB PD&#…

uni-app 扫码优化:谈谈我是如何提升安卓 App 扫码准确率的

一. 前言 之前的一个项目遭到用户吐槽&#xff1a;“你们这个 App 扫码的正确率太低了&#xff0c;尤其是安卓的设备。经常性的扫码扫不出来&#xff0c;就算是扫出来了&#xff0c;也是错误的结果&#xff01;” 由于之前是扫描二维码的需求&#xff0c;所以没有对扫描条形码…

yolov8-obb旋转目标检测onnxruntime和tensorrt推理

onnxruntime推理 导出onnx模型&#xff1a; from ultralytics import YOLO model YOLO("yolov8n-obb.pt") model.export(format"onnx") onnx模型结构如下&#xff1a; python推理代码&#xff1a; import cv2 import math import numpy as np impo…

全面提升管理效率的智慧园区可视化系统

通过图扑 HT 搭建智慧园区可视化&#xff0c;实时监测和展示园区内各设施的状态与能耗&#xff0c;优化资源配置&#xff0c;提升园区管理效率。

科普神文,一次性讲透AI大模型的核心概念

令牌&#xff0c;向量&#xff0c;嵌入&#xff0c;注意力&#xff0c;这些AI大模型名词是否一直让你感觉熟悉又陌生&#xff0c;如果答案肯定的话&#xff0c;那么朋友&#xff0c;今天这篇科普神文不容错过。我将结合大量示例及可视化的图形手段&#xff0c;为你由浅入深一次…

电脑怎么禁止软件联网?电脑怎么限制软件上网?方法很多,这三种最常用!

在日常使用电脑时&#xff0c;某些软件可能会自动联网&#xff0c;这不仅会消耗网络资源&#xff0c;还可能带来安全风险。此外企业老板考虑到公司员工可能会在工作期间访问无关软件&#xff0c;影响工作效率&#xff0c;因此&#xff0c;很多用户希望能够禁止某些软件联网&…

springboot学生社团管理系统—计算机毕业设计源码26281

目录 摘要 Abstract 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 学生社团管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析…