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

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.lryc.cn/news/208822.html

相关文章:

  • 论文阅读——ELECTRA
  • Android开发知识学习——HTTP基础
  • 51单片机的hello world之点灯
  • Django 实战开发(一)项目搭建
  • Unity把余弦值转成弧度和角度
  • debian、ubuntu打包deb包工具,图形界面deb打包工具mkdeb
  • 微信小程序如何使用地球半径计算两组经纬度点之间的距离(自身位置与接口返回位置)【上】
  • postgis ST_ClipByBox2D用法
  • 【MyBatis Plus】深入探索 MyBatis Plus 的条件构造器,自定义 SQL语句,Service 接口的实现
  • 基于AI与物联网技术的智能视频监控系统架构剖析
  • mysql 基础知识
  • Flink CDC 2.0 主要是借鉴 DBLog 算法
  • win10 + VS2017 编译libjpeg(jpeg-9b)--更新
  • 使用pycharm远程调试
  • rust学习
  • GCC、g++、gcc的关系
  • IP应用场景API的反欺诈潜力:保护在线市场不受欺诈行为侵害
  • 常用的主流音乐编曲软件有哪些?
  • 面试题:为什么HashMap 使用的时候指定容量?
  • 基于C/C++的UG二次开发流程
  • “第五十二天”
  • Lvs+Nginx+NDS
  • JavaWeb——Servlet原理、生命周期、IDEA中实现一个Servlet(全过程)
  • Android 12.0 ota升级之SettingsProvider新增和修改系统数据相关功能实现
  • python---for循环结构中的else结构(是同级关系)
  • XLua中lua读写cs对象的原理
  • 新手小白怎么选择配音软件?
  • linux查看硬件信息命令
  • TSINGSEE青犀省级高速公路视频上云联网方案:全面实现联网化、共享化、智能化
  • 知识图谱相关的操作