CentOS 安装 tomcat 并设置 开机自启动

CentOS 安装 tomcat 并设置 开机自启动

下载jdk和tomcat

curl https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
curl https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.15/bin/apache-tomcat-10.1.15.tar.gz

解压jdk和tomcat并修改目录名称

tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local/
tar -zxvf apache-tomcat-10.1.15.tar.gz -C /usr/local/
mv /usr/local/jdk-21.0.1/ /usr/local/jdk-21
mv /usr/local/apache-tomcat-10.1.15 /usr/local/tomcat-10

设置tomcat.pid文件生成

其中tomcat.pid文件本身不存在,设置之后,启动Tomcat会自动生成

vi /usr/local/tomcat-10/bin/catalina.sh
# 定位文件第140行找到 PRGDIR=`dirname "$PRG"` 并在该行下追加以下内容
CATALINA_PID="/usr/local/tomcat-10/bin/tomcat.pid"

tomcat

配置环境变量

vi /etc/profile.d/my_env.sh
export JAVA_HOME=/usr/local/jdk-21export CATALINA_BASE=/usr/local/tomcat-10
export CATALINA_HOME=/usr/local/tomcat-10export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_BASE/bin:$CATALINA_HOME/bin
source /etc/profile.d/my_env.sh

编写开机启动服务

cd /usr/lib/systemd/system
vi tomcat-10.service
[Unit]Description=tomcat-serverAfter=network.target[Service]Type=forking# 因为服务启动时,是不会读取全局变量的(/etc/profile),因此全局变量中配置的属性是读取不到的需要注意。# 所以需要在这里配置Tomcat 启动需要的JDK,指定JDK路径Environment="JAVA_HOME=/usr/local/jdk-21"# 此文件是在第一步时配置的,如果type是后台运行,建议将此属性加上,指定pid。PIDFile=/usr/local/tomcat-10/bin/tomcat.pid# 需要注意的就是下面这一行,如果路径错了,那就无法自动启动,下面会有图文解释# 整个 ExecStart 脚本,相当于是让系统开机时自动帮你在终端输入等号后面的命令ExecStart=/usr/local/tomcat-10/bin/startup.shExecReload=/usr/local/tomcat-10/bin/shutdown.shExecReload=/bin/kill -s HUP $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target
systemctl daemon-reload
systemctl start tomcat-10.service 
systemctl enable tomcat-10.service 

设置防火墙端口放行

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

重启系统

reboot
浏览器访问测试

http://服务器IP地址:8080

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/174667.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

homeassistant安装HACS应用商店

环境:iStoreOS,已在商店中安装homeassistant。 homeassistant在iStoreOS中是以docker容器运行的。 1、进入终端,输入账号和密码(默认:root,password) 查看容器:docker ps 进入容…

3.3每日一题(变量可分离方程)

1、判断类型选方法:等式中分别提一个x、y出来,形成了x与y相乘的等式;为变量可分离类型 2、不一定非得把y解出来,化成上述的等式即可(为隐函数的方程解) 注:等式不定积分后记得+一个…

大数据-Storm流式框架(七)---Storm事务

storm 事务 需求 storm 对于保证消息处理,提供了最少一次的处理保证。最常见的问题是如果元组可以被 重发,可以用于计数吗?不会重复计数吗? strom0.7.0 引入了事务性拓扑的概念,可以保证消息仅被严格的处理一次。因此可…

【电路笔记】-交流电感和感抗

交流电感和感抗 文章目录 交流电感和感抗1、概述1.1 电感1.2 电感器 2、频率特性2.1 电抗(Reactance)2.2 相移2.3 感应现象 3、RL滤波器4、总结 在之前有 交流电阻的文章中,我们已经看到电阻器在正常频率下的直流或交流状态下的行为是相同的。 然而,其他…

【机器学习合集】人脸表情分类任务Pytorch实现TensorBoardX的使用 ->(个人学习记录笔记)

人脸表情分类任务 注意:整个项目来自阿里云天池,下面是开发人员的联系方式,本人仅作为学习记录!!!该文章原因,学习该项目,完善注释内容,针对新版本的Pytorch进行部分代码…

山东大学开发可解释深度学习算法 RetroExplainer,4 步识别有机物的逆合成路线

逆合成旨在找到一系列合适的反应物,以高效合成目标产物。这是解决有机合成路线的重要方法,也是有机合成路线设计的最简单、最基本的方法。 早期的逆合成研究多依赖编程,随后这一工作被 AI 接替。然而,现有的逆合成方法多关注单步逆…

