CentOS 7安装RabbitMQ
环境:
CentOS 7.6
Erlang OTP 20.3 Released
RabbitMQ 3.7.17
防火墙状态:not running (也可以根据情况开放指定的端口)
执行角色:administrator/root
一、安装Erlang
1.安装Erlang环境
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget
2.下载Erlang后上传到CentOS根目录(otp_src_20.3.tar.gz)
[root@yyj ~]# ll 总用量 95864 -rw-------. 1 root root 1235 6月 21 21:16 anaconda-ks.cfg -rw-r--r--. 1 root root 88170904 9月 4 14:34 otp_src_20.3.tar.gz -rw-r--r--. 1 root root 9982364 9月 4 14:07 rabbitmq-server-generic-unix-3.7.17.tar.xz
3.解压otp_src_20.3.tar.gz到/usr/local/
[root@yyj ~]# tar -zxvf ./otp_src_20.3.tar.gz -C /usr/local/
4.编译安装
[root@yyj ~]# cd /usr/local/otp_src_20.3/ [root@yyj otp_src_20.3]# ./configure --prefix=/usr/local/erlang [root@yyj otp_src_20.3]# make && make install
5.配置环境变量
[root@yyj erlang]# vi /etc/profile
vi插入内容(根据安装位置修改)
export ERLANG_HOME=/usr/local/erlang/lib/erlang #此处目录注意是erlang目录lib目录下的erlang export PATH=$ERLANG_HOME/bin #如果已经有PATH,和Windows一样在其后面追加,不同的是用:分隔开
插入后结果
#JDK environment setting
export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#erlang evn setting
export ERLANG_HOME=/usr/local/erlang/lib/erlang
export PATH=$PATH:$JAVA_HOME/bin:$ERLANG_HOME/bin;
6.重新应用环境变量
[root@yyj erlang]# source /etc/profile
7.验证Erlang是否安装成功
[root@yyj erlang]# erl -version Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 9.3
二、安装RabbitMQ Server
1. 下载RabbitMQ安装包,然后上传到CentOS根目录
[root@yyj ~]# ll 总用量 95864 -rw-------. 1 root root 1235 6月 21 21:16 anaconda-ks.cfg -rw-r--r--. 1 root root 88170904 9月 4 14:34 otp_src_20.3.tar.gz -rw-r--r--. 1 root root 9982364 9月 4 14:07 rabbitmq-server-generic-unix-3.7.17.tar.xz
2.解压到/usr/local
[root@yyj ~]# xz -d ./rabbitmq-server-generic-unix-3.7.17.tar.xz [root@yyj ~]# tar -xvf ./rabbitmq-server-generic-unix-3.7.17.tar -C /usr/local/
rabbitmq-server-generic-unix-3.7.17.tar.xz 文件是xz后缀的,注意一下,相应命令的使用
3.环境变量设置
[root@yyj rabbitmq_server-3.7.17]# vi /etc/profile
vi在PATH后面追加对应的内容(这里没有用HOME相对路径了,写的直接路径):
export PATH=$PATH:$JAVA_HOME/bin:$ERLANG_HOME/bin:/usr/local/rabbitmq_server-3.7.17/sbin
4.重新应用环境变量
[root@yyj rabbitmq_server-3.7.17]# source /etc/profile
5.安装Web管理界面插件
[root@yyj ~]# rabbitmq-plugins enable rabbitmq_management
7.启动RabbitMQ
[root@yyj ~]# rabbitmq-server -start
6.设置RabbitMQ远程IP登陆
1.创建账号
rabbitmqctl add_user rabbitmq 123456
2.设置用户角色
rabbitmqctl set_user_tags rabbitmq administrator
3.设置用户权限
rabbitmqctl set_permissions -p "/" rabbitmq ".*" ".*" ".*"
4.设置完成后可以查看当前用户和角色(需要开启服务)
rabbitmqctl list_users
执行命令预览:
[root@yyj ~]# rabbitmqctl add_user rabbitmq 123456 Adding user "rabbitmq" ... [root@yyj ~]# rabbitmqctl set_user_tags rabbitmq administrator Setting tags for user "rabbitmq" to [administrator] ... [root@yyj ~]# rabbitmqctl set_permissions -p "/" rabbitmq ".*" ".*" ".*" Setting permissions for user "rabbitmq" in vhost "/" ... [root@yyj ~]# rabbitmqctl list_users Listing users ... user tags rabbitmq [administrator] guest [administrator]
7.远程IP登陆测试(默认端口:15672)

8.配置守护进程(开机自启动)
8.1 增加自启动脚本:
[root@yyj ~]# vi /etc/init.d/rabbitmq-server
8.2 添加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:/usr/local/erlang/lib/erlang/bin
NAME=rabbitmq-server
#DAEMON=/usr/sbin/${NAME}
#CONTROL=/usr/sbin/rabbitmqctl
#此处根据自己情况配置
DAEMON=/usr/local/rabbitmq_server-3.7.17/sbin/${NAME}
#此处根据自己情况配置
CONTROL=/usr/local/rabbitmq_server-3.7.17/sbin/rabbitmqctl
DESC=rabbitmq-server
USER=root
ROTATE_SUFFIX=
#此处根据自己情况配置
INIT_LOG_DIR=/usr/local/rabbitmq_server-3.7.17/var/log/rabbitmq
#此处根据自己情况配置
PID_FILE=/usr/local/rabbitmq_server-3.7.17/var/lib/rabbitmq/mnesia/rabbit@yyj.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
修改部分:
# 记得增加Erlang环境路径
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/erlang/lib/erlang/bin #记得增加Erlang环境路径/usr/local/erlang/lib/erlang/bin
#守护进程
DAEMON=/usr/local/rabbitmq_server-3.7.17/sbin/${NAME}
CONTROL=/usr/local/rabbitmq_server-3.7.17/sbin/rabbitmqctl
DESC=rabbitmq-server
USER=root
#LOG日志
INIT_LOG_DIR=/data/soft/rabbitmq_server-3.7.9/var/log/rabbitmq
# PID文件,可以通过执行find / -name rabbit*.pid命令查找到路径
PID_FILE=/usr/local/rabbitmq_server-3.7.17/var/lib/rabbitmq/mnesia/rabbit@yyj.pid
8.3 设置权限
[root@yyj ~]# chmod 755 /etc/init.d/rabbitmq-server
8.4 开机自启
添加到系统的开机启动中:[root@yyj ~]# chkconfig --add /etc/init.d/rabbitmq-server 配置为守护进程随系统自动启动:[root@yyj ~]# chkconfig rabbitmq-server on 查看启动项命令:[root@yyj ~]# chkconfig --list rabbitmq-server 0:关 1:关 2:开 3:开 4:开 5:开 6:关 执行命令reboot,重启服务器即可验证nginx开机启动:[root@yyj ~]# reboot 可选命令: 关闭开机自启令:chkconfig rabbitmq-server off 删除命令:chkconfig --del rabbitmq-server
浙公网安备 33010602011771号