如何在Debian 9上安装Apache Tomcat 9

介绍

Apache Tomcat是一个Web服务器和servlet容器,用于为Java应用程序提供服务。Tomcat是Apache Software Foundation发布的Java Servlet和JavaServer Pages技术的开源实现。本教程介绍Debian 9服务器上Tomcat 9的最新版本的基本安装和一些配置。

准备

在开始本教程之前,您应该拥有一个在您的服务器上设置了sudo权限的非root用户。您可以通过完成我们的Debian 9初始服务器设置教程来了解如何执行此操作。

没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

第1步 - 安装Java

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

首先,更新你的apt包索引:

sudo apt update

然后使用apt安装Java Development Kit软件包:

sudo apt install default-jdk

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

第2步 - 创建Tomcat用户

出于安全考虑,Tomcat应该作为非特权用户运行(即不是root用户)。我们将创建一个将运行Tomcat服务的新用户和组。

注意:在某些环境中,默认情况下可能会安装一个名为unscd的软件包,以加快对LDAP等名称服务器的请求。Debian中当前可用的最新版本包含一个错误,该错误会导致某些命令(如下面的adduser命令)生成如下所示的其他输出:

sent invalidate(passwd) request, exiting
sent invalidate(group) request, exiting

这些消息是无害的,但是如果您希望避免它们,如果您不打算使用LDAP等系统获取用户信息,则可以安全地删除unscd包:

apt remove unscd

首先,创建一个新tomcat组:

sudo groupadd tomcat

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

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

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

第3步 - 安装Tomcat

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

Tomcat 9下载页面上找到最新版本的Tomcat 9 。在Binary Distributions部分下,然后在Core列表下,将链接复制到“tar.gz”。

接下来,切换到服务器上的/tmp目录。这是一个很好的下载短暂项目的目录,比如Tomcat tarball,在提取Tomcat内容后我们不需要这样:

cd /tmp

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

sudo apt install curl

现在,用curl来下载从Tomcat网站复制的链接:

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

我们将Tomcat安装到/opt/tomcat目录中。创建目录,然后使用以下命令将存档解压缩到它:

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

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

第4步 - 更新权限

我们设置的tomcat用户需要能够访问Tomcat安装。我们现在就把它搞定。

切换到我们解压缩Tomcat安装的目录:

cd /opt/tomcat

在整个安装目录中授予tomcat组权限:

sudo chgrp -R tomcat /opt/tomcat

接下来,为tomcat组提供对conf目录及其所有内容的读访问权限,并执行对目录本身的访问:

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

使tomcat用户成为webappsworktemp,和logs目录的所有者:

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

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

第5步 - 创建systemd服务文件

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

Tomcat需要知道Java的安装位置。此路径通常称为“JAVA_HOME”。查找该位置的最简单方法是运行此命令:

sudo update-java-alternatives -l
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64

您的JAVA_HOME是最后一列的输出(以红色突出显示)。鉴于上面的示例,此服务器的正确的JAVA_HOME将是:

JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-amd64

您的JAVA_HOME可能会有所不同。

有了这条信息,我们就可以创建systemd服务文件了。在/etc/systemd/system目录中键入以下内容以打开一个名为tomcat.service的文件:

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

将以下内容粘贴到您的服务文件中。如有必要,修改JAVA_HOME的值以匹配您在系统上找到的值。您可能还想修改在CATALINA_OPTS中指定的内存分配设置:

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
​
[Service]
Type=forking
​
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
​
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
​
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
​
[Install]
WantedBy=multi-user.target

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

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

sudo systemctl daemon-reload

键入以下命令启动Tomcat服务:

sudo systemctl start tomcat

键入以下内容,仔细检查它是否正常启动:

sudo systemctl status tomcat

您应该看到类似于以下内容的输出:

● tomcat.service - Apache Tomcat Web Application Container
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-09-05 20:47:44 UTC; 3s ago
  Process: 9037 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 9046 (java)
    Tasks: 46 (limit: 4915)
   CGroup: /system.slice/tomcat.service
           └─9046 /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Dja
​
Sep 05 20:47:44 tomcat systemd[1]: Starting Apache Tomcat Web Application Container...
Sep 05 20:47:44 tomcat systemd[1]: Started Apache Tomcat Web Application Container.

这确认Tomcat已启动并在您的服务器上运行。

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

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

在我们这样做之前,我们需要调整防火墙以允许我们的请求到达服务。如果您遵循先决条件,则当前将启用ufw防火墙。

Tomcat使用端口8080接受传统请求。输入以下内容允许到该端口的流量:

sudo ufw allow 8080

修改防火墙后,您可以通过访问域或IP地址,然后在Web浏览器中访问默认启动页面或以:8080结尾的IP地址:

http://server_domain_or_IP:8080

除了其他信息之外,您还将看到默认的Tomcat启动页面。但是,例如,如果单击Manager App的链接,则将拒绝您访问。我们接下来可以配置该访问。

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

sudo systemctl enable tomcat

步骤7 - 配置Tomcat Web管理界面

为了使用Tomcat附带的管理器Web应用程序,我们必须向Tomcat服务器添加登录。我们将通过编辑tomcat-users.xml文件来完成此操作:

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

您将需要添加可以访问manager-guiadmin-gui(Tomcat附带的Web应用程序)的用户。您可以通过在tomcat-users标记之间定义用户(类似于下面的示例)来实现此目的。请务必将用户名和密码更改为安全的内容:

<tomcat-users . . .>
    <user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>

完成后保存并关闭文件。

默认情况下,较新版本的Tomcat将对Manager和Host Manager应用程序的访问限制为来自服务器本身的连接。由于我们在远程计算机上安装,您可能希望删除或更改此限制。要更改对这些的IP地址限制,请打开相应的context.xml文件。

对于Manager应用,请键入:

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

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

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

在内部,注释掉IP地址限制以允许来自任何地方的连接。或者,如果您只允许访问来自您自己的IP地址的连接,您可以将您的公共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" />-->
</Context>

完成后保存并关闭文件。

要使我们的更改生效,请重新启动Tomcat服务:

sudo systemctl restart tomcat

步骤8 - 访问Web界面

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

Open in web browserhttp://server_domain_or_IP:8080

您看到的页面应该与您之前测试时给出的页面相同:

我们来看看Manager App,可以通过链接或http://server_domain_or_IP:8080/manager/html``tomcat-users.xml访问。您需要输入添加到文件中的帐户凭据。之后,您应该看到如下所示的页面:

Web应用程序管理器用于管理Java应用程序。您可以在此处启动,停止,重新加载,部署和取消部署。您还可以在应用程序上运行一些诊断程序(即查找内存泄漏)。最后,本页最下方提供了有关您的服务器的信息。

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

在Virtual Host Manager页面中,您可以添加虚拟主机以便为您的应用程序提供服务。

结论

你的Tomcat安装完成了!您现在可以自由部署自己的Java Web应用程序了!

目前,您的Tomcat安装功能正常,但完全未加密。这意味着所有数据(包括密码等敏感项目)都以纯文本形式发送,可以被互联网上的其他方拦截和阅读。为了防止这种情况发生,强烈建议您使用SSL加密连接。您可以按照本教程了解如何加密与Tomcat的连接(注意:本教程介绍了Ubuntu 16.04上的Tomcat 8加密)。

想要了解更多关于安装Apache Tomcat 9的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Install Apache Tomcat 9 on Debian 9》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在CentOS 7上使用Postgres,Nginx和Gunicorn设置Django

Django是一个功能强大的Web框架,可以帮助您启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生...

19030
来自专栏散尽浮华

sudo命令使用的几个场景

在linux系统下,普通用户无法直接执行root用户权限下的命令,如果想让普通用户执行只有root用户才能执行的操作命令。 下面罗列下经常使用sudo命令的几个...

25350
来自专栏闵开慧

tomcat里面的文件详细说明

如何安装tomcat服务器   安装Tomcat之前要先安装JDK,可从http://java.sun.com上下载最新版本的JDK。 Tomcat可从Apac...

442100
来自专栏实战docker

Docker下dubbo开发,三部曲之三:java开发

在前两章《Docker下dubbo开发,三部曲之一:极速体验》和《Docker下dubbo开发,三部曲之二:本地环境搭建》中,我们体验了dubbo环境搭建以及服...

23350
来自专栏Android群英传

Gradle自定义插件

19810
来自专栏守望轩

Visual Studio 2008 每日提示(三十三)

#331、让在文件标签里后移的文件标签保留到最近使用的位置 原文链接:You can keep recently-used files from fallin...

33540
来自专栏木子昭的博客

将Python程序(.py)转换为Windows可执行文件(.exe)第四步:运行测试

python开发者向普通windows用户分享程序,要给程序加图形化的界面(传送门:这可能是最好玩的python GUI入门实例! http://www.jia...

385100
来自专栏空木白博客

分享5个网址二维码API接口

它们只需要填写好网址就能自动生成二维码,分别来自与bshare和jiathis分享工具中,如您需要就把下面的二维码生成API接口复制到你需要地方。

52420
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装Apache Tomcat 9

Apache Tomcat是一个Web服务器和servlet容器,用于为Java应用程序提供服务。Tomcat是Apache Software Foundati...

74730
来自专栏北京马哥教育

五分钟搞定 Linux 文档全部知识,就看这篇文章

20550

扫码关注云+社区

领取腾讯云代金券