TomCat 9 安装配置

总览

介绍

在最简单的概念中,TomCat是Web服务器。好吧,不仅如此。尽管它可以提供静态文件,但其主要目的是充当为Java Web应用程序提供服务的“ servlet容器”。它可以处理[.jsp]文件,类似于PHP脚本,但适用于Java。它还可以运行[Java Servlets],它们是处理GET,POST和其他HTTP请求的类。TomCat将在TCP端口上侦听HTTP请求,并将请求路由到Java类,JSP文件或静态文件。也可以将TomCat嵌入到独立的应用程序中,但这超出了本文档的范围。

尽管实际上在本教程中实际上没有Java代码,但仍希望有初级Java知识。这将涵盖基本的安装,配置和管理方面。本指南面向希望学习基本Java Web应用程序托管的中级开发人员。您应该是设置TomCat的系统管理员,还是要学习如何设置TomCat的开发人员。

我总是建议您使用http://tomcat.apache.org/上的官方文档以获取最新和最准确的信息。这是作为快速入门指南,其中包括我认为重要的入门知识。这里没有涵盖许多功能。例如,TomCat可以嵌入到您的应用程序内部。

Eclipse Jetty是TomCat的一种流行替代方法。当您需要轻量级嵌入式servlet容器时,通常使用它。诸如TomCat和Jetty之类的Servlet容器仅支持JavaEE规范的子集(JSP和Servlet)。您可以使用任何完整的JavaEE服务器作为替代方案,因为它们将支持Servlet和JSP,但它们还将支持更多功能,例如企业Java Bean(EJB),Java Persistence API(JPA)等。TomCatEEGlassfish是完整EE服务器的示例。

建立

取得JAVA

如果您还没有Java副本,则至少需要Java运行时环境(JRE)副本。我建议获取完整的Java开发套件(JDK),其中包括JRE。如果要开发自己的应用程序,则必须获得JDK。如果只想运行TomCat,则只需要JRE。

有关在Windows上安装多个JDK版本的信息,请查看“在Windows for Java开发中安装多个JDK”教程。

脚步:

  • 下载Java JDK。在此示例中,我使用的是OpenJDK 11。
  • 解压缩zip文件
  • 将Java移至所需位置。可以是您的主目录,例如/ opt / openjdk11。对于本示例的其余部分,我们将假定使用路径/ opt / openjdk11或C:\ opt \ openjdk11
  • 为TomCat设置JAVA_HOME环境变量。如果仅下载JRE,而不下载完整的JDK,则设置JRE_HOME。

可选:在Linux中,从主目录存储和运行JDK可以很好地用于个人开发,但是,如果您是系统管理员,并且想要使Java对所有人可用,则可以将其移动到每个人都可以读取的位置。

# Move Java to a system location (Linux)
sudo chown -R root:root /opt/openjdk11
chmod -R 775 /opt/openjdk11

可选:将Java可执行文件添加到您的PATH,以允许从命令行调用它。如果要将TomCat设置为服务,则不需要这样做,但是如果要从外壳中使用Java和编译器来运行程序并进行开发,则很有用。将JAVA_HOME内的bin目录添加到您的路径。例如/ opt / openjdk11 / bin到您的PATH。

# Windows update PATH permanently
setx PATH=C:\opt\openjdk11\bin;%PATH%

# Linux
export PATH=/opt/openjdk11/bin:$PATH

获取TOMCAT

首先,从http://tomcat.apache.org/下载TomCat 。下载后解压缩文件。如果您正在使用IDE进行NetBeans或IntelliJ之类的开发,则只需将IDE配置为使用TomCat目录,它将负责启动和停止服务以及部署应用程序。

在运行之前,需要设置两个重要的环境变量:

  • CATALINA_HOME设置为TomCat目录的根目录。
  • JAVA_HOME设置为Java JDK或JRE的根目录。

