如何在 Debian 10 上安装 Apache Tomcat 9

介绍

Apache Tomcat 是一个 Web 服务器和服务器容器,用于服务 Java 应用程序. Tomcat 是由 Apache 软件基金会发布的 Java Servlet 和 JavaServer Pages 技术的开源实现。

前提条件

在您开始使用本指南之前,您应该有一个非根用户,在您的服务器上设置了sudo权限,您可以通过完成我们的 Debian 10初始服务器设置指南来学习如何做到这一点。

第1步:安装Java

Tomcat 需要在服务器上安装 Java,以便执行任何 Java 网络应用程序代码. 我们可以通过安装 OpenJDK with apt 来满足这一要求。

首先,更新 apt 包索引:

1sudo apt update

然后用 apt 安装 Java 开发套件包:

1sudo apt install default-jdk

现在安装了Java,我们可以创建一个tomcat用户,它将用于运行Tomcat服务。

步骤 2 – 创建 Tomcat 用户

出于安全原因,Tomcat 应该作为非特权用户运行(即不是 root )。

首先,创建一个新的 tomcat 组:

1sudo groupadd tomcat

接下来,创建一个新的 Tomcat 用户,我们将使这个用户成为 Tomcat 组的成员,其中有 /opt/tomcat’ 的主目录(我们将安装 Tomcat)和 /bin/false 的壳(因此没有人可以登录帐户):

1sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

现在我们的 Tomcat 用户已设置,让我们下载并安装 Tomcat。

步骤 3 – 安装 Tomcat

安装Tomcat 9的最佳方法是下载最新的二进制版本,然后手动配置。

查找最新版本的 Tomcat 9 在 Tomcat 9 下载页面. 在写作时,最新版本是 9.0.27 ,但你应该使用较晚的稳定版本,如果可用。

接下来,回到您的 SSH 会话并移动到您的服务器上的 /tmp 目录. 这是一个很好的目录来下载平时项目,如 Tomcat tarball,我们在提取 Tomcat 内容后不需要:

1cd /tmp

我们将使用curl命令行工具来下载 tarball。

1sudo apt install curl

现在,使用弯曲下载您从Tomcat网站复制的链接:

1curl -O http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.11/bin/apache-tomcat-9.0.11.tar.gz

我们将安装Tomcat到/opt/tomcat目录,创建目录,然后用以下命令提取档案:

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

接下来,我们将为我们的安装设置适当的用户权限。

步骤 4 – 更新权限

我们创建的 tomcat 用户需要访问 Tomcat 安装,我们现在将设置它。

更改到我们卸载了Tomcat安装的目录:

1cd /opt/tomcat

在整个安装目录上授予 tomcat 组所有权:

1sudo chgrp -R tomcat /opt/tomcat

接下来,给 tomcat访问conf目录及其所有内容,并执行访问目录本身:

1sudo chmod -R g+r conf
2sudo chmod g+x conf

使 Tomcat 用户成为webapps,work,templogs目录的所有者:

1sudo chown -R tomcat webapps/ work/ temp/ logs/

现在设置了适当的权限,我们将创建一个 systemd 服务文件来管理 Tomcat 流程。

步骤 5 — 创建一个 systemd 服务文件

我们希望能够作为服务运行Tomcat,因此我们将设置系统d服务文件。

Tomcat 需要知道 Java 安裝在哪裡,這個路徑通常被稱為「JAVA_HOME」。

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_HOME是来自上一列的输出(上面提到)。 根据上面的示例,这个服务器的正确JAVA_HOME将是:

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

您的JAVA_HOME可能不同。

使用此信息,我们可以创建 systemd 服务文件. 在 /etc/systemd/system 目录中打开名为 tomcat.service 的文件,键入:

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

将以下内容粘贴到服务文件中. 如有必要,可以更改JAVA_HOME的值,以匹配您在系统上发现的值。

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

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

接下来,重新加载 systemd daemon 以便它知道我们的服务文件:

1sudo systemctl daemon-reload

通过键入开始Tomcat服务:

1sudo systemctl start tomcat

通过键入双重检查它是否开始没有错误:

1sudo systemctl status tomcat

你应该看到类似于以下的输出:

 1[secondary_label Output]
 2 tomcat.service - Apache Tomcat Web Application Container
 3   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
 4   Active: active (running) since Thu 2019-10-24 17:18:11 UTC; 4s ago
 5  Process: 5962 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 6 Main PID: 5970 (java)
 7    Tasks: 44 (limit: 2377)
 8   Memory: 184.2M
 9   CGroup: /system.slice/tomcat.service
