介绍
Apache Tomcat 是一个用于服务 Java 应用程序的 Web 服务器和服务器容器 Tomcat 是由 Apache Software Foundation 发布的 Java Servlet 和 JavaServer Pages 技术的开源实现,本教程涵盖了 Ubuntu 18.04 服务器上最新版本 Tomcat 9 的基本安装和某些配置。
前提条件
在您开始使用本指南之前,您应该有一个非根用户,在您的服务器上设置了sudo
特权,您可以通过完成我们的 Ubuntu 18.04初始服务器设置指南来学习如何做到这一点。
第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.10,但你应该使用较晚的稳定版本,如果可用。在 ** 二进制分布部分,然后在 ** 核心列表下,复制链接到tar.gz
。在大多数浏览器中,你可以通过右键单击链接,选择 ** 复制链接地址**或类似选项来做到这一点。
接下来,转到您的服务器上的/tmp
目录,这是一个很好的目录来下载平时项目,如Tomcat tarball,我们在提取Tomcat内容后不需要:
1cd /tmp
使用弯曲
下载您从Tomcat网站复制的链接:
1curl -O paste_the_copied_link_here
我们将安装Tomcat到/opt/tomcat
目录,创建目录,然后用以下命令提取档案:
1sudo mkdir /opt/tomcat
2sudo tar xzvf apache-tomcat-*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
,temp
和logs
目录的所有者:
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 1081 /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
步骤 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-gui
和admin-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
您看到的页面应该与您之前测试时所提供的页面相同:
让我们来看看管理器应用程序,可以通过链接或http://server_domain_or_IP:8080/manager/html
访问。您需要输入您添加到tomcat-users.xml
文件的帐户凭证。之后,您应该看到一个看起来像这样的页面:
Web Application Manager 用于管理 Java 应用程序. 您可以在这里启动、停止、重新加载、部署和卸载。 您也可以在您的应用程序上运行一些诊断(即查找内存漏洞)。
现在让我们看看主机管理器,可以通过链接或http://server_domain_or_IP:8080/host-manager/html/`访问:
从虚拟主机管理器页面,您可以添加虚拟主机来服务您的应用程序。
结论
您的 Tomcat 安装完成了! 您现在可以免费部署自己的 Java Web 应用程序!
目前,您的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加密)。