有几种使用TomCat的方法:

  • 使用startup.sh和shutdown.sh手动启动和停止TomCat进程
  • 配置您的IDE来为您管理TomCat实例(用于开发)
  • 将TomCat设置为系统服务(用于生产)
  • 将TomCat嵌入到您的应用程序中(此处未涵盖)

TomCat目录中的重要目录:

  • conf / -包含配置文件
  • 日志/ -Web应用程序的日志文件
  • webapps / -用于存储Web应用程序目录和.war文件的目录
  • webapps / ROOT / -默认Web根

将TOMCAT安装为WINDOWS服务

要将TomCat作为Windows服务安装,请使用可从https://tomcat.apache.org/index.html下载的“ Windows Service Installer” 。转到所需版本的“下载”页面,然后找到名为32/ 64Windows服务安装程序的下载。安装后,您将在Windows的“服务”管理器中找到它。您可以从那里启动和停止它。

要了解有关Windows服务的更多信息,请查看官方文档。这是第9版Windows服务HOW-TO的快速链接 。

将TOMCAT设置为LINUX服务(系统化)

将TomCat设置为服务可以使其在后台运行,并配置为在引导时运行。如果要使TomCat服务器运行24/7并自动重新启动,则要将其设置为服务。如今,大多数Linux发行版都使用systemd,这就是本文所涵盖的内容。假设您已经下载并解压缩了Java和TomCat。在此示例中,我们假设TomCat已移至/ opt /目录。

准备低特权用户和目录权限

这是可选的,但建议使用。我不建议以root用户运行该服务。我也建议您不要使用您的个人用户,除非它是您自己的服务器,仅供个人使用和开发。我确实建议创建一个名为“ tomcat”的低特权用户来运行该服务。

# Create low priv tomcat user
sudo useradd tomcat

