几年前写过在Linux上安装rabbitMQ,今年在新项目安装时发现之前写的方法在RedHat7版本以上已经不适用了,记录下新的安装方式
下载erlang
下载地址:http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
下载rabbitmq
下载地址:http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
[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>
[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!
[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,关闭卸载的时候没有清理干净