I choose, I like and keep holding on...
坚持比方法更重要

CentOS6.5安装和配置RabbitMQ3.5.4

准备工作

1.RabbitMQ是由Erlang语言开发的,所以安装RabbitMQ之前需要安装Erlang

2.在Erlang官网下载安装包otp_src_17.0.tar.gz 

地址:http://www.erlang.org/download/otp_src_17.0.tar.gz

3.在RabbitMQ官网下载安装包rabbitmq-server-generic-unix-3.5.4.tar.gz 

地址:http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.4/rabbitmq-server-generic-unix-3.5.4.tar.gz

4.而Erlang的安装有依赖其他模块 curses,ssl, orber(C++ compiler),Jdk等重要组件

   安装curses组件的命令:yum -y install ncurses-devel

 安装ssl组件的命令:yum install openssl-devel

 安装orber的命令:yun install gcc-c++

 Jdk的安装有多种方式,我的安装报是.rpm文件,所以使用命令: rpm -ivh xxx.rpm 即可不需要配置环境变量。

5.安装Erlang

  解压otp_src_17.0.tar.gz 后进入解压后的目录

  再通过./configure命令完成配置检测

    ./configure

  然后通过make && make install 完成编译和安装

   make && make install

6.测试Erlang是否安装成功

   在命令行输入erl命令判断

[root@localhost rabbitmq_server-3.5.4]# erl
Erlang/OTP 17 [erts-6.0] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V6.0  (abort with ^G)
1>

  如果显示Erlang的版本信息并进入erlang命令窗口表示安装成功。

RabbitMQ的安装

  1.解压 rabbitmq-server-generic-unix-3.5.4.tar.gz 

     tar zxvf rabbitmq-server-generic-unix-3.5.4.tar.gz 

  解压完成就可以启动RabbitMQ了

  2.启动RabbitMQ  (以我的安装目录为例)

  cd /opt/rabbitmq/rabbitmq_server-3.5.4/sbin  进入rabbitmq的sbin目录

  ./rabbitmq-server                                          启动rabbitmq

  ./rabbitmqctl status                                       查看rabbitmq的运行状态信息

RabbitMQ的配置

   先通过kill命令将rabbitmq进程杀死 

   rabbitmq的配置放在/opt/rabbitmq/rabbitmq_server-3.5.4/etc/rabbitmq目录下

   rabbitm的配置文件有三中

   一是rabbitmq服务器的属性配置 文件名称为:rabbitmq.config

   二是rabbitmq服务器环境变量配置 文件名称为:rabbitmq-env.conf

   三是rabbitmq服务器插件开启配置 文件名称为:enabled_plugins 

  具体的配置选项可以通过rabbitmq的官网了解 网址为:http://www.rabbitmq.com/configure.html

  以我的安装配置为例查看三个配置文件的内容

  rabbitmq.config

 1 [
 2     {
 3         rabbit, [{tcp_listeners,[5672]},
 4                  {heartbeat, 60},
 5                  {cluster_partition_handling, autoheal}]
 6     },
 7     {
 8         rabbitmq_management, [{listener, [{port, 15672}]}]
 9     },
10     {
11         kernel, [{inet_dist_listen_min, 40000},{inet_dist_listen_max, 45000}]
12     }
13 ].

 rabbitmq-env.conf

NODENAME=rabbitmq@rmq01

 修改/etc/hosts文件 在文件末尾追加一行配置 如下   192.168.153.128是当前主机的IP地址

 192.168.153.128 rmp01

enabled_plugins :启动rabbitmq的web管理插件

[rabbitmq_management].

注意 配置文件最后的  点.  确实是存在的

 

RabbitMQ的自启动配置

