Linux安装tomcat

2023-10-29

一、下载tomcat

打开tomcat下载页面,tomcat10下载页面

如果你 不想做代码的迁移工作,可以选择Tomcat9及其以下的版本。我们这里是为了安装Tomcat,选择Tomcat9作为演示的版本。

二、解压

将下载好的Tomcat上传到指定目录,并解压:

tar -zxvf apache-tomcat-9.0.58.tar.gz

打开对应目录如下图:

三、配置jdk环境变量

# 编辑配置文件
vim /etc/profile

# 输入命令,配置jdk环境变量
export JAVA_HOME=/opt/java/jdk-11
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH

按ESC,然后输入 :wq! 然后输入回车,保存修改的文件。再输入命令使刚才的修改立即生效:

# 使修改立即生效
source /etc/profile

检查jdk配置是否成功:

# 检查jdk版本
java -version

显示如下内容,代表java环境变量配置成功:

[root@Cent0S8-FTP apache-tomcat-9.0.58]# java -version
openjdk version “1.7.0_75”
OpenJDK Runtime Environment (build 1.7.0_75-b13)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)

如果没有生效,检查是否修改的配置文件是否粗心导致打错字了,或者将你的终端窗口重新打开即可。

四、配置Tomcat环境变量

# 配置Tomcat环境变量
export CATALINA_HOME=/opt/tomcat/apache-tomcat-9.0.58
export PATH=$PATH:$CATALINA_HOME/bin

五、启动Tomcat

在tomcat安装目录下的conf目录下,找到startup.sh脚本并启动:

我们看到了“Tomcat started”字样,大致代表着Tomcat已经启动了。至于是否成功,我们下面来检测。

六、检测Tomcat启动结果

1.检查java进程是否存在

ps -ef | grep java

结果如下:

2.查询端口是否有进程守护

netstat -anp | grep 8080

竟然没有任何结果。

3.关于防火墙:

#停止firewall
systemctl stop firewalld.service 
 
#开启firewall
systemctl start firewalld.service
 
#禁止firewall开机启动
systemctl disable firewalld.service 
 
#查看默认防火墙状态(关闭后显示not running,开启后显示running)
firewall-cmd --state 

开启的时候,可能报这个错:

Failed to start firewalld.service: Unit firewalld.service is masked.

可以使用一下命令尝试:

systemctl unmask firewalld.service

这部分参考:Linux安装tomcat,配置环境变量

我们查看防火墙列表:

 firewall-cmd --zone=public --list-ports

如果我们重新添加8080端口:

firewall-cmd --zone=public --add-port=8080/tcp --permanent

说明8080已经开通防火墙。

但是我们本地访问127.0.0.1:8080:

这就很尴尬了。想了各种办法都没有解决问题,最后想到了日志。我们到logs目录下找到catalina.out文件:

