CentOS7.2安装RabbitMQ笔记
身为.NET程序员,用着宇宙级IDE,干什么事都变得越来越懒了,Windows操作系统在手,能通过桌面点点点的方式何必找其他罪受呢。。于是RabbitMQ自然而然也就跑在Windows上了,说实话Windows配置RabbitMQ太恶心了,尤其对于手贱的人,总想着装了卸卸了装,慢慢的各种问题就出来了,不从装系统解决起来备受煎熬。。当然服务器上肯定不这么干,但自己电脑肯定不知不觉的瞎折腾,然后就比如安装的时候报这种问题:
重装系统肯定是不可能的- -征战这么久的电脑,桌面上的东西都懒得整理。。
Docker说实话真是个好东西,RabbitMQ镜像一拉分分钟就玩起来了,但Docker毕竟也有局限性,baidu查一下数据库不适合容器化大致能读到点弊端,队列同理。
最近又回过头来把RabbitMQ搞到CentOS上也是为了节约成本提升性能,RabbitMQ配置里存在一个hipe_compile的属性,它的描述如下:
醒目的20-50%性能提升不是一点点的诱惑,然而蛋疼的是默认不开启,而且很不友好的强调了下。。不支持Windows平台。。所以搞吧。。
安装erlang
先下载最新的erlang安装包,可以上官网下载页面下载后扔到CentOS服务器上也可以服务器本地通过命令行下载 wget http://erlang.org/download/otp_src_19.3.tar.gz(当然使用wget,ifconfig命令需要先安装插件yum install wget ,yum install net-tools)
下载完成后解压:tar -xvzf otp_src_19.3.tar.gz
erlang在安装前需要先安装下它的依赖工具:
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel
然后进入解压文件对erlang进行安装环境的配置(为了以后升级版本,此处就继续使用加压文件的名字了,至少我看得懂。。。。)
./configure --prefix=/usr/erlang --without-javac
然后进行编译make
然后安装 make install
然后就可以验证一下erlang是否安装成功了
接下来需要配置一下环境变量,把Erlang配置到/etc/profile文件中并通过source /etc/profile设置生效
安装RabbitMQ
下载RabbitMQ最新安装包,同样可以页面下载
也可以通过命令行下载:wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.8/rabbitmq-server-3.6.8-1.el7.noarch.rpm
下载完成后依旧照着文档走先执行下:
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
然后执行:
yum install rabbitmq-server-3.6.8-1.el7.noarch.rpm
这时候就是看点的过程了- -如果点正,系统镜像工具比较全的。。直接就安装后了。。点背的话后安装失败(对于我这Linux菜鸟就是时刻点背着。。):
点正中途输个Y就完事了
面对点背的情况,看了下错误信息,既然可以忽略那就忽略吧- -
rpm -i --nodeps rabbitmq-server-3.6.8-1.el7.noarch.rpm
这样也算安装完成了。。
配置RabbitMQ
RabbitMQ的配置文档还是写的比较详细的:通过配置文件搞的话也比较简单,简单理解就是创建俩文件rabbitmq-env.conf,rabbitmq.config然后都扔到/etc/rabbitmq目录下即可
rabbitmq-env.conf中可以配置下消息存储的位置,日志存储的位置这些比较常用的设置,比如
RABBITMQ_MNESIA_BASE=/usr/local/rabbitmq-server/data
RABBITMQ_LOG_BASE=/usr/local/rabbitmq-server/log
这里需要注意的就是既然不使用默认目录了,那目标目录是需要权限的,于是可以执行命令给rabbitmq-server授权:
chmod -R 777 /usr/local/rabbitmq-server
对于rabbitmq.config配置文件的样本可以在/usr/share/doc/rabbitmq-server/ 或者 /usr/share/doc/rabbitmq-server-3.6.8/里找到,就是一个rabbitmq.config.example的文件,去掉.example即可使用,RabbitMQ平时使用默认配置即可,此处修改下hipe_compile的属性为true就算完事了!
去掉%%注释,去掉屁股上的,即可。
然后保存安装下RabbitMQ服务,
正如配置所说- -启动慢。但跑起来的话性能很好!
启动RabbitMQ服务可以通过命令:rabbitmq-server start
添加rabbitmq到启动项可以通过命令:chkconfig rabbitmq-server on
还有就是开启管理界面可以通过命令:rabbitmq-plugins enable rabbitmq_management
注意:
对于将RabbitMQ添加到启动项实际上就是安装RabbitMQ时,会在/lib/systemd/system目录下自动创建一个 rabbitmq-server.service 的配置文件用于系统开启时执行(Centos 系统服务脚本目录有系统(system)和用户(user)两种,如需要开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:/lib/systemd/system;反之,用户登录后才能运行的程序,存在用户(user)里/lib/systemd/system/ ,服务以.service结尾。)如果这里没看到 rabbitmq-server.service文件则需要自己手动创建了,文件需要分配754权限即 chmod 745 rabbitmq-server.service,然后就可以测试执行以下了 systemctl start rabbitmq-server.service 然而这时候点背还是会报错的。。
不多好在错误信息比较明显。。
由于Erlang是自己编译安装的,这时候通过配置环境变量还是找不到erl的执行命令,简单的方式就是创建快捷方式:
ln -s /usr/local/otp_src_19.3/bin/erl /usr/bin
这样就可以正常安装RabbitMQ服务了。
chmod 745 rabbitmq-server.service配置中编写的内容同样要使用执行文件的实际位置的方式,简单的配置比如:
启动服务:systemctl start rabbitmq-server.service
设置开机启动:systemctl enable rabbitmq-server.service
停止开机启动:systemctl disable rabbitmq-server.service
重新启动服务:systemctl restart rabbitmq-server.service
查看服务当前状态:systemctl status rabbitmq-server.service
查看所有已启动服务:systemctl list-units --type=service
RabbitMQ集群配置
集群配置需要注意的就是同步.erlang.cookie文件内容,这个文件所在的位置文档里说是在/var/lib/rabbitmq/.erlang.cookie 或者$HOME/.erlang.cookie. 我一般就是既然RabbimtMQ安装成功了随便瞎个命令比如在RabbitMQ关闭的状态下在关一次:rabbitmqctl stop然后就报错了。。报错的内容里醒目的写着.erlang.cookie的位置。。windows同理。。(之所以说windows同理是因为我们的集群一台windows2012一台sentos7.2,鹅妹子嘤)
对于集群中erlang的版本最好一致,不能一致的话至少保证主版本号一致,而且祈祷高版本兼容低版本吧!(通常是没问题的)
对于RabbitMQ貌似对版本要求比较严格,修正号不一致都不成功。。
还好删除是比较方便的。。。
统一版本后就能连了,蛋疼。。
不关闭防火墙还要记得开放端口,通常4369,5672,15672,25672什么的是需要开放的:
firewall-cmd --add-port=4369/tcp --permanent