【Linux】Centos9设置ActiveMq开机自启功能

2024-05-15 20:52

本文主要是介绍【Linux】Centos9设置ActiveMq开机自启功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

配置流程:

1. 创建 Systemd 服务文件。这个文件通常存放在/usr/lib/systemd/system/目录下,命名为 activemq.service。

#先创建文件,然后编辑:
sudo touch /usr/lib/systemd/system/activemq.service
sudo vim /usr/lib/systemd/system/activemq.service

2. 在文件中添加以下内容:

[Unit]
Description=Apache ActiveMQ
After=network.target[Service]
Type=forking
Environment="JAVA_HOME=/mrefuel/jdk1.8.0_181"
Environment="JAVACMD=$JAVA_HOME/bin/java"
ExecStart=/path/to/activemq/bin/activemq start #ExecStart 和 ExecStop 中的路径需要替换为你的 ActiveMQ 安装路径。
ExecStop=/mrefuel/activemq/bin/activemq stop
Restart=on-failure #指定了在失败时自动重启服务。
RestartSec=10 #设置了重启间隔为 10 秒。
User=root #User 和 Group 应该是运行 ActiveMQ 的用户和组。如果没有特定用户,可以创建一个或使用默认用户。
Group=root[Install]
WantedBy=multi-user.target

3. 重新加载 Systemd 配置

sudo systemctl daemon-reload

4. 启用 ActiveMQ 服务开机自启动

sudo systemctl enable activemq

5. 启动 ActiveMQ 服务

sudo systemctl start activemq

6. 检查服务状态

sudo systemctl status activemq# 手动重启 
# sudo systemctl restart activemq

7.如何停止自启动

sudo systemctl disable activemq
sudo systemctl stop activemq
sudo systemctl daemon-reload

遇到的问题:

  • 此问题在自己搭建的虚拟机中出现,阿里云服务器完成以上步骤即可成功。

1. 执行 sudo systemctl start activemq,出现以下报错。

Job for activemq.service failed because the control process exited with error code.
See "systemctl status activemq.service" and "journalctl -xeu activemq.service" for details.

2. 使用命令排查问题,发现以下报错

  • 执行 systemctl status activemq.service 发现运行失败
  • 再执行 journalctl -xeu activemq.service 查看详细的失败原因
5月 14 09:55:35 localhost.localdomain systemd[191750]: activemq.service: Failed to locate executable /path/to/activemq/bin/activemq: Permission denied
░░ Subject: 进程 /path/to/activemq/bin/activemq 无法执行
░░ Defined-By: systemd
░░ Support: https://access.redhat.com/support
░░ 
░░ 进程 /path/to/activemq/bin/activemq 无法被执行并已失败。
░░ 
░░ 该进程返回的错误代码为 ERRNO。

3. 怀疑是权限问题,进行排查

#根据文件权限显示,activemq 脚本具有执行权限 (rwxr-xr-x),并且所有者是 root 用户和 root 组。
ls -l /path/to/activemq/bin/activemq
-rwxr-xr-x. 1 root root 21452  8月 22  2023 /path/to/activemq/bin/activemq
#sudo chmod +x /path/to/activemq/bin/activemqls -ld /path/to/activemq/bin/
#sudo chmod +x /path/to/activemq/bin/

4. 如果权限已经正确设置,但仍然出现权限被拒绝的错误,那么可能是由于 SELinux 或其他安全性机制导致的。

这里我直接做了 sudo setenforce 0 操作,执行 sudo systemctl start activemq 发现服务成功启动。

  • 检查 SELinux 配置:检查 SELinux 的配置是否会影响到 ActiveMQ 的执行。你可以通过运行 sestatus 命令来查看 SELinux 的状态,以及通过 /etc/selinux/config 文件来查看 SELinux 的配置。

  • 临时禁用 SELinux:尝试临时禁用 SELinux,然后重新启动 ActiveMQ,看看问题是否仍然存在。你可以使用以下命令来临时禁用 SELinux:

    sudo setenforce 0
    
  • 检查其他安全性机制:除了 SELinux 外,还有其他安全性机制可能会导致权限问题。确保你检查了系统中是否还有其他安全性机制,并且了解它们是否会影响到 ActiveMQ 的执行。

5. 检查 SELinux 的日志,查看它为什么阻止了 ActiveMQ 的操作。SELinux 的日志通常位于 /var/log/audit/audit.log 文件中。

type=AVC msg=audit(1715656532.025:18834): avc:  denied  { ioctl } for  pid=204690 comm="activemq" path="/path/to/activemq/bin/activemq" dev="dm-0" ino=35441443 ioctlcmd=0x5401 scontext=system_u:system_r:init_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file permissive=1
type=SYSCALL msg=audit(1715656532.025:18834): arch=c000003e syscall=16 success=no exit=-25 a0=3 a1=5401 a2=7ffde2f5c190 a3=0 items=0 ppid=1 pid=204690 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="activemq" exe="/usr/bin/bash" subj=system_u:system_r:init_t:s0 key=(null)ARCH=x86_64 SYSCALL=ioctl AUID="unset" UID="root" GID="root" EUID="root" SUID="root" FSUID="root" EGID="root" SGID="root" FSGID="root"
type=PROCTITLE msg=audit(1715656532.025:18834): proctitle="(activemq)"
  • 根据日志,可以看到 SELinux 拒绝了 ActiveMQ 进程对 /path/to/activemq/bin/activemq 文件的 ioctl 操作。这可能是导致 ActiveMQ 无法启动的原因之一。
  1. 修改 SELinux 策略:针对 ActiveMQ 执行以下命令,允许它执行所需的 ioctl 操作:
sudo semanage fcontext -a -t bin_t "/path/to/activemq/bin/activemq"
sudo restorecon -v "/path/to/activemq/bin/activemq"
  1. 重新启用 SELinux:完成上述步骤后,建议重新启用 SELinux,而不是将其保持在 permissive 模式下。你可以执行以下命令:
sudo setenforce 1
  • 再执行 sudo systemctl start activemq 问题已解决,配置成功。

这篇关于【Linux】Centos9设置ActiveMq开机自启功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992896

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

基于SpringBoot实现文件秒传功能

《基于SpringBoot实现文件秒传功能》在开发Web应用时,文件上传是一个常见需求,然而,当用户需要上传大文件或相同文件多次时,会造成带宽浪费和服务器存储冗余,此时可以使用文件秒传技术通过识别重复... 目录前言文件秒传原理代码实现1. 创建项目基础结构2. 创建上传存储代码3. 创建Result类4.