Exception in thread “main” java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader 1. r u n ( U R L C l a s s L o a d e r . j a v a : 355 ) a t j a v a . s e c u r i t y . A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( N a t i v e M e t h o d ) a t j a v a . n e t . U R L C l a s s L o a d e r . f i n d C l a s s ( U R L C l a s s L o a d e r . j a v a : 354 ) a t j a v a . l a n g . C l a s s L o a d e r . l o a d C l a s s ( C l a s s L o a d e r . j a v a : 425 ) a t s u n . m i s c . L a u n c h e r 1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher 1.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux安装tomcat 的相关文章

  • PIL 的 Image.show() 带来*两个*不同的查看器

    在 python shell 中处理图像时 我使用 image show 其中 image 是 Image 的实例 很久以前什么也没发生 但在定义了一个名为 xv 的 Mirage 符号链接后 我很高兴 最近几天 show 将显示 Imag
  • Apache 端口转发 80 到 8080 并访问 Apache (80) 中托管的应用程序,即 phpMyadmin 和 Tomcat (8080)

    我想访问托管在 tomcat 服务器 8080 中的应用程序 myapp 当前可以通过以下方式访问http example com 8080 myapp http example com 8080 myapp in http example
  • Linux中如何避免sleep调用因信号而中断?

    我在 Linux 中使用实时信号来通知串行端口中新数据的到达 不幸的是 这会导致睡眠呼叫在有信号时被中断 有人知道避免这种行为的方法吗 我尝试使用常规信号 SIGUSR1 但我不断得到相同的行为 来自 nanosleep 联机帮助页 nan
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 特殊字符被 tomcat cookie 解析器拒绝

    当我尝试将 cookie 从 android 代码发送到服务器端代码时 cookie 解析器不接受值字段中的 字符 即 tomcat 的 cookie 解析器在将 mime 标头解析为 cookie 时拒绝此字符 我尝试使用其他特殊字符代替
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • 为什么 OS X 和 Linux 之间的 UTF-8 文本排序顺序不同?

    我有一个包含 UTF 8 编码文本行的文本文件 mac os x cat unsorted txt foo foo 津 如果它有助于重现问题 这里是文件中确切字节的校验和和转储 以及如何自己生成文件 在 Linux 上 使用base64 d
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • 来自守护程序的错误响应:加入会话密钥环:创建会话密钥:超出磁盘配额

    我尝试在我的服务器上安装 docker 使用本教程 https docs docker com install linux docker ce ubuntu 我想远程运行 docker 镜像并使用 portainer Web 界面来管理一切
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win

