CentOS7.X環境下源碼包安裝部署RabbitMQ3.7.17

本文介紹在CentOS7.X環境下源碼包安裝部署RabbitMQ3.7.17,使用docker安裝很簡單,這裏我就不往文章中添加、在CentOS7.X環境下使用源碼包安裝還是有遇到不少坑的(使用yum安裝的方式官方網站有介紹,比較簡單),通過這篇我的個人實踐操作,能夠幫助到有需要的人。
搭建環境:
操作系統:CentOS7.5
內存大小:16GB
硬盤:100G
注:正文中的參數與部署路徑等,請根據實際需求修改。
1、軟件準備:
wxWidgets-3.1.2.tar.bz2
otp_src_22.0.tar.gz
rabbitmq-server-generic-unix-3.7.17.tar.xz
2、Erlang的相關依賴安裝
2.1 依賴環境安裝
(1)安裝依賴環境


[root RabbitMQ]# yum -y install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz


(2)安裝wxWidgets的依賴及檢查


[root RabbitMQ]# yum -y gtk2 gtk2-devel gtk2-devel-docs mesa-libGL mesa-libGLU freeglut*
[root RabbitMQ]# pkg-config --modversion gtk+-2.0 #顯示版本信息,即表示安裝完成


(3)下載wxWidgets


[root RabbitMQ]# cd /software
[root RabbitMQ]# wget https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.2/wxWidgets-3.1.2.tar.bz2
[root RabbitMQ]# bzip2 -d wxWidgets-3.1.2.tar.bz2
[root RabbitMQ]# tar -xvf wxWidgets-3.1.2.tar
[root RabbitMQ]# cd wxWidgets-3.1.2
[root RabbitMQ]# ./configure --with-opengl --enable-debug --enable-unicode
[root RabbitMQ]# make
[root RabbitMQ]# make install


2.2、Erlange安裝部署
(1)下載及安裝Erlang


[root RabbitMQ]# wget http://erlang.org/download/otp_src_22.0.tar.gz
[root RabbitMQ]# tar -zxvf otp_src_22.0.tar.gz
[root RabbitMQ]# mkdir /usr/local/mq/
[root RabbitMQ]# cd otp_src_22.0
[root RabbitMQ]# ./configure --prefix=/usr/local/mq/erlang --with-ssl --enable-threads --enable-smmp-support --enable-kernel-poll --enable-hipe --without-javac
[root RabbitMQ]# make
[root RabbitMQ]# make install


(2)配置系統變量


[root RabbitMQ]# vi /etc/profile
#set erlang environment
export PATH=$PATH:/usr/local/mq/erlang/bin
[root RabbitMQ]# source /etc/profile


(3)測試erlang是否可用以及變量是否生效


[root RabbitMQ]# erl -version


3、RabbitMQ安裝
(1)下載RabbitMQ安裝包


[root RabbitMQ]# cd /software
[root RabbitMQ]# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.17/rabbitmq-server-generic-unix-3.7.17.tar.xz
[root RabbitMQ]# tar -xvf rabbitmq-server-generic-unix-3.7.17.tar.xz
[root RabbitMQ]# mv rabbitmq_server-3.7.17 /usr/local/mq/rabbitmq


(2)設置環境變量


[root RabbitMQ]# vi /etc/profile
#set RabbitMQ environment
export PAHT=$PATH:/usr/local/mq/rabbitmq/sbin
[root RabbitMQ]# source /etc/profile


(3)啓用WEB管理插件


[root RabbitMQ]# cd /usr/local/mq/rabbitmq/sbin
[root RabbitMQ]# ./rabbitmq-plugins list
[root RabbitMQ]# ./rabbitmq-plugins enable rabbitmq_management


(4)修改RabbitMQ配置
前提:rabbitmq從3.3.0開始禁止使用guest/guest權限通過除localhost外的訪問
解決方法:修改RabbitMQ的安裝目錄/usr/local/mq/rabbitmq/ebin下的rabbit.app配置文件,將配置文件第39行{loopback_users, [<<"guest">>]}修改爲{loopback_users, []}


