如何在 Ubuntu 20.04 上安装 Tomcat 9

简介:

image

这篇指南描述如何在 Ubuntu 20.04 上安装和配置 Tomcat 9 。

Apache Tomcat是一个开源的 Web 服务器和 Java servlet 容器。它是世界上最流行的选择,用来构建基于 Java 的网站和应用。Tomcat 是一个轻量级,易于使用,并且有一个强壮的扩展生态系统。

一、安装 Java

Tomcat 9 要求在系统上安装 Java SE 8 或者更新版本。我们将会安装 OpenJDK 11,Java 平台的开源实现。

以 root 或者其他 sudo 权限用户身份运行下面的命令来更新软件包索引,并且安装 OpenJDK 11 JDK 软件包:

sudo apt update
sudo apt install openjdk-11-jdk
AI 代码解读

一旦安装完成,通过检查 Java 版本来验证它:

java -version
AI 代码解读

输出应该像下面这样:

openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
AI 代码解读

二、创建一个系统用户

以 root 用户运行 Tomcat 有一个安全风险。我们将会创建一个系统用户和用户组,其主目录为/opt/tomcat。我们将会使用这个用户来运行 Tomcat 服务。想要这么做,输入下面的命令:

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
AI 代码解读

三、下载 Tomcat

Tomcat 二进制发行版在 Tomcat 下载页面可以下载

就在写作的时候,最新的 Tomcat 版本是 9.0.35。在继续下一步之前,检查 Tomcat 9 下载页面,看看是否有更新的版本可以下载。

使用wget来下载 Tomcat zip 文件到/tmp目录:

VERSION=9.0.35
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp
AI 代码解读

一旦下载完成,解压 tar 文件到/opt/tomcat目录:

sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/
AI 代码解读

Tomcat 会定期更新 安全补丁和新功能。想要更好地升级版本和更新,我们将会创建一个符号链接,称为latest,指向 Tomcat 安装目录。

sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest
AI 代码解读

稍后,当升级 Tomcat 时,解压新的版本,并且修改符号链接,指向它。

前面创建的系统用户必须对 tomcat 安装目录有访问权限。修改目录归属到用户和用户组 tomcat:

sudo chown -R tomcat: /opt/tomcat
AI 代码解读

在 Tomcat bin目录下的 shell 脚本必须可执行:

sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
AI 代码解读

这些脚本将会被用来启动,停止,以及其他对 Tomcat 的管理操作。

四、创建 SystemD 单元文件

与使用 shell 脚本来启动和停止 Tomcat 服务器相比,我们将会将它作为服务来运行。

打开你的文本编辑器,并且在/etc/systemd/system/目录下创建一个 tomcat.service 单元文件。

sudo nano /etc/systemd/system/tomcat.service
AI 代码解读

粘贴下面的配置文件:

[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target
AI 代码解读
如果你的 Java 安装路径不一样,请修改`JAVA_HOME`环境变量。
AI 代码解读

保存并且关闭文件,通知 systemd 一个新的单元文件存在:

sudo systemctl daemon-reload
AI 代码解读

启用并且启动 Tomcat 服务:

sudo systemctl enable --now tomcat
AI 代码解读

检查服务状态:

sudo systemctl status tomcat
AI 代码解读

输出应该显示 Tomcat 服务器已经启用,并且运行了:

● tomcat.service - Tomcat 9 servlet container
     Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-05-25 17:58:37 UTC; 4s ago
    Process: 5342 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
   Main PID: 5362 (java)
...
AI 代码解读

你可以 像其他 systemd 服务一样 启动,停止和重启 Tomcat:

sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat
AI 代码解读

五、配置防火墙

如果你的服务器被防火墙保护,并且你想从外面访问你的Tomcat,你需要打开8080端口。

使用下面的命令打开必要的端口:

sudo ufw allow 8080/tcp
AI 代码解读
通常,当在生产环境运行 Tomcat 时,你应该是使用一个负载均衡,或者反向代理服务器。这是仅仅允许从你的本地网络访问`8080`端口的最佳实践。
AI 代码解读

六、配置 Tomcat 网页管理界面

正在此时,你应该通过一个浏览器在8080端口访问 Tomcat。网页管理界面不能访问,因为我们还没有创建一个用户。

Tomcat 用户和角色被定义在 tomcat-users.xml。这个文件是一个带有注释和示例的模板,展示如何创建一个用户和角色。

在这个例子中,我们将会创建一个用户“admin-gui” 和 “manager-gui” 角色。这个 “admin-gui”角色允许用户访问/host-manager/htmlURL 来创建,删除和其他对虚拟主机的管理。这个“manager-gui”角色允许用户部署和解除部署 web 应用,而不用通过/host-manager/html界面重启整个容器。

打开tomcat-users.xml文件,创建一个新用户,像下面这样:

sudo nano /opt/tomcat/latest/conf/tomcat-users.xml
AI 代码解读
<tomcat-users>
<!--
    Comments
-->
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>
AI 代码解读

确保你将用户名和密码修改得更加安全。

默认情况下,Tomcat 网页管理界面被配置仅仅从 localhost 访问 Manager 和 Host Manager 应用。想要从远程 IP 访问网页界面,你需要移除这些限制。

这可能会有一些安全隐患,我们不推荐在生产系统中这么做。

想要从任何地方都能访问网页界面,打开配置的两个文件,注释或者移除注释的部分。

对于 Manager:

sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
AI 代码解读

对于 Host Manager:

sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
AI 代码解读
<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
AI 代码解读

如果你只想从指定的 IP 访问网页界面,不要注释这一段,而是将你的公网 IP 地址加进去。

假如说你的公网 IP 是41.41.41.41,并且你想允许从那个 IP 访问网页界面:

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|41.41.41.41" />
</Context>
AI 代码解读

被允许的 IP 列表以|来分隔。你可以添加一个简单的 IP 地址,或者使用正则表达式。

一旦完成,重启 Tomcat 服务,使应用生效:

sudo systemctl restart tomcat
AI 代码解读

七、测试 Tomcat 安装

打开你的浏览器,输入:http://<your_domain_or_IP_address>:8080

Tomcat 网页应用管理在:

http://<your_domain_or_IP_address>:8080/manager/html
AI 代码解读

{{< figure src="/img/linuxize/ubuntu/tomcat-manager.jpg" link="https://cloud.tencent.com/act/cps/redirect?redirect=1040&cps_key=7ad172f808f30965a01c05887137e4d8&from=console" target="blank" >}}

Tomcat 虚拟主机管理在:

 http://<your_domain_or_IP_address>:8080/host-manager/html
AI 代码解读

{{< figure src="/img/linuxize/ubuntu/tomcat-host-manager.jpg" link="https://cloud.tencent.com/act/cps/redirect?redirect=1040&cps_key=7ad172f808f30965a01c05887137e4d8&from=console" target="blank" >}}

八、总结

我们已经向你展示如何在 Ubuntu 20.04 上安装 Tomcat 9.0,并且如何访问 Tomcat 管理界面。

想要获得更多关于 Apache Tomcat 的信息,浏览官方文档页面。

相关文章
在Ubuntu上安装MEAN Stack的4个步骤
本指南介绍了在Ubuntu上安装MEAN Stack的四个步骤。MEAN Stack是一种基于JavaScript的开发堆栈,包含MongoDB、ExpressJS、AngularJS和NodeJS。步骤包括:1. 更新系统并准备安装MEAN;2. 从官方源安装最新版MongoDB;3. 安装NodeJS、Git和NPM;4. 克隆mean.io仓库并使用NPM安装剩余依赖项。通过这些步骤,您可以快速搭建基于MEAN Stack的应用开发环境。
56 2
Tomcat和JDK的详细安装、下载和环境配置指南
以上就是JDK和Tomcat的下载、安装和环境配置的详细步骤。希望这个指南能帮助你顺利完成设置。
66 32
在Ubuntu 22.04上配置和安装MySQL
以上就是在Ubuntu 22.04上配置和安装MySQL的步骤。这个过程可能看起来有点复杂,但只要按照步骤一步步来,你会发现其实并不难。记住,任何时候都不要急于求成,耐心是解决问题的关键。
79 30
在Ubuntu上安装kubectl、kubeadm和kubelet
好了,你已经掌握了在Ubuntu上安装kubectl、kubeadm和kubelet的高超技艺。是时候展示你新召唤出的力量,像一位真正的烹饪大师一样,开始独特的佳肴烹饪之旅吧!
37 13
在Ubuntu Linux系统下如何搭建并安装EDK2
以上就是在Ubuntu Linux系统下搭建并安装EDK2的过程。这个过程可能会有些复杂,但只要按照步骤一步步来,应该不会有太大问题。如果在过程中遇到任何问题,都可以在网上找到相应的解决方案。希望这个指南能对你有所帮助!
76 17
在Ubuntu系统的Docker上安装MySQL的方法
以上的步骤就是在Ubuntu系统的Docker上安装MySQL的详细方法,希望对你有所帮助!
105 12
在Ubuntu下安装Debian包:dpkg与apt命令的深度解构。
安装Debian包的知识,就像掌握了海上的航行技术,虽然起初会让人感到陌生甚至困惑,但只要你积累熟练,就能在Ubuntu的世界里畅游无阻。就像每一位成功的航海家,掌握好这些工具,去探索属于你的Ubuntu新世界吧!
94 21
|
29天前
|
Ubuntu中dpkg和apt命令:debian包安装详解
希望这让你对于Ubuntu中的dpkg和apt命令有了更为清晰的理解。下次你面对软件包安装的问题,就可以轻松应对,优雅地在你的Linux系统中游刃有余了。
184 10
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
101 16
|
2月前
|
Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式
通过这个过程,用户不仅可以定制自己的桌面外观,还可以学习到更多关于 Linux 系统管理的知识,从而更好地掌握系统配置和主题管理的技巧。
127 12
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等