【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 问题已解决,配置成功。

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

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

相关文章

CSS 根据子元素选择父元素,并设置父元素的样式

场景举例&#xff1a;当子元素有增加了一个class时&#xff0c;需要影响其父元素的样式 可以使用":has"伪类来实现选择父元素的效果 <style>.parent:has(.child){background-color: #eee;}p{width:100px;border:1px solid #000;} </style> <body>…

Python3 笔记:for语句和while语句的区别

一般来说&#xff0c;循环次数确定的问题使用for循环或者while循环都可以解决&#xff0c;而循环次数不确定的问题只能使用while循环解决。 for语句的格式&#xff1a; for 循环变量 in 遍历对象: 语句 while语句的格式&#xff1a; while 条件表达式: 循环体 for…

人机协同中的比较、调整与反转

人机协同是指人与机器之间的合作关系&#xff0c;通过共同努力实现特定任务的目标。在人机协同中&#xff0c;存在着比较与调整的过程&#xff0c;这是为了实现更好的合作效果和任务完成质量。 比较是指人与机器在任务执行过程中对彼此的表现进行评估和比较。这可以通过对机器的…

DB类的学习

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; //引用三个命名空间 using System.Data.SqlClient; using System.Configuration;/// <summary> /// DB 的摘要说明 /// </summary> public class DB {p…

vue+ts+vite+pinia+less+echarts 前端可视化 实战项目

1.初始化前端 输入 npm init vuelatest 命令 然后 选择需要的插件2.构建完成后 在终端切换到vue-project文件夹下 npm install 下载依赖 3.下载 less样式 npm install less less-loader -D 4.下载axios npm install axios 5.下载echarts npm install echarts -S 6.引入中国…

JAVA 的数据类型

Java 是一种静态类型语言&#xff0c;这意味着在编译时&#xff0c;变量必须声明其数据类型。在 Java 中&#xff0c;数据类型可以分为两大类&#xff1a;基本数据类型&#xff08;又称原始数据类型&#xff09;和引用数据类型。本文将详细介绍这两种数据类型。 一、基本数据类…

战网国际服加速器用哪个好 暴雪战网好用加速器介绍

战网国际版&#xff0c;又称Battle.net环球版&#xff0c;是暴雪娱乐操盘的全球性游戏互动平台&#xff0c;它跨越地理界限&#xff0c;服务于全球游戏爱好者。与地区限定版本相异&#xff0c;国际版赋予玩家自由进入暴雪旗下众多经典游戏的权利&#xff0c;无论身处何方&#…

对比测评3款BI分析工具

前不久&#xff0c;一位准备入职阿里的学弟问我&#xff0c;他要做电商数据分析&#xff0c;电商有庞杂的标签、模型、数据和业务逻辑&#xff0c;菜鸟应该要具备什么样的分析能力啊&#xff1f; 我看了他的岗位职责&#xff0c;主要是负责经营决策支持、专题分析和数据看板搭…

leetcode-字符串变形-104

题目要求 思路 1.首先根据ASCII的规则&#xff0c;把字符串大小写替换&#xff0c;空格保持不变 2.将整个字符串进行翻转 3.以空格为区间&#xff0c;将区间内的字符串进行翻转&#xff0c;其中翻转的函数reverse() 代码实现 class Solution { public:string trans(string s…

【C语言】通讯录系统实现

目录 1、通讯录系统介绍 2、代码分装 3、代码实现步骤 3.1制作菜单函数以及游戏运行逻辑流程 3.2、封装人的信息PeoInfo以及通讯录Contact结构体类型 3.3、初始化通讯录InitContact函数 3.4、增加联系人AddContact函数 3.5、显示所有联系人ShowContact函数 3.6、删除联系人D…

Shell之常用命令

目录 1.排序工具--sort命令 1.1 快读查找一个目录中最大文件 2.去重工具--uniq命令 2.1 分析判断远程登录错误次数&#xff0c;禁止该用户远程登录 3.修改工具--tr命令 4.列截取工具--cut命令 5.分割文件工具--split命令 6.合并文件列--paste命令 7.扫描工具--eval命令…

OpenAI和互联网行业的发展,有着异曲同工之处

当OpenAI首席技术官米拉穆拉提发布桌面版本的ChatGPT和新的旗舰模型—GPT-4o&#xff0c;OpenAI的发展&#xff0c;进入到了一个真正意义上的奇点时刻。 OpenAI的短短26分钟的发布会&#xff0c;却依然引发了不少波澜。 无论是ChatGPT-4o的完全免费&#xff0c;抑或是推出PC桌…

【Linux】常用指令、热键与权限管理

一、常用指令 &#xff08;1&#xff09;ls 功能&#xff1a;列出指定目录下的所有子目录与文件 用法&#xff1a;ls &#xff08;选项&#xff09; &#xff08;目录或文件名&#xff09; 常用选项&#xff1a; -a&#xff1a;列出目录下的所有文件&#xff0c;包括隐藏…

c语言中数字字符串和数字互转

#include <getopt.h> #include <stdio.h> #include <stdlib.h>#define MAX_PATH 256 char filename[MAX_PATH 5]; int main(int argc, char** argv) {//数字字符串转数字const char* kk "689";int zhi atoi(kk) 8;//数字字符串转doubledoub…

从HTTP迁移到HTTPS:一篇全面的测试方案设计指南

在当今的互联网世界里&#xff0c;数据安全性日益受到重视。将网站从HTTP迁移到HTTPS已成为提升数据传输安全性的重要一步。HTTPS&#xff08;超文本传输安全协议&#xff09;通过SSL/TLS协议为客户端和服务器之间的通信加密&#xff0c;保护数据免受中间人攻击&#xff08;MIT…

代码随想录训练营Day 29|力扣39. 组合总和、40.组合总和II、131.分割回文串

1.组合总和 题目链接/文章讲解&#xff1a; 代码随想录 视频讲解&#xff1a;带你学透回溯算法-组合总和&#xff08;对应「leetcode」力扣题目&#xff1a;39.组合总和&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 代码&#xff1a;&#xff08;未剪枝版 &#xf…

ChatGPT未来可能应用于iPhone?

苹果接即将与OpenAI达成协议 ChatGPT未来应用于iPhone 前言 就在5月11日&#xff0c;苹果公司正与OpenAI进行深入讨论&#xff0c;计划在其最新的iOS操作系统中整合OpenAI的先进技术。这一举措是苹果公司在为其产品线融入更先进的人工智能功能所做努力的一部分。 目前情况双方…

vue2 八大组件通信,父子通信,跨层级通信,事件总线,vuex等

文章目录 什么是组件通信&#xff1f;父子通信流程propsProps 定义Props 作用特点数组写法对象写法&#xff08;props校验&#xff09;简写只验证数据类型&#xff1a;完整写法&#xff0c;完整的验证&#xff1a; props父向子传值用props父传子在子组件中修改props $emit子向父…

自定义 Gradle 插件进行统一的静态代码分析

静态代码分析是一项了不起的技术, 它能让代码库更易于维护. 但是, 如果你在不同的版本库中拥有多个服务(可能由不同的团队开发), 如何才能让每个人都遵循既定的代码风格呢? 一个好办法是将所有规则封装在一个插件中, 该插件会在每个项目构建时自动执行所需的验证. 因此, 在本…

最新版rancher环境配置安装和集群搭建详细教程记录

&#x1f680; 作者 &#xff1a;“二当家-小D” &#x1f680; 博主简介&#xff1a;⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人&#xff0c;8年开发架构经验&#xff0c;精通java,擅长分布式高并发架构,自动化压力测试&#xff0c;微服务容器化k…