# Let scripts be executable (i.e. startup/shutdown scripts)
sudo chmod +x /opt/tomcat9/bin/*.sh

# Reset permissions on tomcat directory
sudo chmod -R 775 /opt/tomcat/webapps
sudo chown -R tomcat:tomcat /opt/tomcat9

# Optionally add your user to the tomcat group
# to write in the tomcat directory
sudo gpasswd -a myusername tomcat

系统服务文件示例

这是systemd服务文件的示例。例如,您可以将此文件放在/etc/systemd/system/tomcat.service中,然后它将创建一个名为“ tomcat”的服务。

# Example systemd file
[Unit]
Description=Apache Tomcat
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/opt/openjdk11
Environment=CATALINA_PID=/opt/tomcat9/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat9
Environment=CATALINA_BASE=/opt/tomcat9
Environment='CATALINA_OPTS=-Xmx1024M -server'

WorkingDirectory=/opt/tomcat9

ExecStart=/opt/tomcat9/bin/startup.sh
ExecStop=/opt/tomcat9/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=15
Restart=always

[Install]
WantedBy=multi-user.target

控制系统服务

使用以下命令控制服务并获取信息。确保运行enable命令,以便它将在重新启动时自动启动。

sudo systemctl status tomcat
sudo systemctl enable tomcat # Sets it to start on boot
sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat

使用NGINX作为反向代理

在某些情况下,您可以使用TomCat在端口80或443上进行公开侦听,但是在许多情况下,您需要在运行其他Web服务的服务器上运行TomCat。在这种情况下,设置反向代理以公开侦听并处理到内部Web服务(例如TomCat)的路由通信可能很有用。我建议使用nginx,如果您想学习如何做的话,可以参阅Nginx教程

基本用法

本节介绍一些常见任务,例如启动和停止服务器,提供静态文件和JSP以及修改常规设置。

手动启动和停止TOMCAT

在bin \目录中,将有一个启动和关闭脚本。为Linux提供了.sh,为Windows提供了.bat。运行脚本,并根据需要设置环境变量JAVA_HOME和CATALINA_HOME。

Windows示例:

set JAVA_HOME=C:\opt\openjdk11
set CATALINA_HOME=C:\opt\tomcat9

C:\opt\tomcat9\bin\startup.bat
C:\opt\tomcat9\bin\shutdown.bat

Linux示例:

export JAVA_HOME=/opt/openjdk11
export CATALINA_HOME=/opt/tomcat9

# Might need sudo for these
/opt/tomcat9/bin/startup.sh
/opt/tomcat9/bin/shutdown.sh

验证TOMCAT服务器正在运行

访问http:// localhost:8080以查看TomCat是否正在工作。如果是远程测试,则可能需要用服务器的IP地址替换localhost。如果您是手动安装的,则默认端口为8080。如果您使用apt-get或Windows安装程序,则其默认端口应为端口80。我们稍后将在有关修改设置的本节中介绍如何更改端口。

服务静态文件

TomCat可以开箱即用地处理静态文件。默认情况下,TomCat的webapps /目录中有一个webapps / ROOT /目录。内部已经有一个index.jsp和其他资源。那是您在上一节中的浏览器中访问TomCat服务器时在http:// <ip>:8080中访问的登录页面

您可以将更多静态文件添加到webapps / ROOT /目录中,也可以在webapps /目录中创建一个新目录并将静态文件放置在该目录中。可通过/ <directory_name>访问(例如http:// localhost:8080 / mywebapp)。

您可以放置​​.txt,.zip或.html之类的平面文件,它们将直接提供。您也可以创建子目录。

服务JAVA服务器页面(JSP)

提供.jsp页面就像提供静态文件一样容易。您只需将JSP文件放入Web应用程序目录(例如ROOT)中,然后将您的客户端指向它。不需要XML配置或WAR文件。只要将您的浏览器指向/yourjsp.jsp,它就会运行。在将响应返回给客户端之前,TomCat实际上会编译它们并对其进行动态处理。在这种意义上,它们被视为PHP脚本。可以将它们视为HTML文件,并在各个位置插入动态Java代码。对.jsp页面进行更新时,无需重新启动服务器或重新编译代码。

如果要测试,这是一个JSP的简单示例。它显示了如何打印文本,创建新对象以及从请求中获取标头。

<!-- hello.jsp -->
<html>
    <body>
        <p><% out.print("Hello,world!"); %></p>
        <p>8 x 8 = <%= 8 * 8 %></p>
        <p>Time: <%= new java.util.Date() %></p>
        <p>Host requested: <%= request.getHeader("Host") %></p>
    </body>
</html>

将其命名为hello.jsp并将其放在webapps / ROOT目录中,然后访问https:// localhost:8080 / hello.jsp。或者,在webapps中创建一个类似于hello /的目录,并将文件放在其中,然后访问http:// localhost:8080 / hello / hello.jsp。

修改设定

TomCat配置文件位于TomCat根目录的conf /目录中。主文件是server.xml,可以在其中更改监听端口。在server.xml内部,主要侦听端口在标记为Connector的部分中定义。该部分将如下所示:

<!-- A "Connector" represents an endpoint by which requests are received
    and responses are returned. Documentation at :
    Java HTTP Connector: /docs/config/http.html
    Java AJP  Connector: /docs/config/ajp.html
    APR (HTTP/AJP) Connector: /docs/apr.html
    Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
<Connector port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" >

部署网络应用

部署Web应用程序可以通过以下几种方法来完成。

  • 手动将Web应用程序目录复制到TomCat的webapps /目录
  • 将.war文件放置在webapps /目录中
  • 使用Maven插件进行部署
  • 使用TomCat随附的名为manager的Web应用程序

TomCat管理器Web应用程序在“管理Web应用程序”部分中进一步介绍。

使用管理网页界面

TomCat捆绑了两个Web应用程序以帮助管理。

一种是虚拟主机管理器,它使您可以侦听多个不同的域。可以在/ host-manager / html上访问它,并且需要某些角色才能访问(下面解释)。

与TomCat捆绑在一起的另一个Web应用程序是Web应用程序管理器。这是更常用的,并且与初学者更相关。可以在/ manager / html访问它。这列出了所有可用的Web应用程序以及正在运行的Web应用程序。您可以启动,启动,部署,取消部署和终止会话。这很有用。

创建一个TOMCAT管理员用户

您可以在conf / tomcat-users.xml文件中将用户添加到TomCat 。xml中将有一个标记为tomcat-users的部分。在其中,将有几个注释掉的示例,显示了如何创建用户。如果要授予所有允许访问admin Manager应用程序的角色,则可以在下面添加代码行,更改用户名和密码。

<!-- Inside <CATALINA_HOME>/conf/tomcat-users.xml -->
<!-- Inside the <tomcat-users> element -->

<!-- Roles for Web Application Manager /manager/html/ -->
<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="manager-jmx" />
<role rolename="manager-status" />
<!-- Role for Virtual Host Manager /host-manager/html/ -->
<role rolename="admin-gui" />

<!-- Create user and assign roles -->
<user username="dano" password="secret" roles="manager-script,manager-gui,manager-jmx,manager-status,admin-gui" />

注意,您将需要重新启动服务器。如果将其作为服务安装,请使用服务管理器重新启动TomCat(Windows中为“服务”; Ubuntu中为“ sudo systemctl restart tomcat”)。如果是手动安装的,请参阅上面的“手动启动和停止TomCat”部分。花时间探索http:// localhost:8080 / manager / html和http:// localhost:8080 / host-manager / html链接。如果要远程访问它而不是通过本地主机访问,则会收到错误消息。下一节将说明如何将您的IP地址列入白名单。

访问管理网络应用

要访问管理页面,请访问Web应用程序管理器/ manager / html(例如http:// localhost:8080 / manager / html),并通过/ host-manager / html(例如http:// localhost)查看虚拟主机管理器。 :8080 / host-manager / html)。默认情况下,Web应用程序管理器仅可在localhost上访问。如果需要从远程主机访问管理界面,则需要将服务器上的IP地址列入白名单。您可以通过编辑特定Web应用程序目录内的META-INF / context.xml文件来实现。

您将使用上一部分在tomcat / conf / tomcat-users.xml中创建的tomcat用户和密码登录到这些用户。

要将IP列入白名单,请修改文件tomcat / webapps / manager / META-INF / context.xml,并将您的IP附加到列入白名单的IP地址列表中,并用|将IP分开。分隔符(请参见下面的示例)。对tomcat / webapps / host-manager / META-INF / context.xml执行相同的操作

在<webapp> /META-INF/context.xml文件中找到如下所示的行:

&lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

将您的IP地址添加到列表中。我们假设它是8.8.8.8。更改allow属性以在末尾包含您的IP地址,并在管道后附加| 像这样:

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|8.8.8.8"

管理网络应用

在前面的部分之后,您应该已经可以在/ manager / html URL上访问Web应用程序管理器。此页面将列出可用并正在运行的Web应用程序。您可以从此页面启动,停止和取消部署应用程序。您还可以将Web应用程序部署为打包的.war文件或爆炸目录。如果要远程访问服务器,则需要.war文件。

官方文档中了解有关Web应用程序管理器的更多信息。

结论

TomCat是一个servlet容器,已经存在并证明了其价值。这是托管JSP和Servlet应用程序的可靠选择。阅读此内容后,您应该可以轻松设置TomCat的基本用法以开始使用。本指南只是一些常见任务的快速概述。TomCat具有更多功能。请访问http://tomcat.apache.org/以获取最新和最准确的信息。

参考文献

 

相关文章

遵循Java Servlet 规范第4节中的建议 ,Apache Tomcat实现了...
JMX(Java管理扩展)是一项非常强大的技术,可让您管理,监视...
总览介绍 建立 取得Java 获取TomCat 将TomCat安装为Window...
PSI Probe是Lambda Probe的社区驱动分支,使用相同的开源许可...