REDHAT7安装rabbitMQ

几年前写过在Linux上安装rabbitMQ,今年在新项目安装时发现之前写的方法在RedHat7版本以上已经不适用了,记录下新的安装方式

准备rpm包

  1. 下载erlang
    下载地址:http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm

  2. 下载rabbitmq
    下载地址:http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

安装

  1. 安装erlang
[root@localhost1 rabbitMQ]# rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:erlang-19.0.4-1.el7.centos       ################################# [100%]

测试erlang

[root@localhost1 rabbitMQ]# erl
Erlang/OTP 19 [erts-8.0.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V8.0.3  (abort with ^G)
1>   
  1. 安装socat
[root@localhost1 rabbitMQ]# yum install socat -y
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-
              : manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package socat.x86_64 0:1.7.3.2-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package        Arch            Version                  Repository        Size
================================================================================
Installing:
 socat          x86_64          1.7.3.2-2.el7            centos7          290 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 290 k
Installed size: 1.1 M
Downloading packages:
socat-1.7.3.2-2.el7.x86_64.rpm                             | 290 kB   00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : socat-1.7.3.2-2.el7.x86_64                                   1/1 
  Verifying  : socat-1.7.3.2-2.el7.x86_64                                   1/1 

Installed:
  socat.x86_64 0:1.7.3.2-2.el7                                                  

Complete!
  1. 安装rabbitMQ
[root@localhost1 rabbitMQ]# rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm 
warning: rabbitmq-server-3.6.6-1.el7.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 6026dfca: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:rabbitmq-server-3.6.6-1.el7      ################################# [100%]

启动

[root@localhost1 rabbitMQ]# systemctl start rabbitmq-server
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.

查看详细错误信息:

[root@localhost1 rabbitMQ]# systemctl status rabbitmq-server.service -l
鈼?[0m rabbitmq-server.service - RabbitMQ broker
   Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2020-03-17 10:15:55 CST; 27s ago
  Process: 38562 ExecStop=/usr/sbin/rabbitmqctl stop (code=exited, status=75)
  Process: 38323 ExecStart=/usr/sbin/rabbitmq-server (code=exited, status=1/FAILURE)
 Main PID: 38323 (code=exited, status=1/FAILURE)

Mar 17 10:15:52 localhost1 rabbitmq-server[38323]: exited: {{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,auth,{"Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces",[{auth,init_cookie,0,[{file,"auth.erl"},{line,286}]},{auth,init,1,[{file,"auth.erl"},{line,140}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,328}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}}}}},{kernel,start,[normal,[]]}}
Mar 17 10:15:52 localhost1 rabbitmq-server[38323]: type: permanent
Mar 17 10:15:52 localhost1 rabbitmq-server[38323]: {"Kernel pid terminated",application_controller,"{application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,auth,{\"Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces\",[{auth,init_cookie,0,[{file,\"auth.erl\"},{line,286}]},{auth,init,1,[{file,\"auth.erl\"},{line,140}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,328}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,247}]}]}}}}},{kernel,start,[normal,[]]}}}"}
Mar 17 10:15:52 localhost1 rabbitmq-server[38323]: Kernel pid terminated (application_controller) ({application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,auth,{"Error when reading /var/lib/rabbitmq
Mar 17 10:15:54 localhost1 rabbitmq-server[38323]: Crash dump is being written to: erl_crash.dump...done
Mar 17 10:15:54 localhost1 systemd[1]: rabbitmq-server.service: main process exited, code=exited, status=1/FAILURE
Mar 17 10:15:55 localhost1 systemd[1]: rabbitmq-server.service: control process exited, code=exited status=75
Mar 17 10:15:55 localhost1 systemd[1]: Failed to start RabbitMQ broker.
Mar 17 10:15:55 localhost1 systemd[1]: Unit rabbitmq-server.service entered failed state.
Mar 17 10:15:55 localhost1 systemd[1]: rabbitmq-server.service failed.

分析是权限问题,解决方式↓

[root@localhost1 rabbitMQ]# cd /var/lib/rabbitmq/
[root@localhost1 rabbitmq]# chmod +x .erlang.cookie

再次启动

[root@localhost1 rabbitmq]# systemctl status rabbitmq-server.service -l
鈼?[0m rabbitmq-server.service - RabbitMQ broker
   Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2020-03-17 10:20:02 CST; 10s ago
  Process: 39733 ExecStop=/usr/sbin/rabbitmqctl stop (code=exited, status=75)
  Process: 39479 ExecStart=/usr/sbin/rabbitmq-server (code=exited, status=1/FAILURE)
 Main PID: 39479 (code=exited, status=1/FAILURE)

Mar 17 10:19:59 localhost1 rabbitmq-server[39479]: exited: {{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,auth,{"Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only",[{auth,init_cookie,0,[{file,"auth.erl"},{line,286}]},{auth,init,1,[{file,"auth.erl"},{line,140}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,328}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}}}}},{kernel,start,[normal,[]]}}
Mar 17 10:19:59 localhost1 rabbitmq-server[39479]: type: permanent
Mar 17 10:20:00 localhost1 rabbitmq-server[39479]: {"Kernel pid terminated",application_controller,"{application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,auth,{\"Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only\",[{auth,init_cookie,0,[{file,\"auth.erl\"},{line,286}]},{auth,init,1,[{file,\"auth.erl\"},{line,140}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,328}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,247}]}]}}}}},{kernel,start,[normal,[]]}}}"}
Mar 17 10:20:00 localhost1 rabbitmq-server[39479]: Kernel pid terminated (application_controller) ({application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,auth,{"Cookie file /var/lib/rabbitmq/.erlan
Mar 17 10:20:01 localhost1 rabbitmq-server[39479]: Crash dump is being written to: erl_crash.dump...done
Mar 17 10:20:01 localhost1 systemd[1]: rabbitmq-server.service: main process exited, code=exited, status=1/FAILURE
Mar 17 10:20:02 localhost1 systemd[1]: rabbitmq-server.service: control process exited, code=exited status=75
Mar 17 10:20:02 localhost1 systemd[1]: Failed to start RabbitMQ broker.
Mar 17 10:20:02 localhost1 systemd[1]: Unit rabbitmq-server.service entered failed state.
Mar 17 10:20:02 localhost1 systemd[1]: rabbitmq-server.service failed.

新的问题,解决如下↓

[root@localhost1 rabbitmq]# chown rabbitmq:rabbitmq .erlang.cookie
[root@localhost1 rabbitmq]# chmod 400 .erlang.cookie

这次启动成功

问题

成功启动之后,查看rabbitmq状态

[root@localhost1 rabbitmq]# rabbitmqctl status
Status of node rabbit@localhost1 ...
Error: unable to connect to node rabbit@localhost1: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@localhost1]

rabbit@localhost1:
  * connected to epmd (port 4369) on localhost1
  * epmd reports node 'rabbit' running on port 25677
  * TCP connection succeeded but Erlang distribution failed
  * suggestion: hostname mismatch?
  * suggestion: is the cookie set correctly?
  * suggestion: is the Erlang distribution using TLS?

current node details:
- node name: '[email protected]'
- home dir: /var/lib/rabbitmq
- cookie hash: 54z9Im3dJwLrD3ph+T4UHQ==

原因是这台服务器之前装过rabbitmq,关闭卸载的时候没有清理干净

你可能感兴趣的:(rabbitmq)