如何在 Ubuntu 20.04 上安装 Apache Tomcat 10

如何在Ubuntu 20.04上安装Apache Tomcat 10

介绍

Apache Tomcat是一个用于服务Java(https://www.oracle.com/java/)应用程序的Web服务器和服务器容器,是Jakarta Servlet(https://jakarta.ee/specifications/servlet/),Jakarta Server Pages(https://jakarta.ee/specifications/pages/),以及Jakarta EE(https://jakarta.ee/)平台的其他技术的开源实现。

在本教程中,您将部署Apache Tomcat 10在Ubuntu 20.04.您将安装Tomcat 10,设置用户和角色,并导航管理员用户界面。

前提条件

步骤 1 – 安装 Tomcat

在本节中,您将在您的服务器上设置Tomcat 10。 首先,您将下载其最新版本,并为其设置一个单独的用户和适当的权限。

出于安全目的,Tomcat 应该在一个单独的非特权用户下运行,运行以下命令来创建一个名为tomcat的用户:

1sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat

通过提供/bin/false作为用户的默认壳,您可以确保无法登录为tomcat

您现在将安装 JDK. 首先,通过运行更新包管理器缓存:

1sudo apt update

然后,通过运行以下命令来安装 JDK:

1sudo apt install default-jdk

答案y,当被要求继续安装时。

安装完成后,请检查可用的 Java 安装版本:

1java -version

结果应该是这样的:

1[secondary_label Output]
2openjdk version "11.0.14" 2022-01-18
3OpenJDK Runtime Environment (build 11.0.14+9-Ubuntu-0ubuntu2.20.04)
4OpenJDK 64-Bit Server VM (build 11.0.14+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)

要安装Tomcat,您将需要Tomcat 10的最新Core Linux构建,您可以从下载页面(https://tomcat.apache.org/download-10.cgi)获取。

首先,导航到 /tmp 目录:

1cd /tmp

使用「wget」下載檔案,執行以下命令:

1wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz

wget命令从互联网下载资源。

然后,通过运行来提取您下载的档案:

1sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1

既然您已经创建了一个用户,您现在可以通过运行tomcat对提取的安装的所有权:

1sudo chown -R tomcat:tomcat /opt/tomcat/
2sudo chmod -R u+x /opt/tomcat/bin

兩個命令都更新了「tomcat」安裝的設定. 要了解更多關於這些命令以及他們所做的事情,請瀏覽 Linux 權限基礎和如何在 VPS 上使用 Umask

在此步骤中,您安装了 JDK 和 Tomcat. 您还为它创建了单独的用户,并设置了对 Tomcat 二进制的权限。

步骤 2 – 配置 Admin 用户

要访问管理员和主机管理员页面,您将在 Tomcat 配置中定义特权用户,您将需要删除 IP 地址限制,这将阻止所有外部 IP 地址访问这些页面。

Tomcat 用户定义为 /opt/tomcat/conf/tomcat-users.xml. 使用以下命令打开文件以编辑:

1sudo nano /opt/tomcat/conf/tomcat-users.xml

在结尾标签之前添加以下行:

1[label /opt/tomcat/conf/tomcat-users.xml]
2<role rolename="manager-gui" />
3<user username="manager" password="manager_password" roles="manager-gui" />
4
5<role rolename="admin-gui" />
6<user username="admin" password="admin_password" roles="manager-gui,admin-gui" />

用您自己的密码替换突出的密码. 完成后,保存并关闭文件。

在这里,您定义了两个用户角色,即manager-guiadmin-gui,分别允许访问 Manager 和 ** Host Manager** 页面,您还定义了两个用户,即Manageradmin,具有相关角色。

默认情况下,Tomcat配置为限制访问管理员页面,除非连接来自服务器本身。

若要删除管理员页面的限制,请打开其配置文件以进行编辑:

1sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml

评论阀门的定义,如下所示:

1[label opt/tomcat/webapps/manager/META-INF/context.xml]
2...
3<Context antiResourceLocking="false" privileged="true" >
4  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
5                   sameSiteCookies="strict" />
6<!--  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
7         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
8  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.Csr>
9</Context>

保存并关闭文件,然后重复 ** 主机管理器** :

1sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

您现在已经定义了两个用户,即管理员管理员,后者将用于访问管理界面的限制部分,您现在将为Tomcat创建一个系统服务。

步骤 3 – 创建一个systemd服务

您现在创建的systemd服务将使Tomcat在后台安静运行,并且在出现错误或故障时,systemd服务也会自动重新启动Tomcat。

Tomcat,作为一个Java应用程序本身,需要Java运行时间来存在,您在步骤 1中安装了JDK,在创建服务之前,您需要知道Java位于哪里。

1sudo update-java-alternatives -l

结果将类似于此:

1[secondary_label Output]
2java-1.11.0-openjdk-amd64 1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64

注意在最后一列中列出的Java所在的路径,您将需要该路径暂时来定义服务。

您将将tomcat服务存储在名为tomcat.service的文件中,在/etc/systemd/system下。

1sudo nano /etc/systemd/system/tomcat.service

添加以下几行:

 1[label /etc/systemd/system/tomcat.service]
 2[Unit]
 3Description=Tomcat
 4After=network.target
 5
 6[Service]
 7Type=forking
 8
 9User=tomcat
10Group=tomcat
11
12Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
13Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
14Environment="CATALINA_BASE=/opt/tomcat"
15Environment="CATALINA_HOME=/opt/tomcat"
16Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
17Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
18
19ExecStart=/opt/tomcat/bin/startup.sh
20ExecStop=/opt/tomcat/bin/shutdown.sh
21
22RestartSec=10
23Restart=always
24
25[Install]
26WantedBy=multi-user.target

更改JAVA_HOME的突出值,如果它与您之前注意到的值不同。

在这里,你会通过执行它提供的启动和关闭脚本来定义一个将运行Tomcat的服务,你还会设置几个环境变量来定义其主目录(如前所述的‘/opt/tomcat’),并限制Java VM可以分配的内存量(在‘CATALINA_OPTS’)。

完成后,保存并关闭文件。

重新加载systemd DAEMON,以便它意识到新的服务:

1sudo systemctl daemon-reload

然后您可以通过键入开始Tomcat服务:

1sudo systemctl start tomcat

然后,看看它的状态,以确认它成功开始了:

1sudo systemctl status tomcat

结果将是这样的:

 1[secondary_label Output]
 2 tomcat.service - Tomcat
 3     Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
 4     Active: active (running) since Fri 2022-03-11 14:37:10 UTC; 2s ago
 5    Process: 4845 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 6   Main PID: 4860 (java)
 7      Tasks: 15 (limit: 1132)
 8     Memory: 90.1M
 9     CGroup: /system.slice/tomcat.service
10             └─4860 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties ...

q来退出命令。

要启用 Tomcat 启动系统,请运行以下命令:

1sudo systemctl enable tomcat

在此步骤中,您确定了Java所在的位置,并启用systemd在背景中运行Tomcat,您现在可以通过您的Web浏览器访问Tomcat。

步骤 4 – 访问 Web 界面

现在Tomcat服务正在运行,您可以配置防火墙以允许连接到Tomcat。

Tomcat 使用端口 8080 来接受 HTTP 请求. 运行以下命令来允许流量到该端口:

1sudo ufw allow 8080

在您的浏览器中,您现在可以通过导航到您的服务器的IP地址访问Tomcat:

1http://your_server_ip:8080

您将看到默认的Tomcat欢迎页面:

Tomcat - Default Welcome Page

您现在已经验证了Tomcat服务正在运作。

按一下右侧的 ** 应用程序管理器 ** 按钮,您将被要求输入您在上一个步骤中定义的帐户凭证。

你应该看到一个看起来像这样的页面:

Tomcat - Web Application Manager

Web Application Manager 用于管理 Java 应用程序. 您可以从这里启动、停止、重新加载、部署和不部署这些应用程序. 您也可以在应用程序上运行一些诊断(例如,以查找内存漏洞)。

现在,看看主机管理器,通过在主页上按下其按钮即可访问:

Tomcat Virtual Host Manager

在这里,您可以添加虚拟主机来服务您的应用程序,请记住,此页面不适用于没有分配admin-gui角色的用户,例如管理员

结论

您已在 Ubuntu 20.04 服务器上安装了 Tomcat 10 并将其配置为可以远程访问的管理帐户,您现在可以使用它来部署基于雅加达 EE 技术的 Java 应用程序,您可以通过访问 官方文件来了解更多关于 Java 应用程序的信息。

目前,您的 Tomcat 安装是功能性的,但其流量不是加密的。这意味着所有数据,包括密码等敏感项目,都以简单的文本发送,可以被互联网上的其他人拦截和阅读。 为了防止这种情况发生,您可以将域名添加到您的服务器,并在其上安装 TLS 证书(使用本关于使用 Apache 或 Nginx 保护 Tomcat 10 的教程)。 有关加密的更多信息,请参阅 An Introduction to Let's Encrypt

Published At
Categories with 技术
comments powered by Disqus