前言

        系统环境:CentOS Linux release 7.7.1908 (Core)

要求

        将RabbitMQ注册成开机服务程序

创建软连接 ln -s /opt/rabbitmq_server-3.6.10/sbin/rabbitmq-server  /etc/init.d/rabbitmq-server

创建软连接 ln -s /opt/rabbitmq_server-3.6.10/sbin/rabbitmq-env  /etc/init.d/rabbitmq-env


执行脚本 service rabbitmq-server start

提示出错:erl: command not found


解决方案

            编辑/etc/init.d/rabbitmq-server脚本,NOTIFY_SOCKET注释之后添加rabbitmq的HOME目录和erlang的路径

# NOTIFY_SOCKET is needed here to prevent epmd from impersonating the
# success of our startup sequence to systemd.
export HOME=/opt/rabbitmq_server-3.6.10
export PATH=$PATH:/opt/otp/lib/erlang/bin



疑窦

        已经将erlang的路径添加到/etc/profile文件中,并且已经执行source /etc/profile,但是service无法读取到该环境变量


释疑

1、/etc/profile或者/etc/security/limit.d这些文件中配置的环境变量仅对通过pam登录的用户生效,而systemd是不读这些配置的,所以这就造成登录到终端时查看环境变量和手动启动应用都一切正常,但是systemd无法正常启动应用

2、如果需要给systemd配置默认参数,全局的配置在/etc/systemd/system.conf和/etc/systemd/user.conf中。同时还会加载两个配置文件对应的目录中所有的.conf配置文件/etc/systemd/system.conf.d/.conf和/etc/systemd/user.conf.d/.conf,一般的服务单元使用system.conf即可。加载优先级system.conf最低,所以system.conf.d目录中的配置会覆盖system.conf的配置

3、目前我已知的是更改system.conf配置,需要重启系统才能生效,还没找到如何重新加载此配置


09-13 19:29