当前位置: 首页 > news >正文

在CentOS 7上安装Apache Tomcat 8的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

介绍

Apache Tomcat 是一个用于提供 Java 应用程序的 Web 服务器和 Servlet 容器。Tomcat 是由 Apache 软件基金会发布的 Java Servlet 和 JavaServer Pages 技术的开源实现。本教程涵盖了在 CentOS 7 服务器上安装和配置最新版本的 Tomcat 8 的基本步骤。

先决条件

在开始本指南之前,您应该在服务器上设置一个单独的非根用户帐户。您可以通过完成 CentOS 7 的初始服务器设置中的步骤 1-3 来学习如何做到这一点。我们将在本教程的其余部分中使用在此处创建的 demo 用户。

安装 Java

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

要使用 yum 安装 OpenJDK 7 JDK,请运行以下命令:

sudo yum install java-1.7.0-openjdk-devel

在提示时输入 y 继续安装 OpenJDK 7。

请注意,我们稍后需要配置 Tomcat 的 JAVA_HOME 目录的快捷方式可以在 /usr/lib/jvm/jre 找到。

现在 Java 已安装完成,让我们创建一个 tomcat 用户,该用户将用于运行 Tomcat 服务。

创建 Tomcat 用户

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

首先,创建一个新的 tomcat 组:

sudo groupadd tomcat

然后创建一个新的 tomcat 用户。我们将使该用户成为 tomcat 组的成员,其主目录为 /opt/tomcat(我们将在其中安装 Tomcat),并且其 shell 为 /bin/false(这样就没有人可以登录到该帐户):

sudo useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat

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

安装 Tomcat

目前安装 Tomcat 8 最简单的方法是下载最新的二进制发行版,然后手动配置它。

下载 Tomcat 二进制文件

在 Tomcat 8 下载页面找到最新版本的 Tomcat 8。在撰写本文时,最新版本是 8.5.37。在 Binary Distributions 部分下的 Core 列表中,复制 “tar.gz” 的链接。

使用 wget 将最新的二进制发行版下载到您的主目录:

首先,使用 yum 包管理器安装 wget

sudo yum install wget

然后,切换到您的主目录:

cd ~

现在,使用 wget 并粘贴链接来下载 Tomcat 8 存档,如下所示(您的镜像链接可能与示例不同):

wget https://www-eu.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.tar.gz

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

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

现在我们已准备好设置适当的用户权限。

更新权限

我们设置的 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

然后将 webappsworktemplogs 目录的所有权交给 tomcat 用户:

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

现在适当的权限已设置好,让我们设置一个 Systemd 单元文件。

安装 Systemd 单元文件

因为我们希望能够将 Tomcat 作为服务运行,我们将设置一个 Tomcat Systemd 单元文件。

通过运行以下命令创建并打开该单元文件:

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

粘贴以下脚本。您可能还希望修改 CATALINA_OPTS 中指定的内存分配设置:


# 用于 Tomcat 的 Systemd 单元文件[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target[Service]
Type=forkingEnvironment=JAVA_HOME=/usr/lib/jvm/jre
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=/bin/kill -15 $MAINPIDUser=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always[Install]
WantedBy=multi-user.target

保存并退出。此脚本告诉服务器以指定的设置作为 tomcat 用户运行 Tomcat 服务。

现在重新加载 Systemd 以加载 Tomcat 单元文件:

sudo systemctl daemon-reload

现在您可以使用以下 systemctl 命令启动 Tomcat 服务:

sudo systemctl start tomcat

通过输入以下命令检查服务是否成功启动:

sudo systemctl status tomcat

如果要启用 Tomcat 服务,使其在服务器启动时启动,请运行以下命令:

sudo systemctl enable tomcat

Tomcat 还没有完全设置好,但您可以通过在 Web 浏览器中输入您的域名或 IP 地址后跟 :8080 来访问默认的启动页面:

[secondary_label 在 Web 浏览器中打开:]
http://server_IP_address:8080

您将看到默认的 Tomcat 启动页面,以及其他信息。现在我们将深入了解 Tomcat 的安装。

配置 Tomcat Web 管理界面

为了使用 Tomcat 自带的管理 Web 应用程序,我们必须向我们的 Tomcat 服务器添加登录。我们将通过编辑 tomcat-users.xml 文件来实现这一点:

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

该文件中充满了描述如何配置文件的注释。您可能希望删除以下两行之间的所有注释,或者如果您想引用示例,可以将它们保留下来:

<tomcat-users>
...
</tomcat-users>

您将希望添加一个可以访问 manager-guiadmin-gui(Tomcat 自带的 Web 应用程序)的用户。您可以通过定义类似下面示例的用户来实现。确保将用户名和密码更改为安全的内容:

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

