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 完毕。