随机推荐

  • 大学生团体天梯赛(第三届)

    题目地址 天梯赛 include
  • 与失眠危机说再见,AI为你带来安宁的夜晚

    不知道你有没有这样的感觉 忙碌了一天 明明已经很累了 可依旧辗转反侧 难以入眠 只能睁着眼睛熬到天亮 不是不想睡 也不是不累 只是睡不着 失眠的感觉实在是太痛苦了 特别是第二天早上常常顶着两只熊猫眼 干什么都提不起劲 身体仿佛要散架 为了拥
  • JS 实现队列

    通过JS实现队列的数据结构 首先是最普通的队列 先入先出 队列 function createQueue 队列 let queue 入队 const enQueue data gt if data null return queue pus
  • Python爬虫进阶必备

    XX街登陆密码加密 aHR0cDovL3NlbGxlci5jaHVjaHVqaWUuY29tL3NxZS5waHA cz0vVXNlci9pbmRleA 这个加密太简单了 五秒定位真的不是吹 所以直接来 输入错误的账号密码 发起登陆请求 可
  • SQL DATEPART()函数

    DATEPART datepart date 参数 datepart 是将为其返回 integer 的 date 日期或时间值 的一部分 下表列出了所有有效的 datepart 参数 用户定义的变量等效项是无效的 下表列出了所有 datep
  • 不涨薪的公司应不应该待?

    一个 5 年老员工 要求加薪 500 元遭拒 老板转头月薪 1 万招新人 结果 朋友出去转了一圈 找了个工资多 4000 的工作 立马就跳槽了 剩下 3 个人不干了 纷纷出去找工作 也找到了比之前多 4000 的工作 准备离职 老板一下子慌
  • 第十四章 网络

    一 客户端 服务器计算 Java提供ServerSocket类来创建服务器套接字 Socket类来创建客户端套接字 Internet 上的两个程序通过使用IO流的服务器套接字和客户端套接字进行通信 网络功能紧密地集成在Java中 Java
  • 情感分析学习笔记(3)——情感传播(sentiment propagation)

    sentiment propagation是我最近看论文最经常遇到的一个单词 并且网上这一块资源极其稀少 大部分都是新闻学或者心理学的论文 所以本文就谈谈我对情感传播的理解 Thanks to knowledge graph 让我能够百度的
  • gcov代码覆盖率使用gcov完成代码覆盖率的测试

    Gcov作为gnu gcc工作组件之一 是一款的免费的代码覆盖率测试工具 而且可以结合lcov生成美观的html的测试报表 本文介绍一些gcov的使用方法 基本原理 一些实际中可能会遇到的问题以及解决思路 Gcov的用法 1 1 编译 Gc
  • 深度思考:老生常谈的双亲委派机制,JDBC、Tomcat是怎么反其道而行之的?

    要说双亲委派机制 还得从类加载器的类型谈起 一 类加载器的类型 类加载器有以下种类 启动类加载器 Bootstrap ClassLoader 扩展类加载器 Extension ClassLoader 应用类加载器 Application C
  • 【杭电错题】#12青年歌手大奖赛_评委会打分——最优解

    题目 青年歌手大奖赛中 评委会给参赛选手打分 选手得分规则为去掉一个最高分和一个最低分 然后计算平均得分 请编程输出某选手的得分 Input 输入数据有多组 每组占一行 每行的第一个数是n 2
  • 编程小技巧:四舍五入

    今天跟大家分享的小技巧是跟浮点数取整相关 我们知道计算机在为浮点数取整是通常是向零取整 也就是说会自动将浮点数的小数部分忽略掉 例如下面的例子 float a 3 68 int b int a 我们将变量a取整后赋值给变量b 则变量b的值为
  • 善用用户自定义信号

    kill l可以看到用户自定义信号 然后就可以在程序中注册使用此信号 通过killall 10 xxx 就可以给程序发送用户自定义信号 kill 6 可以让程序产生段错误
  • 2024王道408数据结构 P144 T10

    2024王道408数据结构 P144 T10 思考过程 这题也比较简单 首先看题目 要求我们用先序遍历求二叉树中第k个结点的值 那道理我们都懂直接开始敲代码 先建立一个计数器i和一个char类型的值ch 用来暂时存放data值 当i k时就
  • Golang vs Rust 为后端选择哪种语言?

    如果您的项目涉及 Web 开发 可分发服务器 那么建议您选择 Go 编程部分非常简单 并发模型将为您提供很多帮助 但是如果你打算开发一个 CLI 应用程序 那么你应该选择 Rust 因为它包含字符串处理和库 话虽如此 Rust 并不是最容易
  • idea-eclipse风格-快捷键大全总结

    文章目录 IDEA 快捷键风格选型 idea 快捷键总结 idea常用快捷键 与eclipse风格冲突的快捷键 代码自动提示快捷键 快速创建方法的快捷键 与eclipse使用不同 复制类的完整路径名 包名 类名 idea自身的快捷键被ecl
  • 《C#入门经典(第6版)》之如何编写简单的桌面应用程序

    1本章内容 Visual Studio 2012 的基础知识 如何编写简单的控制台应用程序 如何编写简单的桌面应用程序 VS 是一个庞大的复杂产品 可能会使初学者望而生畏 但使 用它创建简单的应用程序是非常容易的 在本章开始使用VS 时 不
  • 【从零开始学习Linux】常用命令及操作

    哈喽 哈喽 大家好 我是你们的老朋友 保护小周 本期给大家带来的是 Linux 常用命令及操作 主要有三个分类 文件操作 目录操作 网络操作 创建文件 touch 创建目录 mkdir 删除文件或目录 rm 文本编辑器 vim 查看文件内容
  • 《企业管理学》——决策与决策方法知识点总结

    第四讲 决策与决策方法 管理的核心是决策 正确的决策决胜千里 错误的决策南辕北辙 一 决策的重要性 概念及内涵 一 决策的重要性 决策是管理者从事管理工作的基础 在管理过程中 管理者会面临各种各样的问题 它们都需要管理者予以解决 在实际管理
  • Linux安装tomcat

    一 下载tomcat 打开tomcat下载页面 tomcat10下载页面 如果你 不想做代码的迁移工作 可以选择Tomcat9及其以下的版本 我们这里是为了安装Tomcat 选择Tomcat9作为演示的版本 二 解压 将下载好的Tomcat