社区编辑申请
注册/登录
图解 Apache 与 Tomcat 安装和配置指南
运维
在本文中,我们将向您展示如何在 Ubuntu 上安装和配置 Tomcat 10,以及如何使用 mod_jk 连接器将其与 Apache HTTP Server 集成。

Apache Tomcat 是一个开源Web 服务器和 servlet 容器,用于部署和服务 Java Web 应用程序。大多数现代 Java Web 框架都基于 servlet,例如 JavaServer Faces、Struts、Spring 等。

Apache Tomcat 还默认在 8080 端口上提供了一个 HTTP 连接器,即 Tomcat 也可以用作 HTTP 服务器。但是 Tomcat 的性能不如 Apache HTTP 服务器等指定 Web 服务器的性能。

在大多数生产中,Tomcat 与 Apache HTTP Server 结合使用,其中 Apache HTTP Server 处理 html、图像等静态内容,并将对动态内容的请求转发给 Tomcat。

本安装和配置指南适用于 Ubuntu 上带有 Tomcat 10 的 Apache。

1.安装Java

首先,像往常一样,更新你的包:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt update

您必须在系统上安装 Java 才能运行 Tomcat 服务器。Tomcat 10 需要在您的系统上安装 Java SE 8 或更高版本。运行以下命令并安装 OpenJDK 11 JDK 包:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install openjdk-11-jdk

检查当前活动的 Java 版本:

linuxmi@linuxmi:~/www.linuxmi.com$ java -version

输出如下:

openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

2.创建Tomcat系统用户

在root用户下运行 Tomcat 服务器存在安全风险。我们建议创建单独的用户帐户来运行 Tomcat 服务器。

以下命令将在您的系统上创建一个名为tomcat的用户和组:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat

3. 安装和配置 Apache Tomcat 10

Tomcat 是一个独立于平台的工具,只要安装了 Java,安装过程就很简单。您只需要从官网下载所需的版本,然后在您的文件系统上解压即可。

现在从官方 Tomcat 下载页面下载最新的 Tomcat 二进制版本。

linuxmi@linuxmi:~/www.linuxmi.com$ wget https://downloads.apache.org/tomcat/tomcat-10/v10.0.17/bin/apache-tomcat-10.0.17.tar.gz

下载完成后,将 tar 文件解压缩到 /opt/tomcat 目录:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1

接下来,设置正确的文件权限:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo chown -R tomcat:tomcat /opt/tomcat/
linuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod -R u+x /opt/tomcat/bin

您应该在 Tomcat 服务器中为 Web 应用程序管理器创建一个用户。必须设置新用户帐户才能使用 Apache Tomcat Web 应用程序管理器。

为此,请 tomcat-users.xml 在编辑器中编辑文件:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /opt/tomcat/conf/tomcat-users.xml

将以下代码粘贴到<tomcat-users> </tomcat-users>标签中。确保更改PASSWORD admin 和 manager访问权限。

<!-- user manager can access only manager section -->
<role rolename="manager-gui" />
<user username="manager" password="PASSWORD" roles="manager-gui" />
<!-- user admin can access manager and admin section both -->
<role rolename="admin-gui" />
<user username="admin" password="PASSWORD" roles="manager-gui,admin-gui" />

Tomcat 提供了一个基于 Web 的管理控制台。默认的 Tomcat 服务器不允许远程访问 Manager 和 Host Manager 应用程序。您只能从 localhost 访问它们。为了允许远程连接,请按照以下说明进行操作。

创建一个文件 conf/Catalina/localhost/manager.xml:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /opt/tomcat/conf/Catalina/localhost/manager.xml

添加以下内容:

<Context privileged="true" antiResourceLocking="false" docBase="{catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddValve" allow="^.*$" />
</Context>

您还需要为 host-manager webapp 创建 xml 文件以允许远程主机访问。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /opt/tomcat/conf/Catalina/localhost/host-manager.xml

添加以下内容:

<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/host-manager">
<Valve className="org.apache.catalina.valves.RemoteAddValve" allow="^.*$" />
</Context>

4. 创建 Tomcat 系统服务

我们需要创建一个启动脚本来将 Tomcat 作为 systemd 服务进行管理。让我们创建一个tomcat.service文件。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /etc/systemd/system/tomcat.service

将以下内容粘贴到文件中:

[Unit]
Description=Tomcat
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"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target

重新加载 systemd 守护进程以应用更改:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl daemon-reload

将 Tomcat 设置为开机自动启动:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl enable tomcat

5. 安装 Apache HTTP 服务器