1.编写启动脚本 文件名为:rabbitmq

 内容如下:

  1 #!/bin/sh
  2 #
  3 # rabbitmq-server RabbitMQ broker
  4 #
  5 # chkconfig: - 80 05
  6 # description: Enable AMQP service provided by RabbitMQ
  7 #
  8 ### BEGIN INIT INFO
  9 # Provides:          rabbitmq-server
 10 # Required-Start:    $remote_fs $network
 11 # Required-Stop:     $remote_fs $network
 12 # Description:       RabbitMQ broker
 13 # Short-Description: Enable AMQP service provided by RabbitMQ broker
 14 ### END INIT INFO
 15 # Source function library.
 16 . /etc/rc.d/init.d/functions
 17 
 18 export HOME=/root
 19 PATH=/sbin:/usr/sbin:/bin:/usr/bin:/opt/rabbitmq/otp_src_17.0/bin
 20 NAME=rabbitmq-server
 21 DAEMON=/opt/rabbitmq/rabbitmq_server-3.5.4/sbin/${NAME}
 22 CONTROL=/opt/rabbitmq/rabbitmq_server-3.5.4/sbin/rabbitmqctl
 23 DESC=rabbitmq-server
 24 USER=root
 25 INIT_LOG_DIR=/var/log/rabbitmq
 26 PID_FILE=/var/run/rabbitmq/pid
 27 
 28 START_PROG="daemon"
 29 LOCK_FILE=/var/lock/subsys/$NAME
 30 
 31 test -x $DAEMON || exit 0
 32 test -x $CONTROL || exit 0
 33 
 34 RETVAL=0
 35 set -e
 36 
 37 [ -f /etc/default/${NAME} ] && . /etc/default/${NAME}
 38 
 39 ensure_pid_dir () {
 40     PID_DIR=`dirname ${PID_FILE}`
 41     if [ ! -d ${PID_DIR} ] ; then
 42         mkdir -p ${PID_DIR}
 43         chown -R ${USER}:${USER} ${PID_DIR}
 44         chmod 755 ${PID_DIR}
 45     fi
 46 }
 47 
 48 remove_pid () {
 49     rm -f ${PID_FILE}
 50     rmdir `dirname ${PID_FILE}` || :
 51 }
 52 
 53 start_rabbitmq () {
 54     status_rabbitmq quiet
 55     if [ $RETVAL = 0 ] ; then
 56         echo RabbitMQ is currently running
 57     else
 58         RETVAL=0
 59         ensure_pid_dir
 60         set +e
 61         RABBITMQ_PID_FILE=$PID_FILE $START_PROG $DAEMON \
 62             > "${INIT_LOG_DIR}/startup_log" \
 63             2> "${INIT_LOG_DIR}/startup_err" \
 64             0<&- &
 65         $CONTROL wait $PID_FILE >/dev/null 2>&1
 66         RETVAL=$?
 67         set -e
 68         case "$RETVAL" in
 69             0)
 70                 echo SUCCESS
 71                 if [ -n "$LOCK_FILE" ] ; then
 72                     touch $LOCK_FILE
 73                 fi
 74                 ;;
 75             *)
 76                 remove_pid
 77                 echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\}
 78                 RETVAL=1
 79                 ;;
 80         esac
 81     fi
 82 }
 83 
 84 stop_rabbitmq () {
 85     status_rabbitmq quiet
 86     if [ $RETVAL = 0 ] ; then
 87         set +e
 88         $CONTROL stop ${PID_FILE} > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err
 89         RETVAL=$?
 90         set -e
 91         if [ $RETVAL = 0 ] ; then
 92             remove_pid
 93             if [ -n "$LOCK_FILE" ] ; then
 94                 rm -f $LOCK_FILE
 95             fi
 96         else
 97             echo FAILED - check ${INIT_LOG_DIR}/shutdown_log, _err
 98         fi
 99     else
100         echo RabbitMQ is not running
101         RETVAL=0
102     fi
103 }
104 
105 status_rabbitmq() {
106     set +e
107     if [ "$1" != "quiet" ] ; then
108         $CONTROL status 2>&1
109     else
110         $CONTROL status > /dev/null 2>&1
111     fi
112     if [ $? != 0 ] ; then
113         RETVAL=3
114     fi
115     set -e
116 }
117 
118 rotate_logs_rabbitmq() {
119     set +e
120     $CONTROL rotate_logs ${ROTATE_SUFFIX}
121     if [ $? != 0 ] ; then
122         RETVAL=1
123     fi
124     set -e
125 }
126 
127 restart_running_rabbitmq () {
128     status_rabbitmq quiet
129     if [ $RETVAL = 0 ] ; then
130         restart_rabbitmq
131     else
132         echo RabbitMQ is not runnning
133         RETVAL=0
134     fi
135 }
136 
137 restart_rabbitmq() {
138     stop_rabbitmq
139     start_rabbitmq
140 }
141 
142 if  [ ! -d $INIT_LOG_DIR ]; then   
143     mkdir $INIT_LOG_DIR
144 fi
145 
146 case "$1" in
147     start)
148         echo -n "Starting $DESC: "
149         start_rabbitmq
150         echo "$NAME."
151         ;;
152     stop)
153         echo -n "Stopping $DESC: "
154         stop_rabbitmq
155         echo "$NAME."
156         ;;
157     status)
158         status_rabbitmq
159         ;;
160     rotate-logs)
161         echo -n "Rotating log files for $DESC: "
162         rotate_logs_rabbitmq
163         ;;
164     force-reload|reload|restart)
165         echo -n "Restarting $DESC: "
166         restart_rabbitmq
167         echo "$NAME."
168         ;;
169     try-restart)
170         echo -n "Restarting $DESC: "
171         restart_running_rabbitmq
172         echo "$NAME."
173         ;;
174     *)
175         echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2
176         RETVAL=1
177         ;;
178 esac
179 
180 exit $RETVAL

  注意:配置文件中 字体变大标红的 是需要根据实际的安装目录配置的。

          第一行标红的是erlang的安装目录,需要是你的erlang安装的实际地址。