10           └─5970 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.u
11
12Oct 24 17:18:10 tomcat systemd[1]: Starting Apache Tomcat Web Application Container...
13Oct 24 17:18:11 tomcat startup.sh[5962]: Tomcat started.
14Oct 24 17:18:11 tomcat systemd[1]: Started Apache Tomcat Web Application Container.

这确认Tomcat在您的服务器上运行。

步骤 6 – 调整防火墙并测试Tomcat服务器

现在,Tomcat服务已经启动,我们可以测试以确保默认页面可用。

在我们这样做之前,我们需要调整防火墙以允许我们的请求进入服务. 如果您遵循前提条件,您现在将有ufw防火墙启用。

Tomcat 使用端口 8080 来接受请求. 通过键入:

1sudo ufw allow 8080

随着防火墙的修改,您可以通过在 Web 浏览器中访问您的域或 IP 地址,然后是 :8080 来访问默认的 splash 页面:

1[secondary_label Open in web browser]
2http://server_domain_or_IP:8080

您将看到默认的 Tomcat Splash 页面,除了其他信息之外。 但是,如果您点击管理器应用程序的链接,例如,您将被拒绝访问。

如果您成功访问了Tomcat,现在是启用服务文件的最佳时机,以便Tomcat在启动时自动启动:

1sudo systemctl enable tomcat

步骤 7 — 配置 Tomcat Web 管理接口

为了使用与 Tomcat 一起提供的管理器 Web 应用程序,我们必须在我们的 Tomcat 服务器上添加登录,我们将通过编辑 tomcat-users.xml 文件来完成此操作:

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

您将想要添加一个可以访问manager-guiadmin-gui的用户(与Tomcat一起提供的Web应用程序)。您可以通过在tomcat-users标签之间定义一个用户,类似于下面的示例。

1[label tomcat-users.xml]
2<tomcat-users>
3. . .
4    <user username="admin" password="password" roles="manager-gui,admin-gui"/>
5</tomcat-users>

保存并关闭文件,当你完成。

默认情况下,新版本的 Tomcat 会限制访问 Manager 和 Host Manager 应用程序的连接来自服务器本身. 由于我们正在安装在远程机器上,您可能希望删除或更改此限制。

对于管理员应用程序,键入:

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

对于 Host Manager 应用程序,键入:

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

内部,请评论 IP 地址限制,以允许从任何地方连接. 或者,如果您想只允许访问来自自己的 IP 地址的连接,您可以将您的公共 IP 地址添加到列表中:

1[label context.xml files for Tomcat webapps]
2<Context antiResourceLocking="false" privileged="true" >
3  <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
4         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
5</Context>

保存并关闭文件,当你完成。

要实施我们的更改,请重新启动Tomcat服务:

1sudo systemctl restart tomcat

步骤 8 – 访问 Web 界面

现在我们已经创建了一个用户,我们可以在网页浏览器中再次访问网页管理接口. 再次,您可以通过输入您的服务器的域名或IP地址,然后在您的浏览器中的端口8080进入正确的接口:

1[secondary_label Open in web browser]
2http://server_domain_or_IP:8080

您看到的页面应该与您之前测试时所提供的页面相同:

Tomcat root

让我们来看看管理器应用程序,可以通过链接或http://server_domain_or_IP:8080/manager/html访问。您需要输入您添加到tomcat-users.xml文件的帐户凭证。之后,您应该看到一个看起来像这样的页面:

Tomcat Web Application Manager

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

现在让我们看看主机管理器,可以通过链接或http://server_domain_or_IP:8080/host-manager/html/`访问:

Tomcat Virtual Host Manager

从虚拟主机管理器页面,您可以添加虚拟主机来服务您的应用程序。

结论

您的 Tomcat 安装完成了!您现在可以免费部署自己的 Java 网络应用程序。

目前,您的Tomcat安装是功能性的,但完全没有加密,这意味着所有数据,包括密码等敏感项目,都以简单的文本发送,可以被互联网上的其他人拦截和阅读。 为了防止这种情况发生,强烈建议您使用SSL加密您的连接。 您可以通过遵循此指南来了解如何加密您的连接到Tomcat(https://andsky.com/tech/tutorials/how-to-encrypt-tomcat-8-connections-with-apache-or-nginx-on-ubuntu-16-04)(_note:本指南涵盖了Ubuntu 16.04上的Tomcat 8加密)。

Published At
Categories with 技术
comments powered by Disqus