保存并退出 tomcat-users.xml 文件。

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

对于 Manager 应用程序,输入:

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

对于 Host Manager 应用程序,输入:

sudo vi /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

访问 Web 界面

现在 Tomcat 已经运行起来了,让我们在 Web 浏览器中访问 Web 管理界面。您可以通过访问服务器的公共 IP 地址,端口为 8080 来实现:

[secondary_label 在 Web 浏览器中打开:]
http://server_IP_address:8080

您将看到类似以下图像:

!Tomcat root

如您所见,有链接到我们为管理员用户配置的管理 Web 应用程序。

让我们来看看 Manager 应用程序,可通过链接或 http://server_IP_address:8080/manager/html 访问:

!Tomcat Web Application Manager

Web 应用程序管理器用于管理您的 Java 应用程序。您可以在这里启动、停止、重新加载、部署和取消部署。您还可以对应用程序运行一些诊断(例如查找内存泄漏)。最后,此页面底部提供有关服务器的信息。

现在让我们看看 Host Manager,可通过链接或 http://server_IP_address:8080/host-manager/html/ 访问:

!Tomcat Virtual Host Manager

从虚拟主机管理器页面,您可以添加虚拟主机以提供您的应用程序。

结论

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

相关文章:

在CentOS 7上安装Apache Tomcat 8的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 Apache Tomcat 是一个用于提供 Java 应用程序的 Web 服务器和 Servlet 容器。Tomcat 是由 Apache 软件基金会发布的 Java Servlet…...

深入理解分布式事务中的三阶段提交(3PC),什么是3PC,3PC原理是怎样?3PC的优化?

在上一篇文章中&#xff0c;我们详细介绍了分布式事务中的两阶段提交&#xff0c;以及知道了两阶段提交存在一定的问题 深入理解分布式事务中的两阶段提交&#xff08;2PC&#xff09;&#xff0c;什么是2PC&#xff0c;2PC原理是怎样&#xff1f;2PC有没有什么问题&#xff1…...

这款新的 AI 工具会消灭 ChatGPT 吗?

随着大型语言模型 (LLM) 的出现&#xff0c;ChatGPT迅速成为全球计算机用户的家喻户晓的名字。这款由 OpenAI 设计的深度学习聊天机器人以知识宝库而闻名——一部互联网百科全书。 继ChatGPT的脚步之后&#xff0c;许多其他生成式AI工具也纷纷涌现。 2023 年 3 月&#xff0c;一…...

谷粒商城实战笔记-214~219-商城业务-认证服务-验证码防刷校验

文章目录 一&#xff0c;验证码防刷校验1&#xff0c;第三方服务提供发送短信的接口2&#xff0c;登录服务提供给前端的接口 二&#xff0c;215-商城业务-认证服务-一步一坑的注册页环境三&#xff0c;商城业务-认证服务-异常机制四&#xff0c;217-商城业务-认证服务-MD5&…...

在华为服务器的openEuler系统中适配Pytorch调用NPU

服务器架构&#xff1a;aarch64 yolov7 和 mindyolo 二选一即可&#xff0c;yolov7是基于pytorch&#xff0c;mindyolo是基于mindspore 本文档基于CANN8.0RC3 , 刚发布比较新&#xff0c;如果有问题&#xff0c;可将CANN版本降低 导读 资料首页&#xff1a;https://www.hiasce…...

MVCC工作原理深入解析

一、事务概述 mysql事务是指一组命令操作&#xff0c;在执行过程中用来保证要么全部成功&#xff0c;要么全部失败。事务是由引擎层面来支持的&#xff0c;MyISM引擎不支持事务&#xff0c;InnoDB引擎支持事务。 事务具有ACID四大特性 原子性&#xff08;Atomicity&#xff0…...

使用html+css+js实现完整的登录注册页面

在这篇博客中&#xff0c;我们将讨论如何使用简单的 HTML 和 CSS 构建一个登录与注册页面。这个页面包含两个主要部分&#xff1a;登录界面和注册界面。我们还会展示如何通过 JavaScript 切换这两个部分的显示状态。 页面结构 我们将创建一个页面&#xff0c;其中包含两个主要…...

2024年8月16日(运维自动化 ansible)

