• 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

    
    
  • 相关阅读:
    匿名对象、栈空间和堆空间,String的两种实例化方式的比较,"=="和"equals()"的区别
    间接调用父类私有成员方法、通过抽象类可以达到不需要实现接口所有方法的目的
    this关键字、构造快和静态块
    java可变参数的支持和foreach输出
    java-循环结构体
    switch和if else的区别和应用
    作用域对象
    JavaWeb1
    JavaScript 表单编程
    好久不见
  • 原文地址:https://www.cnblogs.com/ylsforever/p/6600925.html
Copyright © 2020-2023  润新知