python项目在麒麟V10上无法启动rabbitmq的问题记录

本文记录了在Windows系统使用Docker将Python项目打包为CentOS可执行文件,并部署到麒麟V10环境时遇到的RabbitMQ启动问题。尝试了多种方法最终发现通过Python3直接执行命令或者使用PyInstaller打包为可执行文件可以解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景

Windows系统开发Python项目,通过docker在Windows系统中将Python打包为centos系统的可执行文件。
将可执行文件部署到麒麟V10环境中,systemctl的启动命令可以正常调用,但是rabbitmqctl的命令调用后,没有生效。

2.subprocess方式执行shell

import subprocess
def command():
    result = subprocess.Popen("source /etc/profile; /usr/local/rabbitmq/sbin/rabbitmq-server -detached", shell=True, stdout=subprocess.PIPE)
    logger.info("========shell执行结果 ========= {}".format(result.stdout.read()))

2.1 判断执行是否出错

在Python项目中通过输出语句,查看执行是否出错
输出结果为空,执行语句增加; echo ‘success’,明确该语句已执行
“source /etc/profile; /usr/local/rabbitmq/sbin/rabbitmq-server -detached; echo ‘success’”

经测试,success能够打印,但是rabbitmq未正常启动

3. os方式执行shell

import os
def rabbitmq_start():
    command = "source /etc/profile; /usr/local/rabbitmq/sbin/rabbitmq-server -detached; echo 'success'"
    values = os.popen(command).read()
    logger.info("========rabbitmq 启动========= {}".format(values))
经测试,success能够打印,但是rabbitmq未正常启动

4. 通过Python3执行Python脚本

import subprocess
import logging
command="export CONTROL=/usr/local/rabbitmq/sbin/rabbitmqctl; export HOME=/usr/local/rabbitmq/ ;export ERL_HOME=/usr/local/erlang; /usr/local/rabbitmq/sbin/rabbitmq-server -detached"
subprocess.Popen(command, shell=True, stdout=subprocess.DEVNULL, close_fds=True)
经测试,rabbitmq正常启动

5.在麒麟V10系统中安装Python可执行环境

将未编译的Python项目部署到系统中

经测试,rabbitmq正常启动

6.在麒麟V10系统中通过pyinstaller将Python项目打包为可执行文件

执行可执行文件

经测试,rabbitmq正常启动

结论

此次问题推测为centos内核与麒麟V10内核不一致导致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值