Apache 在 Ubuntu 的默认软件存储库中可用。要安装它,请键入以下命令:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install apache2

6. 配置 Tomcat 以使用 Apache

要将 Apache Tomcat 服务器进程与 Apache HTTP 服务器集成,我们需要 mod_jk 模块,它实现了 Tomcat 和 Apache 之间的接口,并结合了一些小步骤来根据我们的需要配置 Apache 和 Tomcat。

6.1 安装 mod_jk 模块

安装和配置mod_jk是让 Web 服务器和应用程序服务器协同工作的关键。所以,让我们安装它:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install libapache2-mod-jk

6.2 使用 Apache 和 Tomcat 配置 mod_jk。

您需要在 Tomcat 中启用 AJP 连接器,以便 Apache 服务器可以将请求重定向到 Tomcat。您是通过编辑 Tomcat 的server.xml文件来完成的。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /opt/tomcat/conf/server.xml

确保下面的 AJP 连接器处于活动状态且未被注释掉。

<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />

现在我们需要配置 Apache HTTP Server 来加载和初始化 JK 模块。

我们需要创建/etc/apache2/workers.properties文件。该文件定义了 Apache 可以向其传递请求的 Tomcat 'worker' 列表。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /etc/apache2/workers.properties

并将以下内容粘贴到文件中:

# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

接下来在主 Apache 配置文件中引用此文件apache2.conf:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /etc/apache2/apache2.conf

我们在最后添加这些行:

JkWorkersFile /etc/apache2/workers.properties
# Where to put jk shared memory
JkShmFile /var/log/apache2/mod_jk.shm
# Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[ %a %b %d %H:%M:%S %Y ] "

6.3 配置使用 Apache 管理的 URL

此时,您需要配置 Apache 以告诉它要处理哪些 URL 并将其移交给 Tomcat,以及您希望 Apache 自己处理哪些 URL。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /etc/apache2/sites-enabled/000-default.conf

DocumentRoot在条目下添加以下行。这样您就可以通过 Apache Web 服务器请求 JRS。

JkMount /examples worker1
JkMount /examples/ worker1

7. 如何验证它是否正常工作

重启 Apache 和 Tomcat 服务:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl restart apache2
linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl restart tomcat

启动服务器后,打开 Internet 浏览器并导航到 URL http://server_ip_address:8080。如果您看到与下图类似的页面,则表示 Tomcat 已正确安装。

验证 Apache HTTP Server 和 Tomcat 之间的集成是否正常工作的一种简单方法是请求 Tomcat 应提供的示例文件之一。

将您的浏览器指向http://server_ip_address/examples/并运行一些示例应用程序。

责任编辑:庞桂玉 来源: Linux公社
相关推荐

2022-06-14 11:01:48

SpringBootTomcatUndertow

2022-06-12 10:55:48

AmbariApachePMC 成员

2022-06-27 15:25:08

架构模型治理

2022-06-16 10:14:51

LinuxEmacs编辑器

2022-06-13 12:43:13

Java模块

2022-05-10 15:24:34

KafkaZooKeeperKafka Raft

2022-06-21 14:30:16

Vim自定义Linux

2022-06-21 14:10:43

NIST网络安全

2022-06-17 18:32:54

开源大数据数据调度

2022-04-28 09:46:20

Nginx文件Linux

2022-05-23 10:45:34

DAYU200鸿蒙

2022-06-10 06:55:21

JustAuthSpring

2022-04-07 08:34:46

网络设备路由器WiFi

2022-03-02 10:58:06

CactiUbuntuLinux

2022-06-01 13:56:24

2022-04-25 10:34:19

云原生直播

2022-05-29 22:56:13

2022-06-02 09:01:36

2022-04-28 15:55:49

鸿蒙XTS认证测试

2022-05-26 07:42:22

Python编辑器VSCode

同话题下的热门内容

月活 12.8 亿的微信,海量请求下是如何防止崩溃的?电脑软件:推荐一款磁盘空间分析工具,太好用了!智能运维行业乱象:估值虚高、上市受阻、裁员频现将 Zeek 与 ELK 栈集成呵护你的眼睛-电脑护眼工具CareUEyes

编辑推荐

不做运维大冤种!锐捷乐享智能运维管理平台提供新解运维大牛万字自述:道尽十多年血泪史与转型自救路自从上了 Prometheus 监控,睡觉真“香”在阿里巴巴,我们如何先于用户发现和定位 Kubernetes 集群问题?日志系统成本飙升千万,吓得我赶紧把ES换成ClickHouse……
我收藏的内容
点赞
收藏

51CTO技术栈公众号