Linux-Tomcat服务配置到系统服务

目录

  • 前言
  • 一、系统环境
  • 二、配置步骤
    • step1 了解环境的安装路径
    • step2 配置生成tomcat.pid文件
    • step3 配置tomcat.service文件
  • 三、测试systemctl命令管理Tomcat服务
    • 3.1 systemctl命令启动Tomcat服务
    • 3.2 systemctl命令查看Tomcat服务
    • 3.3 systemctl命令关闭Tomcat服务
    • 3.4 systemctl命令重启Tomcat服务
    • 3.5 systemctl命令开启Tomcat服务开机自启
    • 3.6 systemctl命令关闭Tomcat服务开机自启
  • 四、问题分析
  • 参考文献
  • 总结

前言

本篇文章介绍如何将Tomcat服务配置到系统服务,实现使用systemctl命令管理Tomcat服务。

一、系统环境

  • 虚拟机版本:VMware® Workstation 15 Pro
  • Linux镜像文件:CentOS-7-x86_64-Minimal-1804.iso
  • 主机系统:Windows 11 家庭中文版
  • 主机系统类型:64 位操作系统, 基于 x64 的处理器
  • 远程连接工具:MobaXterm中文版本

二、配置步骤

step1 了解环境的安装路径

JDK安装路径:/export/server/jdk
Tomcat安装路径:/export/server/tomcat
读者根据自己的安装路径进行配置

step2 配置生成tomcat.pid文件

为了配置tomcat.service文件的[Service]区块的PIDFile字段,需要配置启动Tomcat时自动生成tomcat.pid文件,此文件保存的是运行Tomcat时的进程号。

vi /export/server/tomcat/bin/catalina.sh添加以下内容
CATALINA_PID=$CATALINA_BASE/tomcat.pid

在这里插入图片描述
启动Tomcat服务,其自动会在tomcat的安装路径生成tomcat.pid文件(这里是/export/server/tomcat/)
当然,可以自定义生成路径,例如CATALINA_PID=自定义路径

step3 配置tomcat.service文件

在/usr/lib/systemd/system/目录下新建tomcat.service文件

vi /usr/lib/systemd/system/tomcat.service

添加以下内容

[Unit]
Description=Tomcat service
After=network.target[Service]
Type=forking
Environment="JAVA_HOME=/export/server/jdk/"
User=tomcat
Group=tomcat
PIDFile=/export/server/tomcat/tomcat.pid
ExecStart=/export/server/tomcat/bin/startup.sh
ExecStop=/export/server/tomcat/bin/shutdown.sh
ExecReload=/usr/bin/kill -s SIGHUP $MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.target

tomcat.service文件分为三个区块,[Unit]、[Service]、[Install]

  • [Unit]区块:定义服务的启动顺序和服务的依赖关系
    Description:服务的描述字段
    After:服务的启动顺序。例如After=network.target表示系统网络服务启动后再启动服务

  • [Service]区块:定义服务的启动行为
    Type:服务的启动类型
    Type=simple(默认), 表示以ExecStart字段启动的进程为主进程
    Type=forking , 表示以ExecStart字段启动时,创建一个子进程并作为服务的主进程(后台运行)
    Type=notify , 表示启动服务结束后发出通知信号,Systemd再启动其他服务
    Environment:服务的运行的环境,需要借助JDK的环境运行。(此字段必须配置)
    User:服务的所属用户
    Group:服务的所属用户组
    PIDFile:服务的pid文件
    ExecStart:启动服务的程序文件(必须写绝对路径)
    ExecStop:关闭服务的程序文件(必须写绝对路径)
    ExecReload:服务重启的程序文件,这里借助系统提供的kill命令实现服务的重启
    PrivateTmp:服务是否创建临时的私有空间

  • [Install]区块:定义如何安装这个配置文件,即怎样做到开机启动
    WantedBy:服务依赖的 Target

配置完成后,重载系统守护进程

systemctl daemon-reload

三、测试systemctl命令管理Tomcat服务

3.1 systemctl命令启动Tomcat服务

