RabbitMQ开机自启动

如通过yum安装的话直接通过chkconfig rabbitmq-server on 就可以设置为开机自启动,但公司这边是通过源代码进行安装,如何也通过系统服务来自启动呢?

步骤:

1.增加自启动脚本:
在/etc/init.d目录下新建一个rabbitmq-server文件,内容如下:

#!/bin/sh 

# rabbitmq-server RabbitMQ broker 

# chkconfig: - 80 05 
# description: Enable AMQP service provided by RabbitMQ 

 
### BEGIN INIT INFO 
# Provides:          rabbitmq-server 
# Required-Start:    $remote_fs $network 
# Required-Stop:     $remote_fs $network 
# Description:       RabbitMQ broker 
# Short-Description: Enable AMQP service provided by RabbitMQ broker 
### END INIT INFO 
 
# Source function library. 
. /etc/init.d/functions 
export HOME=/root 
PATH=/sbin:/usr/sbin:/bin:/usr/bin 
NAME=rabbitmq-server 
#DAEMON=/usr/sbin/${NAME} 
#CONTROL=/usr/sbin/rabbitmqctl 
DAEMON=/server/rabbitmq/sbin/${NAME} 
CONTROL=/server/rabbitmq/sbin/rabbitmqctl 
DESC=rabbitmq-server 
USER=root 
ROTATE_SUFFIX= 
INIT_LOG_DIR=/var/log/rabbitmq 
PID_FILE=/var/run/rabbitmq/pid 
 
START_PROG="daemon" 
LOCK_FILE=/var/lock/subsys/$NAME 
 
test -x $DAEMON || exit 0 
test -x $CONTROL || exit 0 
 
RETVAL=0 
set -e 
 
[ -f /etc/default/${NAME} ] && . /etc/default/${NAME} 
 
ensure_pid_dir () { 
    PID_DIR=`dirname ${PID_FILE}` 
    if [ ! -d ${PID_DIR} ] ; then 
        mkdir -p ${PID_DIR} 
        chown -R ${USER}:${USER} ${PID_DIR} 
        chmod 755 ${PID_DIR} 
    fi 

 
remove_pid () { 
    rm -f ${PID_FILE} 
    rmdir `dirname ${PID_FILE}` || : 

 
start_rabbitmq () { 
    status_rabbitmq quiet 
    if [ $RETVAL = 0 ] ; then 
        echo RabbitMQ is currently running 
    else 
        RETVAL=0 
        ensure_pid_dir 
        set +e 
        RABBITMQ_PID_FILE=$PID_FILE $START_PROG $DAEMON \ 
            > "${INIT_LOG_DIR}/startup_log" \ 
            2> "${INIT_LOG_DIR}/startup_err" \ 
            0<&- & 
        $CONTROL wait $PID_FILE >/dev/null 2>&1 
        RETVAL=$? 
        set -e 
        case "$RETVAL" in 
            0) 
                echo SUCCESS 
                if [ -n "$LOCK_FILE" ] ; then 
                    touch $LOCK_FILE 
                fi 
                ;; 
            *) 
                remove_pid 
                echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\} 
                RETVAL=1 
                ;; 
        esac 
    fi 

 
stop_rabbitmq () { 
    status_rabbitmq quiet 
    if [ $RETVAL = 0 ] ; then 
        set +e 
        $CONTROL stop ${PID_FILE} > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err 
        RETVAL=$? 
        set -e 
        if [ $RETVAL = 0 ] ; then 
            remove_pid 
            if [ -n "$LOCK_FILE" ] ; then 
                rm -f $LOCK_FILE 
            fi 
        else 
            echo FAILED - check ${INIT_LOG_DIR}/shutdown_log, _err 
        fi 
    else 
        echo RabbitMQ is not running 
        RETVAL=0 
    fi 

 
status_rabbitmq() { 
    set +e 
    if [ "$1" != "quiet" ] ; then 
        $CONTROL status 2>&1 
    else 
        $CONTROL status > /dev/null 2>&1 
    fi 
    if [ $? != 0 ] ; then 
        RETVAL=3 
    fi 
    set -e 

 
rotate_logs_rabbitmq() { 
    set +e 
    $CONTROL rotate_logs ${ROTATE_SUFFIX} 
    if [ $? != 0 ] ; then 
        RETVAL=1 
    fi 
    set -e 

 
restart_running_rabbitmq () { 
    status_rabbitmq quiet 
    if [ $RETVAL = 0 ] ; then 
        restart_rabbitmq 
    else 
        echo RabbitMQ is not runnning 
        RETVAL=0 
    fi 

 
restart_rabbitmq() { 
    stop_rabbitmq 
    start_rabbitmq 

 
case "$1" in 
    start) 
        echo -n "Starting $DESC: " 
        start_rabbitmq 
        echo "$NAME." 
        ;; 
    stop) 
        echo -n "Stopping $DESC: " 
        stop_rabbitmq 
        echo "$NAME." 
        ;; 
    status) 
        status_rabbitmq 
        ;; 
    rotate-logs) 
        echo -n "Rotating log files for $DESC: " 
        rotate_logs_rabbitmq 
        ;; 
    force-reload|reload|restart) 
        echo -n "Restarting $DESC: " 
        restart_rabbitmq 
        echo "$NAME." 
        ;; 
    try-restart) 
        echo -n "Restarting $DESC: " 
        restart_running_rabbitmq 
        echo "$NAME." 
        ;; 
    *) 
        echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2 
        RETVAL=1 
        ;; 
esac 
 
exit $RETVAL 

根据实际情况修改上面内容中的:
DAEMON=/server/rabbitmq/sbin/${NAME}
CONTROL=/server/rabbitmq/sbin/rabbitmqctl
DESC=rabbitmq-server
USER=root

2.保存上面的文件并设置执行权限

chmod u+x /etc/init.d/rabbitmq-server

3.配置为开机自启动服务

ln -s $(which erl) /usr/bin/erl && chkconfig rabbitmq-server on


原文出自:
https://blog.csdn.net/weiguang1017/article/details/79065486

猜你喜欢

转载自lanyan-lan.iteye.com/blog/2423391