机器学习第一周

一、概述 机器学习大致会被划分为两类:监督学习,无监督学习 1.1 监督学习 监督学习其实就是,给计算机一些输入x和正确的输出y(训练数据集),让他总结x->y的映射关系,从而给他其他的输入x&a…

【算法】动态规划之LeetCode 53.最大子数组和

目录 文章目录 **目录**📑前言1.题目描述2. 动态规划法 📑文章末尾 📑前言 本文主要是leetcode题解析,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁…

ThreadLocal 会出现内存泄漏吗?

ThreadLocal ThreadLocal 是一个用来解决线程安全性问题的工具。它相当于让每个线程都开辟一块内存空间,用来存储共享变量的副本。然后每个线程只需要访问和操作自己的共享变量副本即可,从而避免多线程竞争同一个共享资源。它的工作原理很简单&#xff0…

基于Ubuntu20.04安装ROS系统

文章目录 一、ROS简介二、ROS安装三、ROS安装测试四、安装问题解决1. sudo rosdepc init:找不到命令2. ERROR: cannot download default sources list from...3. Command roscore not found...4. Resource not found: roslaunch... 一、ROS简介 ROS是用于编写机器人…

[ubuntu系统下的文本编辑器nano,vim,gedit,文件使用,以及版本更新问题]

文本编辑器概要 在Ubuntu系统下,有许多文本编辑器可供选择,每个编辑器都有其独特的特性和用途。以下是一些常见的文本编辑器: Gedit: 这是Ubuntu默认的文本编辑器,它简单易用,适合基本的文本编辑任务。 安…

取石子

每一堆数量都>1的话可以把合并操作和取石子看成一种操作,总操作数就是sumn-1,为奇数就是Alice先手必胜,哪怕有一堆是2,Bob取后变为1,Alice也可以通过合并操作让1变成>1的数 可以分成两大板块a、b, a中方石子个数…

haproxy高可用集群

高可用集群 Haproxy :他是常用的负载均衡软件 Nginx 支持四层转发,和七层转发 Haproxy 也可以四层和七层转发 LVS的DR发和nat是基于四层还是七层的转? 都基于是四层转发&#xff08…

[SHCTF 2023 校外赛道] pwn

有19道题这么多,不过基本是入门题,都是在骗新生,看这么容易快来PWN吧! week1 四则计算器 这里用危险函数gets读入有个溢出.而且PIE也没开,地址是固定的.而且有后门.直接溢出到ret写上后门即可. from pwn import *p remote(112.6.51.212, 31473) context(archamd64, log_lev…

#stm32整理(二)关于MDK的编译过程及文件类型全解

参考野火开发指南如有侵权即刻删除,只是为了学习交流使用 1、编译 1、编译过程简介 (1)编译,MDK 软件使用的编译器是 armcc 和 armasm,它们根据每个 c/c 和汇编源文件编译 成对应的以“.o”为后缀名的对象文件 (Object Code&…

修改el-date-picker宽度

<div style"width: 100%"><el-date-pickerstyle"width:100%"v-model"value"type"datetimerange"start-placeholder"开始日期"end-placeholder"结束日期":default-time"[12:00:00]"value-forma…

Redis队列Stream

1 缘起 项目中处理文件的场景&#xff1a; 将文件处理请求放入队列&#xff0c; 一方面&#xff0c;缓解服务器文件处理压力&#xff1b; 另一方面&#xff0c;可以根据文件大小拆分到不同的队列&#xff0c;提高文件处理效率。 这是Java开发组Leader佳汇提出的文件处理方案&a…

hdlbits系列verilog解答(8位宽移位寄存器)-24

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 这项练习是module_shift移位寄存器的延伸。模块端口不是只有单个引脚,我们现在有以向量作为端口的模块,您将在其上附加线向量而不是普通线网数据。与 Verilog 中的其他位置一样,端口的向量长度不必与连接到它…

Go语言用Resty库编写的音频爬虫代码

目录 一、Go语言与Resty库简介 二、音频爬虫的实现 1、确定抓取目标 2、使用Resty发送HTTP请求 3、解析响应数据 4、下载音频文件 5、并发下载音频文件 三、注意事项 总结 随着互联网的飞速发展&#xff0c;网络爬虫逐渐成为数据获取和分析的重要工具。在音频领域&…