828华为云征文 | Flexus X实例与华为云EulerOS的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

shell 复制代码
dnf install java-1.8.0-openjdk

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

shell 复制代码
java -version

1.3 执行如下命令安装Tomcat

shell 复制代码
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>中添加

shell 复制代码
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"文件中的内容,并重新进行配置,示例代码如下

shell 复制代码
<?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 复制代码
<?xml version="1.0" encoding="UTF-8"?>

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

xml 复制代码
<Server port="8006" shutdown="SHUTDOWN">

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

xml 复制代码
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>

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

xml 复制代码
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

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

xml 复制代码
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

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

xml 复制代码
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>

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

xml 复制代码
<GlobalNamingResources>

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

xml 复制代码
<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>

xml 复制代码
</GlobalNamingResources>

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

xml 复制代码
<Service name="Catalina">

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

xml 复制代码
<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头大小等参数。

xml 复制代码
<Engine name="Catalina" defaultHost="localhost">

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

xml 复制代码
<Realm className="org.apache.catalina.realm.LockOutRealm">

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

xml 复制代码
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"   resourceName="UserDatabase"/>

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

xml 复制代码
</Realm>

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

xml 复制代码
<Host name="localhost" appBase="/data/wwwroot/default" unpackWARs="true" autoDeploy="true">

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

xml 复制代码
<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>属性指定了是否可以在上下文之间共享数据。

xml 复制代码
<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填入的目录

xml 复制代码
mkdir -p /data/wwwroot/default

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

xml 复制代码
chown -R tomcat.tomcat /data/wwwroot/ 

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

xml 复制代码
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等服务的用户来说,这个优惠机会非常宝贵。

相关推荐
Full Stack Developme6 分钟前
java.nio 包详解
java·python·nio
零千叶22 分钟前
【面试】Java JVM 调优面试手册
java·开发语言·jvm
代码充电宝31 分钟前
LeetCode 算法题【简单】290. 单词规律
java·算法·leetcode·职场和发展·哈希表
li37149089035 分钟前
nginx报400bad request 请求头过大异常处理
java·运维·nginx
摇滚侠39 分钟前
Spring Boot 项目, idea 控制台日志设置彩色
java·spring boot·intellij-idea
Aevget1 小时前
「Java EE开发指南」用MyEclipse开发的EJB开发工具(二)
java·ide·java-ee·eclipse·myeclipse
黄昏晓x1 小时前
C++----多态
java·jvm·c++
Brookty2 小时前
【算法】前缀和
java·学习·算法·前缀和·动态规划
少许极端2 小时前
算法奇妙屋(七)-字符串操作
java·开发语言·数据结构·算法·字符串操作
懒羊羊不懒@2 小时前
Java基础语法—字面量、变量详解、存储数据原理
java·开发语言