[root RabbitMQ]# vi /usr/local/mq/rabbitmq/ebin/rabbit.app
{loopback_users, [<<"guest">>]} 修改爲 {loopback_users, []}


(5)啓動RabbitMQ、查看狀態及停止RabbitMQ


[root RabbitMQ]# cd /usr/local/mq/rabbitmq/sbin
[root RabbitMQ]# ./rabbitmq-server -detached #後臺運行RabbitMQ
[root RabbitMQ]# netstat -tnlp|grep 5672
[root RabbitMQ]# ./rabbitmqctl status #查看RabbitMQ運行狀態
[root RabbitMQ]# ./rabbitmqctl stop #停止RabbitMQ服務


(6)配置防火牆


[root RabbitMQ]# firewall-cmd --permanent --zone=public --add-port=15672/tcp
[root RabbitMQ]# firewall-cmd --reload


備註:1)瀏覽器上輸入http://IP_ADDRESS:15672/登錄管理界面;
2)使用登錄的用戶名和密碼默認都是guest

4、添加RabbitMQ系統服務腳本


[root RabbitMQ]# vi /etc/init.d/rabbitmq
#!/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=/usr/local/mq/rabbitmq/sbin/${NAME}
CONTROL=/usr/local/mq/rabbitmq/sbin/rabbitmqctl
DESC=rabbitmq-server
USER=root
ROTATE_SUFFIX=
INIT_LOG_DIR=/usr/local/mq/rabbitmq/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_LOGDIR}/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


5、配置RabbitMQ服務及自啓動
(1) 創建啓停日誌存放路徑與pid路徑


[root RabbitMQ]# mkdir -p /usr/local/mq/rabbitmq/var/log/rabbitmq
[root RabbitMQ]# mkdir /var/run/rabbitmq


(2) 配置rabbitmq-env與rabbitmq-server文件erlang環境變量(紅色標識爲新增代碼)


[root RabbitMQ]# cd /usr/local/mq/rabbitmq/sbin
[root RabbitMQ]# vi rabbitmq-server


備註:文件第187行新增配置
#set erlang environment
export PATH=$PATH:/usr/local/mq/erlang/bin
NOTIFY_SOCKET= \
RABBITMQ_CONFIG_FILE=$RABBITMQ_CONFIG_FILE \
ERL_CRASH_DUMP=$ERL_CRASH_DUMP \



[root RabbitMQ]# vi rabbitmq-env
備註:文件第428行新增配置
#set erlang environment
export PATH=$PATH:/usr/local/mq/erlang/bin
exec "${ERL_DIR}erl" +B \
-boot "$CLEAN_BOOT_FILE" \
-noinput -noshell -hidden -smp enable \


(3)授權,並添加系統自啓動服務
[root RabbitMQ]# chmod +x /etc/init.d/rabbitmq
[root RabbitMQ]# chkconfig --add rabbitmq
[root RabbitMQ]# chkconfig --level 2345 rabbitmq on
[root RabbitMQ]# chkconfig --list rabbitmq #查看開機自啓動是否添加成功
(4) 啓停RabbitMQ服務
[root RabbitMQ]# service rabbitmq start
[root RabbitMQ]# ps -ef|grep rabbitmq #查看服務進程
[root RabbitMQ]# service rabbitmq stop
(5) 相關備註說明:
1)、服務啓動日誌、啓動失敗日誌、服務停止日誌和停止失敗日誌存放於路徑/usr/local/mq/rabbitmq/var/log/rabbitmq下,日誌名稱分別爲startup_log、startup_err、shutdown_log、shutdown_err
2)注意修改服務啓動腳本的DAEMON與CONTROL的路徑,按實際部署路徑更改
DAEMON=/usr/local/mq/rabbitmq/sbin/${NAME}
CONTROL=/usr/local/mq/rabbitmq/sbin/rabbitmqctl
3)關閉與刪除rabbitmq系統服務的命令如下
[root RabbitMQ]# chkconfig rabbitmq off
[root RabbitMQ]# chkconfig --del rabbitmq
6、這樣就完成了RabbitMQ的安裝部署, 可在網頁輸入http://IP_ADDRESS:15672訪問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章