如何在 Ubuntu 16.04 上安装 Apache Tomcat 8

介绍

Apache Tomcat 是一个用于服务 Java 应用程序的 Web 服务器和服务器容器 Tomcat 是由 Apache Software Foundation 发布的 Java Servlet 和 JavaServer Pages 技术的开源实现,本教程涵盖了 Ubuntu 16.04 服务器上最新版本 Tomcat 8 的基本安装和某些配置。

前提条件

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

步骤1:安装Java

Tomcat 需要 Java 安裝在伺服器上,以便任何 Java 網頁應用程式代碼都可以執行. 我們可以通過使用 apt-get 安裝 OpenJDK 來滿足這個要求。

首先,更新 apt-get 包索引:

1sudo apt-get update

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

1sudo apt-get 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。

步骤三:安装Tomcat

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

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

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

1cd /tmp

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

1curl -O http://apache.mirrors.ionfish.org/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

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

1sudo mkdir /opt/tomcat
2sudo tar xzvf apache-tomcat-8*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.8.0-openjdk-amd64 1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64

正确的JAVA_HOME变量可以通过从最后一列(红色突出)的输出来构建,并将/jre附加到末尾,根据上面的示例,这个服务器的正确的JAVA_HOME将是:

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

您的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.8.0-openjdk-amd64/jre
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

步骤 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 — Admin User]
2<tomcat-users . . .>
3    <user username="admin" password="password" roles="manager-gui,admin-gui"/>
4</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 Web 应用程序!

目前,您的 Tomcat 安装是功能性的,但完全没有加密,这意味着所有数据,包括密码等敏感元素,都以简单的文本发送,可以被互联网上的其他人拦截和阅读。为了防止这种情况发生,强烈建议您使用 SSL 加密您的连接。您可以通过遵循 此指南来了解如何加密您的 Tomcat 连接。

Published At
Categories with 技术
comments powered by Disqus