文章目录
前言
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等服务的用户来说,这个优惠机会非常宝贵。