RabbitMQ
     分类:环境搭建     有: 0 条评论

RabbitMQ

     分类:环境搭建     有: 0 条评论

Centos 7 yum安装

在Centos 7中有了很多的改进,常用包什么的都有了。可以很方便的用yum安装。但是yum安装的版本比较低,可以使用官网的源

# 安装centos 7的源、依赖
wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_20.0-1~centos~7_amd64.rpm
rpm -ivh esl-erlang_20.0-1~centos~7_amd64.rpm
yum makecache
yum install -y socat erlang

# 注意,rabbitmq的版本对erlang有要求。
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
rpm -ivh rabbitmq-server-3.6.10-1.el7.noarch.rpm
yum makecache
yum install -y rabbitmq-server

systemctl start rabbitmq-server
systemctl enable rabbitmq-server
rabbitmq-plugins enable rabbitmq_management    #开启管理界面
systemctl restart rabbitmq-server
# 浏览器打开http://IP:15672访问

参考:http://www.cnblogs.com/uptothesky/p/6094357.html

Ubuntu 16 apt安装

官网:http://www.rabbitmq.com/install-debian.html

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_10/rabbitmq-server_3.6.10-1_all.deb
dpkg -i rabbitmq-server_3.6.10-1_all.deb

apt install rabbitmq-server

源码安装

Centos 7

源码安装还比较繁琐,目前先这样,之后有时间再做改动。如果报缺少某些库,看最底下,初始环境不同。

#安装依赖包和环境
yum -y install unixODBC unixODBC-devel java libxslt xmlto zip rsync gcc g++ ncurses-devel openssl openssl-devel

#安装Make(版本4以上)
wget http://ftp.gnu.org/gnu/make/make-4.2.tar.gz   #4以上
tar -zxvf make-4.2.tar.gz
cd make-4.2
./configure
make
make install
cd ~

mv /usr/bin/make /usr/bin/make.bak
vim /etc/profile
export PATH=$PATH:/usr/local/bin/make
source /etc/profile
rm -rf /root/make-4.2*

###########################################################################################
#安装simplejson
yum install ptyhon -y
wget https://pypi.python.org/packages/40/ad/52c1f3a562df3b210e8f165e1aa243a178c454ead65476a39fa3ce1847b6/simplejson-3.10.0.tar.gz#md5=426a9631d22851a7a970b1a677368b15
tar zxvf simplejson-3.10.0.tar.gz
cd simplejson-3.10.0
python setup.py build
python setup.py install
cd ~
rm -rf /root/simplejson-3.10.0*

###########################################################################################
#安装erlang
wget http://erlang.org/download/otp_src_20.0.tar.gz
tar -zxvf otp_src_20.0.tar.gz
cd otp_src_20.0
./configure --without-javac
make
make install
cd ~
rm -rf /root/otp_src_20.0*

###########################################################################################
#安装rabbitmq
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10.tar.xz
tar -vxf rabbitmq-server-3.6.10.tar.xz
cd rabbitmq-server-3.6.10
# 下一步如果报错src/rabbit_net.erl:27: can't find include lib "ssl/src/ssl_api.hrl"则是没有正确安装OpenSSL的问题。
#参考1:https://stackoverflow.com/questions/35002007/build-and-install-rabbitmq-on-rhel#comment57804796_35002007
#参考2:http://erlang.org/doc/installation_guide/INSTALL.html
/usr/local/bin/make TARGET_DIR=/usr/local/rabbitmq SBIN_DIR=/usr/local/rabbitmq/sbin MAN_DIR=/usr/local/rabbitmq/man DOC_INSTALL_DIR=/usr/local/rabbitmq/doc install

#配置
mkdir /etc/rabbitmq
cp ./deps/rabbit/docs/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

#编辑环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/lib/erlang/lib/rabbitmq_server-3.6.10/sbin/
source /etc/profile

cd ~
rm -rf /root/rabbitmq-server-3.6.10*

#启动
rabbitmq-server &

#启动插件
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt

#放行端口
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 15672 -j ACCEPT

service iptables restart

#浏览器打开
http://localhost:15672   guest  guest
考虑到安全,guest账户是只能用localhost登陆的。
临时解除限制(不建议,会减低安全性):将ebin目录下rabbit.app中loopback_users里的<<"guest">>删除, 
 并重启rabbitmq,可通过任意IP使用guest账号登陆管理控制台。

自启动

Centos 7

vim /lib/systemd/system/rabbitmq.service
# 编写服务

[Unit]
Description=Start RabbitMQ at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/local/lib/erlang/lib/rabbitmq_server-0.0.0/sbin/rabbitmq-server
PrivateTmp=true

[Install]
WantedBy=multi-user.target

######################################################################
# 参考,以下是yum安装的服务
[Unit]
Description=RabbitMQ broker
After=syslog.target network.target

[Service]
Type=notify
User=rabbitmq
Group=rabbitmq
WorkingDirectory=/var/lib/rabbitmq
ExecStart=/usr/lib/rabbitmq/bin/rabbitmq-server
ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl stop

[Install]
WantedBy=multi-user.target

#####################################################################
# 重载服务,启动服务
systemctl daemon-reload
systemctl start rabbitmq.service

centos6 参考:http://blog.csdn.net/yxwmzouzou/article/details/42652317


安装elixir环境的简单方法
https://segmentfault.com/a/1190000000741218
https://github.com/elixir-lang/elixir/archive/v1.4.2.tar.gz

配置参考:
http://blog.csdn.net/historyasamirror/article/details/6827870
http://blog.csdn.net/feng4656/article/details/17371005


报错

启动失败

mark
一段时间没有去看,突然挂掉了,磁盘没满,启动的时候报错;缺少了日志文件,不知为什么日志给清除了;rabbitmq不会自动创建日志文件,创建这个文件就能正常启动了。


常用命令

用户管理

用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。

相应的命令

(1) 新增一个用户:rabbitmqctl add_user Username Password

(2) 删除一个用户:rabbitmqctl delete_user Username

(3) 修改用户的密码:rabbitmqctl change_password Username Newpassword

(4) 查看当前用户列表:rabbitmqctl list_users


用户角色

按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。

(1) 超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

(2) 监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

(3) 策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。与administrator的对比,administrator能看到这些内容

(4) 普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

(5) 其他
无法登陆管理控制台,通常就是普通的生产者和消费者。

设置用户角色的命令为:rabbitmqctl set_user_tags User Tag

User为用户名,Tag为角色名(对应于上面的administrator,monitoring,policymaker,management,或其他自定义名称)。
也可以给同一用户设置多个角色,例如:rabbitmqctl set_user_tags hncscwc monitoring policymaker


用户权限

用户权限指的是用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作。

例如: 将queue绑定到某exchange上,需要具有queue的可写权限,以及exchange的可读权限;向exchange发送消息需要具有exchange的可写权限;从queue里取数据需要具有queue的可读权限。详细请参考官方文档中"How permissions work"部分。

相关命令为:
[VHostPath]即是虚拟路径,一般默认配置是"/"


集群

RabbitMQ原理、集群、基本操作及常见故障处理:https://www.toutiao.com/a6719773033159983624/

(●゚ω゚●)