systemctl start tomcat.service

3.2 systemctl命令查看Tomcat服务

systemctl status tomcat.service

在这里插入图片描述

3.3 systemctl命令关闭Tomcat服务

systemctl stop tomcat.service

在这里插入图片描述

3.4 systemctl命令重启Tomcat服务

systemctl restart tomcat.service

在这里插入图片描述

3.5 systemctl命令开启Tomcat服务开机自启

systemctl enable tomcat.service

在这里插入图片描述

3.6 systemctl命令关闭Tomcat服务开机自启

systemctl disable tomcat.service

在这里插入图片描述

四、问题分析

在这里插入图片描述
出现这个问题的原因是配置tomcat.service的时候没有配置好[Service]区块的Environment字段

参考文献

[1] https://blog.csdn.net/cshongye/article/details/120261915
[2] https://blog.csdn.net/arv002/article/details/121779213

总结

道阻且长,行则将至!

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

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

相关文章

【python基础实例】从文件命名中提取特定信息(数字、字母等)

【python基础实例】从文件命名中提取特定信息(数字、字母等) 在处理文件和数据时,我们经常需要从文件名中提取特定的信息,如日期、序号或项目标识符。Python提供了强大的字符串处理功能,可以轻松完成这些任务。本文将…

Python 学习 第二册 第12章 图形界面

----用教授的方法学习。 目录 12.1 创建 GUI 示例应用程序 12.1.1 初探 12.1.2 布局 12.1.3 事件处理 12.1.4 最终的程序 12.1 创建 GUI 示例应用程序 这个微型文本编辑器的需求如下。 让用户能够打开指定的文本文件。 让用户能够编辑文本文件。 让用户能够保存文本…

浪潮信息MUPR自研专利 保障服务器内存运行的可靠性和高效性

在数字化转型的大潮中,服务器作为支撑企业业务运行的核心设备,其稳定性和可靠性显得尤为重要。然而,传统的内存故障预警修复技术往往存在反应滞后、误报率高等问题,难以满足日益增长的数据处理和存储需求。针对这一问题&#xff0…

C++初学者指南第一步---4.基本类型

C初学者指南第一步—4.基本类型 文章目录 C初学者指南第一步---4.基本类型1.变量声明2.快速概览Booleans 布尔型Characters 字符型Signed Integers 有符号整数Unsigned Integers 无符号整数Floating Point Types 浮点数类型 3.Common Number Representations 常用的数字表示常用…

【数据结构】——常见排序

文章目录 一、 冒泡排序二、 选择排序三、插入排序四、 快速排序1. hoare版本2. 优化版本3. 前后指针法4. 非递归版本 五、 堆排序六、 希尔排序七、 归并排序1. 递归版本2. 非递归版本 八、 计数排序 在开始之前先准备一个交换数据的函数,排序会经常用到 //交换位置…

银河麒麟系统安装

新建虚拟机 选择典型下一步: 稍后安装操作系统 下一步 : 选择Linux Ubuntu 64位 下一步: 设置名称 选择一个虚拟机的位置进行下一步: 磁盘大小默认给20G 下一步: 点击完成 编辑虚拟机设置 点击CD/DVD(SATA) 使用IS…

Mysql数据库的锁机制

MySQL 中的锁可以按照粒度分为锁定整个表的表级锁(table-level locking)和锁定数据行的行级锁(row-level locking)表级锁开销小,加锁快,但是支持的并发度低,行级锁相反。 行锁 Innodb实现了以…

C#医院体检系统源码 PEIS源码 系统核心功能、特点、类型、设备对接-PACS放射科设备对接:DR、CT、MRI、钼靶。

C#医院体检系统源码 PEIS源码 系统核心功能、特点、类型、设备对接-PACS放射科设备对接:DR、CT、MRI、钼靶。 体检系统是为体检中心、医院体检科等体检机构专门开发的全流程管理系统。该系统通过软件实现检测仪器数据的自动提取,内置多级医生工作台,旨在…

每日一练:攻防世界:ewm

