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