2.配置自启动

  将rabbitmq脚本文件放到目录 /etc/rc.d/init.d目录下

  cd /etc/rc.d/init.d          进入该目录

  chmod 777 rabbitmq     修改脚本文件的权限

  chkconfig --add rabbitmq  添加服务器

  chkconfig --level 345 rabbitmq on  设置自启动

  chkconfig --list rabbitmq     查看自启动项是否设置成功

3.启动rabbitmq服务

   service rabbitmq start 

  查看rabbitmq的状态

   service rabbitmq status 

  重启

   service rabbitmq restart 

 

重启机器验证是否自启动

  重启后进入命令行   使用 ps aux | grep rabbitmq   或 service rabbitmq status  

  验证rabbitmq是否自启动成功。

 

RabbitMQ的web管理配置


1.RabbitMQ的Web管理界面的默认账户为guest/guest 但3.5.4版本的guest账户只能在服务器本机登录

翻看官方的release文档后,得知由于账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的

密码以及新建其他账号管理使用rabbitmq(该功能是在3.3.0版本引入的)。 【该段文字摘自博客http://www.cnblogs.com/mingaixin/p/4134920.html】

2.添加RabbitMQ账户

 在/opt/rabbitmq/rabbitmq_server-3.5.4/sbin目录下使用rabbitmqctl进行账户添加

cd /opt/rabbitmq/rabbitmq_server-3.5.4/sbin 进入目录

./rabbitmqctl add_user dev dev     添加账户 dev dev  分别是用户名和密码

./rabbitmqctl set_user_tags dev administrator  设置dev为管理员账户

./rabbitmqctl set_permission -p / .* .* .*   设置对Vhost的配置,读和写的权限。

 

此时启动rabbitmq 访问界面http://192.168.233.128:15672/ 会进入到登录界面,如果你的linux 系统开启了防火墙则需要设置端口开放

 

iptables端口设置 

查看iptable内容 

iptable -L -n     查看内容

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

如果只有这些内容表示 没有开启防火墙则不再需要对RabbitMQ的端口进行配置

如果包含其他内容,如下:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination          
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:8080 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:3306 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

则需要添加以下内容

-I INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT  
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT

5672端口是客户端通过tcp连接rabbitmq的

15672是web管理界面的http协议接口。

 

使用vi命令编辑iptables文件

vi /etc/sysconfig/iptables

将上面两行内容添加,添加后结果如下

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-I INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

重启iptables

 service iptables restart 

重启成功后就可以访问web管理界面了

 

 

OK 完毕。

 

  

 

 

  

 

posted on 2015-09-10 10:59  Jack.Kuo  阅读(3088)  评论(0编辑  收藏  举报

不积跬步无以至千里