在centos 6.8安装RabbitMQ

1、获取Erlang和RabbitMQ的源文件
 wget  http://erlang.org/download/otp_src_17.0.tar.gz
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.2/rabbitmq-server-generic-unix-3.4.2.tar.gz
2、编译安装Erlang
编译安装Erlang对环境有要求,为防止在编译的时候提示某些软件包未安装之类的错误,所以我将Erlang需要的软件提前安装,直接使用yum进行安装即可
yum -y install make ncurses-devel gcc gcc-c++ unixODBC unixODBC-devel openssl openssl-devel

解压otp_src_17.0.tar.gz
tar -zxvf  otp_src_17.0.tar.gz  
编译安装Erlang
cd otp_src_17.0
./configure \
--prefix=/usr/local/erlang \
--enable-smp-support \
--enable-threads \
--enable-sctp \
--enable-kernel-poll \
--enable-hipe \
--with-ssl

上述参数说明:
--prefix  指定安装目录
--enable-smp-support启用对称多处理支持(Symmetric Multi-Processing对称多处理结构的简称)
--enable-threads启用异步线程支持
--enable-sctp启用流控制协议支持(Stream Control Transmission Protocol,流控制传输协议)
--enable-kernel-poll启用Linux内核poll
--enable-hipe启用高性能Erlang(High Performance Erlang)参考资料: http://www.cnblogs.com/me-sa/archive/2012/10/09/erlang_hipe.html
--with-ssl使用SSL包

make && make install  
设置环境变量
环境变量为追加
vi /etc/profile

ERL_HOME=/usr/local/erlang
PATH=$ERL_HOME/bin:$PATH
export ERL_HOME PATH

source /etc/profile  

3、安装RabbitMQ
解压缩:
tar -zxf rabbitmq-server-generic-unix- 3.4 . 2 . tar .gz
移动这个目录到/usr/local下并且重命名为rabbitmq: 
mv rabbitmq-server-generic-unix- 3.4 . 2 /usr/local/rabbitmq
打开/etc/profile文件,在文件最后添如下两行环境变量 
#set rabbitmq environment export PATH=$PATH:/usr/local/rabbitmq/sbin
使环境变量生效: 
source /etc/profile
安装网页管理插件:
cd /usr/local/rabbitmq/sbin/ 
./rabbitmq-plugins enable rabbitmq_management
启动rabbitmq: 
cd /usr/local/rabbitmq/sbin 
./rabbitmq-server -detached (可以实现后台运行)
查看启动是否成功:
netstat -tunlp | grep beam
tcp 0 0 0.0 . 0.0 : 25672 0.0 . 0.0 :* LISTEN 3308 /beam.smp tcp 0 0 0.0 . 0.0 : 15672 0.0 . 0.0 :* LISTEN 3308 /beam.smp tcp 0 0 ::: 5672 :::* LISTEN 3308 /beam.smp
可以看到启动成功: 15672是rabbimq网页管理监听端口,5672是客户端使用的端口,在浏览器中输入http://localhost:15672,可以登录Web页面。
输入用户名guest和密码guest即可通过网页管理RabbitMQ。
由于guest这个用户,只能在本地访问,所以我们要新增一个用户并赋予权限:
添加用户:rabbitmqctl add_user admin admin
添加权限:rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
修改用户角色:rabbitmqctl set_user_tags admin administrator
然后就可以远程访问了,然后可直接配置用户权限等信息。
到此,就可以通过http://ip:15672 使用admin admin 进行登陆了
关闭RabbitMQ:
cd /usr/local/rabbitmq/sbin./rabbitmqctl stop


4.如果机器上已经安装了activemq,那么端口5672 就会被占用
需要变更rabbitmq的默认端口号
RabbitMQ的配置
   先通过kill命令将rabbitmq进程杀死 
   rabbitmq的配置放在/usr/local/rabbitmq/etc/rabbitmq目录下
   rabbitm的配置文件有三个
   一是rabbitmq服务器的属性配置 文件名称为:rabbitmq.config
   二是rabbitmq服务器环境变量配置 文件名称为:rabbitmq-env.conf
   三是rabbitmq服务器插件开启配置 文件名称为:enabled_plugins 
  具体的配置选项可以通过rabbitmq的官网了解 网址为:http://www.rabbitmq.com/configure.html
  以我的安装配置为例查看三个配置文件的内容
  rabbitmq.config
[
{
rabbit, [{tcp_listeners,[5672]},
{heartbeat, 60},
{cluster_partition_handling, autoheal}]
},
{
rabbitmq_management, [{listener, [{port, 15672}]}]
},
{
kernel, [{inet_dist_listen_min, 40000},{inet_dist_listen_max, 45000}]
}
].

rabbitmq-env.conf
NODENAME=rabbitmq@rmq01

修改/etc/hosts文件 在文件末尾追加一行配置 如下   192.168.153.128是当前主机的IP地址
192.168.153.128 rmp01
enabled_plugins :启动rabbitmq的web管理插件
[rabbitmq_management].
注意 配置文件最后的  点.  确实是存在的
技术交流群【175351203】

5、 RabbitMQ的自启动配置
编写启动脚本 文件名为: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/rc.d/init.d/functions

export HOME=/root
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/erlang/bin
NAME=rabbitmq-server
DAEMON=/usr/local/rabbitmq/sbin/${NAME}
CONTROL=/usr/local/rabbitmq/sbin/rabbitmqctl
DESC=rabbitmq-server
USER=root
INIT_LOG_DIR==/usr/local/rabbitmq/var/log/rabbitmq
PID_FILE=/usr/local/rabbitmq/var/log/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_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
}

if [ ! -d $INIT_LOG_DIR ]; then
mkdir $INIT_LOG_DIR
fi

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


配置自启动
  将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     查看自启动项是否设置成功
启动rabbitmq服务
   service rabbitmq start 
  查看rabbitmq的状态
   service rabbitmq status 
  重启
   service rabbitmq restart 
 
重启机器验证是否自启动
  重启后进入命令行   使用 ps aux | grep rabbitmq   或 service rabbitmq status  
  验证rabbitmq是否自启动成功。

6、防火墙设置
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-prohibitedCOMMIT
重启iptables
 service iptables restart 
重启成功后就可以访问web管理界面了
 
7、rabbitmq使用说明

安装完成后需要配置:
/usr/local/rabbitmq/sbin目录下文件说明:
rabbitmq-env // 环境配置
rabbitmq-defaults // 默认参数设置
rabbitmqctl // 管理工具
rabbitmq-plugins // 插件管理工具
rabbitmq-server // rabbitmq服务

列出所有插件
# ./rabbitmq-plugins list

rabbitmq常用命令
  add_user        <UserName> <Password>
  delete_user    <UserName>
  change_password <UserName> <NewPassword>
  list_users
  add_vhost    <VHostPath>
  delete_vhost <VHostPath>
  list_vhostsset_permissions  [-p <VHostPath>] <UserName> <Regexp> <Regexp> <Regexp>
  clear_permissions [-p <VHostPath>] <UserName>
  list_permissions  [-p <VHostPath>]
  list_user_permissions <UserName>
  list_queues    [-p <VHostPath>] [<QueueInfoItem> ...]
  list_exchanges [-p <VHostPath>] [<ExchangeInfoItem> ...]
  list_bindings  [-p <VHostPath>]
  list_connections [<ConnectionInfoItem> ...]




技术交流群【175351203】


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值