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

news2024/10/7 7:25:00

目录

  • 前言
  • 一、系统环境
  • 二、配置步骤
    • 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.coloradmin.cn/o/1826595.html

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

相关文章

【计算机网络仿真实验-实验2.4、2.5】静态路由、动态路由(RIP)

实验2.4 静态路由 1. 实验拓扑图 注意:有些同学不知道两个路由器之间如何用串行DCE(红线)相接,只需要为路由器分别增加新的HWIC-2T接口卡就好了 不知道如何添加物理接口的,可以查看本人计算机网络专栏中【计算机网络仿真实验——实验准备】…

JDK8-17新特性

一、JDK8新特性:Lambda表达式 1.Lambda表达式及其使用举例 Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力…

Elasticsearch 认证模拟题 - 21

一、题目 写一个查询,要求查询 kibana_sample_data_ecommerce 索引,且 day_of_week、customer_gender、currency、type 这 4 个字段中至少两个以上。 1.1 考点 Boolean 1.2 答案 GET kibana_sample_data_ecommerce/_search {"query": {&q…

湘潭大学软件工程数据库2(题型,复习资源和计划)

文章目录 选择题关系范式事务分析E-R 图sql作业题答案链接(仅限有官方答案的版本)结语 现在实验全部做完了,实验和作业占比是百分之 40 ,通过上图可以看出来,重点是 sql 语言 所以接下来主要就是学习 sql 语句怎么书写…

AirPlay技术规范及认证资讯

AirPlay是Apple开发的一种无线技术,允许用户将音频、视频或图片从iOS设备、Mac电脑或其他支持AirPlay的设备无线传输到支持AirPlay的接收器设备上,例如智能电视或音响系统。这项技术基于Wi-Fi网络,提供了一种便捷的方式来共享媒体内容。AirPl…

GitLab教程(二):快速上手Git

文章目录 1.将远端代码克隆到本地2.修改本地代码并提交到远程仓库3.Git命令总结git clonegit statusgit addgit commitgit pushgit log 首先,我在Gitlab上创建了一个远程仓库,用于演示使用Gitlab进行版本管理的完整流程: 1.将远端代码克隆到本…

C++ 18 之 函数的重载

c18函数的重载.cpp #include <iostream> #include <string.h> using namespace std;void fun4(int a) {cout << "int a: "<< a << endl; } void fun4(double a) {cout << "double a: " << a << endl; }v…

嵌入式学习——Linux高级编程复习(UDP编程)——day43

1. UDP编程——函数接口 1.1 socket 1. 定义 int socket(int domain, int type, int protocol); 2. 功能 创建一个用来进程通信的套接字,返回文件描述符 3. 参数 domain:AF_INET IPv4协议族 type:SOCK_STREAM 流式套接字 tcp传输协议…

MYSQL八、MYSQL的SQL优化

一、SQL优化 sql优化是指&#xff1a;通过对sql语句和数据库结构的调整&#xff0c;来提高数据库查询、插入、更新和删除等操作的性能和效率。 1、插入数据优化 要一次性往数据库表中插入多条记录&#xff1a; insert into tb_test values(1,tom); insert into tb_tes…

Day52 代码随想录打卡|二叉树篇---二叉搜索树中的众数

题目&#xff08;leecode T501&#xff09;&#xff1a; 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 如果树中有不止一个众数&#xff0c…

Radis初阶 Radis基本命令与在Springboot中访问Radis

阿里网盘链接 文章目录 初始NoSQL数据库对比MySQL数据库从结构方面&#xff1a;从关系方面&#xff1a;从查询方式&#xff1a;从事物方面&#xff1a; Redis入门Redis数据结构访问Radis通用命令&#xff08;tab键&#xff1a;自动补全&#xff09;KEYSDELEXISTSEXPIRETTL Str…

硬件SPI读写W25Q64

硬件SPI读写W25Q64 接线图&#xff08;和软件SPI一样&#xff09; 使用SPI1&#xff0c;SCK&#xff0c;接PA5&#xff1b;MISO&#xff0c;接PA6&#xff1b;MOSI&#xff0c;接PA7&#xff1b;NSS&#xff0c;可接PA4。 接线图对应&#xff1a;PA5接CLK引脚&#xff0c;PA6…

军事武器3D数字化交互展示创作平台大大降低成本

军事力量和装备是一个国家国防安全的重要支柱&#xff0c;这在全球范围内得到广泛认同&#xff0c;为了让入伍的新兵能快速熟悉和掌握武器装备操作流程&#xff0c;基于创新型的华锐3D云展平台工具&#xff0c;搭建的3D军事武器展示搭建编辑器&#xff0c;让部队的军事武器展示…

Apollo9.0 PNC源码学习之Control模块(一)—— 控制模块概览

0 前言 从planning的角度看control&#xff0c;首先需要了解的就是相关的数据接口&#xff0c;规划出的轨迹&#xff08;路径速度&#xff09;发给Control模块去执行 modules/planning/planning_component/planning_component.cc planning模块发布轨迹信息 planning_writer_ …

程序员基本功之git的使用

阿里网盘-资料链接 文章目录 git分布式版本控制工具git的基本概念开发过程中的问题常见的版本控制工具git分布式版本控制工具特点git系统所定制的若干目标git的工作流程图 GIT的安装和常用命令**创建本地git仓库步骤****本地git仓库的使用**git log详解 git分布式版本控制工具…

大模型系列:Prompt提示工程常用技巧和实践

前言 Prompt提示语是使用大模型解决实际问题的最直接的方式&#xff0c;本篇介绍Prompt提示工程常用的技巧&#xff0c;包括Zero-Shot、Few-Shot、CoT思维链、Least-to-Most任务分解。 内容摘要 Prompt提示工程简述Prompt的一般结构介绍零样本提示Zero-Shot少样本提示Few-Sho…

Ubuntu 18.04下普通用户的一次提权过程

Ubuntu 18.04下普通用户的一次提权过程 一.背景介绍:二.主要调试过程:三.相关命令:1.设置BMC密码,获取BMC IP2.找一台ubuntu搭建TFTP服务,用来替换grub.cfg文件3.从调试服务器的/boot/grub/grub.cfg中提取出recovery mode的配置,简化并生成新的配置文件grub.cfg,放在tftp服务的…

从零开始学习RecyclerView

1、实现最简单的一个控件列表 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width&qu…

Maven常用命令介绍(Ⅰ)

基本命令 Maven生命周期 Maven的生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的&#xff0c;这意味着生命周期本身不做任何实际的工作&#xff0c;生命周期只是定义了一系列的阶段&#xff0c;并确定这些阶段的执行顺序。而在执行这些阶段时&#xff0c;…

08 SpringBoot 自定定义配置

SpringBoot自定义配置有三种方式&#xff1a; 使用PropertySource进行自定义配置 使用ImportResource进行自定义配置 使用Configuration进行自定义配置 PropertySource ​ 如果将所有的配置都集中到 application.properties 或 application.yml 中&#xff0c;那么这个配置文…