一、回顾 1、mysql和python (1)mysql5.7 1.1不需要执行mysql_ssl_rsa_setup 1.2change_master_to 不需要get public key (2)可以使用pymysql非交互的管理mysql 2.1pymysql.connect(host,user,password,database,port) 2.2 cursorconn.cursor() 2.3 cursor.execute("creat…...

荣耀Magicbook x14 扩容1TB固态

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 固态硬盘规格 在官网查看加装固态硬盘的接口规格 https://www.honor.com/cn/laptops/honor-magicbook-x14-2023/ https://club.honor.com/cn/thread-2847379…...

Springboot整合全文检索引擎Lucene

文章目录 前言Lucene的介绍springboot项目中如何整合Lucene简单用法1. 引入依赖2. 其它用到的类2. 创建索引3. 简单搜索4. 更新索引5. 删除索引6. 删除全部索引 Springboot整合Lucene复杂搜索1. 同时标题和内容中查找关键词2. 搜索结果高亮显示关键词3. 分页搜索4. 多关键词联合…...

【深度学习】【语音】TTS, 如何使用Python分析WAV的采样率、比特深度、通道数

文章目录 使用Python分析WAV文件的属性与可视化简介所需环境代码解析可视化音频数据结论使用Python分析WAV文件的属性与可视化 WAV文件录音要求 为了确保录制的音频文件符合TTS模型训练的质量标准,请遵循以下录音要求: 采样率要求:44.1 kHz说明:采样率44.1 kHz(即每秒采样…...

Linux的安装和使用

Linux 第一节 Linux 优势 1. 开源 为什么这么多的的设备都选择使用 Linux&#xff1f;因为它是开源软件&#xff08;open source software&#xff09;&#xff0c;具有不同的含义。使用一个安全的操作系统工作变得必不可少的事&#xff0c;而 Linux 恰好满足了这个需求。因…...

查看一个exe\dll文件的依赖项

方法 使用一个Dependencies工具&#xff0c;检测exe文件的所有依赖项 工具使用 下载压缩包之后解压&#xff0c;解压后如下图所示 在命令行中运行Dependencies.exe程序会得到帮助菜单 查询某exe的所有依赖项&#xff0c;使用命令 Dependencies.exe -chain <查询文件> …...

高校科研信息管理系统pf

TOC springboot364高校科研信息管理系统pf 第1章 绪论 1.1 研究背景 互联网概念的产生到如今的蓬勃发展&#xff0c;用了短短的几十年时间就风靡全球&#xff0c;使得全球各个行业都进行了互联网的改造升级&#xff0c;标志着互联网浪潮的来临。在这个新的时代&#xff0c;…...

Linux 开机自动挂载共享文件设置

选择一个要共享的文件 点击确定 -> 确定 启动虚拟机 执行下面的命令 /YumSource 是我选择的共享文件夹&#xff0c;自行替换自已选择的文件夹 mkdir -p /mnt/hgfs cat >> /etc/fstab << EOF .host:/YumSource /mnt/hgfs fuse.vmhgfs-fuse allow_other defaul…...

c_cpp_properties.json、launch.json、 tasks.json

在 Visual Studio Code 中&#xff0c;c_cpp_properties.json、launch.json 和 tasks.json 是三个重要的配置文件&#xff0c;它们的作用如下&#xff1a; c_cpp_properties.json&#xff1a; 这个文件用于配置 C/C 扩展的 IntelliSense、编译器路径和包括路径等。它帮助 VS Co…...

mysql 一些知识点 面试用

mysql 1、4个隔离级别与3个现象2、快照读与当前读2.1 可重复读的情况下出现幻读问题的两种情况 3 数据库 常用引擎4、InnoDB存储引擎对MVCC的实现5、索引(重点)5.1 什么是索引5.2 索引的创建与删除5.2.1 查看表中有哪些索引5.2.2 添加索引5.2.3 删除索引 5.3 索引的分类5.4 树数…...

STM32之点亮LED灯

使用固件库实现LED点灯 LED灯&#xff1a; LED灯&#xff0c;是一种能够将电能转化为可见光的半导体器件 控制LED灯&#xff1a; LED灯的正极接到了3.3V&#xff0c;LED灯的负极接到了PA1&#xff0c;也就是GPIOA1引脚 只需要控制PA1为相对应的低电平&#xff0c;即可点亮对…...

Java 多线程练习2 (抽奖比较Runnable写法)

MultiProcessingExercise2 package MultiProcessingExercise120240814;import java.util.ArrayList; import java.util.Collections;public class MultiProcessingExercise1 {public static void main(String[] args) {// 需求&#xff1a;// 在此次抽奖过程中&#xff0c;抽奖…...

使用fastboot更新部分系统

使用fastboot更新部分系统 获取分区信息 > part list sunxi_flash 0Partition Map for UNKNOWN device 0 -- Partition Type: EFIPart Start LBA End LBA NameAttributesType GUIDPartition GUID1 0x00008000 0x000097c5 "boot-r…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...