这道题我尝试了使用montagegaps解题,但是没有解出来,图片数量不是很多,可以尝试用PS直接拼图,但是这样学不到东西,我也就没尝试,直接看的官方WP 这段代码应该是改变工作目录到small,并且变量当…

基于springboot的宠物商城网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的宠物商城网站,java项目…

Linux C编译器从零开发二

自定义分词器 test.c #include <ctype.h> #include <stdarg.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <string.h>typedef enum {TK_PUNCT, // PunctuatorsTK_NUM, // Numeric literalsTK_EOF, // …

基于carsim的线控转向仿真(1)--carsim车辆模型目标角度跟踪

一、Rwa转向执行总成建模 Rwa包括齿轮齿条机构、转向组件以及转向执行电机&#xff1b;如下图&#xff0c;电机输出轴通过齿轮减速增扭后&#xff0c;再经过一个半径为rp的小齿轮&#xff0c;直接带动齿条左右移动。齿条的移动通过转向摇臂&#xff0c;带动车轮转动&#xff0c…

PySide(PyQt)实现鼠标画框局部放大

按住鼠标左键画框&#xff0c;裁切画面并局部放大&#xff0c;可以用来生成ROI 1、在QtDesigner中创建ui文件&#xff0c;命名为crop.ui&#xff1a; 2、自定义脚本ImageLabel.py &#xff1a; from PySide6.QtCore import Qt, QRect, Signal, QPoint from PySide6.QtGui impo…

Redis高并发高可用

1. 复制机制 在分布式系统中&#xff0c;为了解决单点问题&#xff0c;通常会将数据复制多个副本部署到其他机器&#xff0c;以满足故障恢复和负载均衡等需求。Redis提供了复制功能&#xff0c;实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础&#xff0c;后面的…

长亭网络通信基础

长亭笔试之前就已经学过一遍了 这算温故而知新吧 TCP/IP 首先我在这里默写一下之前的7层和4层 应用层 应 【表示层 数据格式转换 传 【会话层 …

课设--学生成绩管理系统(一)

欢迎来到 Papicatch的博客 文章目录 &#x1f349;技术核心 &#x1f349;引言 &#x1f348;标识 &#x1f348;背景 &#x1f348;项目概述 &#x1f348; 文档概述 &#x1f349;可行性分析的前提 &#x1f348;项目的要求 &#x1f348;项目的目标 &#x1f348;…

Android 蓝牙配对Settings应用里面的简要流程记录

Android 蓝牙配对Settings应用里面的简要流程记录 文章目录 Android 蓝牙配对Settings应用里面的简要流程记录一、前言二、Settings蓝牙配对的关键代码1、接收蓝牙请求的地方 AndroidManifest.xml2、BluetoothPairingRequest3、BluetoothPairingService4、BluetoothPairingDial…

宿舍用电管理模块一进三出的升级改造

宿舍用电管理模块一进三出石家庄光大远通电气有限公司产品在高校日常管理工作中,宿舍管理是一项重要工作。宿舍管理内容复杂,而且涉及学生的日常生活,意义重大。其中,学生宿舍内漏电,超负荷用电,违规用电等现象一直是困扰后勤管理的普遍问题。随着学生日常生活方式以及生活用品…

驱动开发(五):Linux内核定时器

驱动开发系列文章&#xff1a; 驱动开发&#xff08;一&#xff09;&#xff1a;驱动代码的基本框架 驱动开发&#xff08;二&#xff09;&#xff1a;创建字符设备驱动 驱动开发&#xff08;三&#xff09;&#xff1a;内核层控制硬件层 驱动开发&#xff08;四&#xff…

移动端超超超详细知识点总结(Part4)

rem基础 1. rem单位 rem (root em)是一个相对单位&#xff0c;类似于em&#xff0c;em是父元素字体大小。不同的是rem的基准是相对于html元素的字体大小。比如&#xff0c;根元素&#xff08;html&#xff09;设置font-size12px; 非根元素设置width:2rem;则换成px表示就是24p…