消息队列之 RabbitMQ 二(安装篇)
看了入门篇之后应该对RabbitMQ有个大体的了解,接下来进入正题 RabbitMQ安装
系统环境:Centos7_x64
安装准备
打开链接:http://www.rabbitmq.com/download.html
进入Centos版安装导航页面:
http://www.rabbitmq.com/install-rpm.html
先下载rabbitmq rpm安装包
rabbitmq 依赖erlang环境,所以还要下载erlang安装包
网页向下拉 找到Install Erlang
点击supported version 打开http://www.rabbitmq.com/which-erlang.html
看一下需要安装的rabbitmq 所需的erlang版本区间
然后打开 rabbitmq零依赖版的erlang下载地址:
zero dependency Erlang RPM package for running RabbitMQ.
进入 https://github.com/rabbitmq/erlang-rpm
往下拉找到:Release Artifacts
点击 GitHub 打开 https://github.com/rabbitmq/erlang-rpm/releases
(或点击左边的 from Bintary :https://bintray.com/rabbitmq/rpm/erlang)
(实在不行点下面那个Package Cloud:https://packagecloud.io/rabbitmq/erlang/)
然后下载你所需的erlang安装包,Centos7 下载el7 Centos6 下载 el6
下载的时候如果失败,得多试几遍,国外服务器比较慢,还有被墙风险
执行安装
把下载的安装包上传到服务器 /home/soft 下
首先安装基础编辑环境(一般系统都会有,已有的可忽略)
1 |
yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto |
然后安装下载的rpm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@iZm5eef03d3t5i0uciwpfxZ ~]# cd /home/soft You have new mail in /var/spool/mail/root [root@iZm5eef03d3t5i0uciwpfxZ soft]# ls erlang-20.3-1.el7.centos.x86_64.rpm rabbitmq-server-3.7.4-1.el7.noarch.rpm [root@iZm5eef03d3t5i0uciwpfxZ soft]# rpm -ivh erlang-20.3-1.el7.centos.x86_64.rpm warning: erlang-20.3-1.el7.centos.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 6026dfca: NOKEY Preparing... ################################# [100%] Updating / installing... 1:erlang-20.3-1.el7.centos ################################# [100%] [root@iZm5eef03d3t5i0uciwpfxZ soft]# rpm -ivh rabbitmq-server-3.7.4-1.el7.noarch.rpm warning: rabbitmq-server-3.7.4-1.el7.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 6026dfca: NOKEY error: Failed dependencies: socat is needed by rabbitmq-server-3.7.4-1.el7.noarch [root@iZm5eef03d3t5i0uciwpfxZ soft]# |
噢!出错了 提示缺少:socat
安装socat后才能安装rabbitmq
1 |
yum install socat |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
[root@iZm5eef03d3t5i0uciwpfxZ soft]# yum install socat Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile 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 base 290 k Transaction Summary ================================================================================================================================================================================================================================================================ Install 1 Package Total download size: 290 k Installed size: 1.1 M Is this ok [y/d/N]: y Downloading packages: socat-1.7.3.2-2.el7.x86_64.rpm | 290 kB 00: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! You have mail in /var/spool/mail/root [root@iZm5eef03d3t5i0uciwpfxZ soft]# rpm -ivh rabbitmq-server-3.7.4-1.el7.noarch.rpm warning: rabbitmq-server-3.7.4-1.el7.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 6026dfca: NOKEY Preparing... ################################# [100%] Updating / installing... 1:rabbitmq-server-3.7.4-1.el7 ################################# [100%] [root@iZm5eef03d3t5i0uciwpfxZ soft]# |
查看rabbitmq-server是否已经安装好了,能查到说明已经安装完成了。
1 |
rpm -qa|grep rabbitmq |
1 2 3 |
[root@iZm5eef03d3t5i0uciwpfxZ ~]# rpm -qa|grep rabbitmq rabbitmq-server-3.7.4-1.el7.noarch [root@iZm5eef03d3t5i0uciwpfxZ ~]# |
安装后的系统设置
安装命令维护插件
1 |
rabbitmq-plugins enable rabbitmq_management |
设置配置文件,并开启用户远程访问
去 /usr/share/doc 下找到rabbirmq 配置模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[root@iZm5eef03d3t5i0uciwpfxZ ~]# cd /usr/share/doc [root@iZm5eef03d3t5i0uciwpfxZ doc]# find -name rabbit* ./rabbitmq-server-3.7.4 [root@iZm5eef03d3t5i0uciwpfxZ doc]# cd rabbitmq-server-3.7.4 [root@iZm5eef03d3t5i0uciwpfxZ rabbitmq-server-3.7.4]# ls LICENSE LICENSE-APACHE2-ExplorerCanvas LICENSE-BSD-recon LICENSE-ISC-cowboy LICENSE-MIT-Erlware-Commons LICENSE-MIT-jQuery164 LICENSE-MIT-Sammy060 LICENSE-rabbitmq_aws set_rabbitmq_policy.sh.example LICENSE-APACHE2 LICENSE-APL2-Stomp-Websocket LICENSE-erlcloud LICENSE-MIT-EJS LICENSE-MIT-Flot LICENSE-MIT-Mochi LICENSE-MPL2 rabbitmq.config.example LICENSE-APACHE2-excanvas LICENSE-BSD-base64js LICENSE-httpc_aws LICENSE-MIT-EJS10 LICENSE-MIT-jQuery LICENSE-MIT-Sammy LICENSE-MPL-RabbitMQ README [root@iZm5eef03d3t5i0uciwpfxZ rabbitmq-server-3.7.4]# cp rabbitmq.config.example /etc/rabbitmq/ [root@iZm5eef03d3t5i0uciwpfxZ rabbitmq-server-3.7.4]# cd /etc/rabbitmq/ [root@iZm5eef03d3t5i0uciwpfxZ rabbitmq]# ls enabled_plugins rabbitmq.config.example [root@iZm5eef03d3t5i0uciwpfxZ rabbitmq]# mv rabbitmq.config.example rabbitmq.config You have mail in /var/spool/mail/root [root@iZm5eef03d3t5i0uciwpfxZ rabbitmq]# ls enabled_plugins rabbitmq.config [root@iZm5eef03d3t5i0uciwpfxZ rabbitmq]# |
编辑配置文件:
1 |
vi /etc/rabbitmq/rabbitmq.config |
注意去掉后面的逗号
备注:安全起见,添加新用户之后把这个配置再改回来,并删除 guest 用户,下篇有讲
不要忘了开启防火墙 启用 5672 15672(如果不需要监控页面可以不开启) 端口
配置好之后启动服务:
1 |
rabbitmq-server -detached |
噢,报错:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
[root@iZm5eef03d3t5i0uciwpfxZ ~]# rabbitmq-server -detached Warning: PID file not written; -detached was passed. 2018-03-22 13:47:57 Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces 2018-03-22 13:47:57 crash_report initial_call: {auth,init,['Argument__1']} pid: <0.48.0> registered_name: [] error_info: {error,"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,2,[{file,"gen_server.erl"},{line,365}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,333}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]} ancestors: [net_sup,kernel_sup,<0.36.0>] message_queue_len: 0 messages: [] links: [<0.46.0>] dictionary: [] trap_exit: true status: running heap_size: 610 stack_size: 27 reductions: 954 2018-03-22 13:47:57 supervisor_report supervisor: {local,net_sup} errorContext: start_error reason: {"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,2,[{file,"gen_server.erl"},{line,365}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,333}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]} offender: [{pid,undefined},{id,auth},{mfargs,{auth,start_link,[]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}] 2018-03-22 13:47:57 supervisor_report supervisor: {local,kernel_sup} errorContext: start_error reason: {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,2,[{file,"gen_server.erl"},{line,365}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,333}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}}} offender: [{pid,undefined},{id,net_sup},{mfargs,{erl_distribution,start_link,[]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}] 2018-03-22 13:47:57 crash_report initial_call: {application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4']} pid: <0.35.0> registered_name: [] error_info: {exit,{{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,2,[{file,"gen_server.erl"},{line,365}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,333}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}}}}},{kernel,start,[normal,[]]}},[{application_master,init,4,[{file,"application_master.erl"},{line,134}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]} ancestors: [<0.34.0>] message_queue_len: 1 messages: [{'EXIT',<0.36.0>,normal}] links: [<0.34.0>,<0.33.0>] dictionary: [] trap_exit: true status: running heap_size: 987 stack_size: 27 reductions: 250 2018-03-22 13:47:57 std_info application: kernel 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,2,[{file,"gen_server.erl"},{line,365}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,333}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}}}}},{kernel,start,[normal,[]]}} type: permanent {"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,2,[{file,\"gen_server.erl\"},{line,365}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,333}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,247}]}]}}}}},{kernel,start,[normal,[]]}}}"} 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 Crash dump is being written to: /var/log/rabbitmq/erl_crash.dump...done |
改一下 /var/lib/rabbitmq/.erlang.cookie 的权限
1 |
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie |
再执行启动命令
1 2 3 |
[root@iZm5eef03d3t5i0uciwpfxZ rabbitmq]# rabbitmq-server -detached Warning: PID file not written; -detached was passed. ERROR: node with name "rabbit" already running on "iZm5eef03d3t5i0uciwpfxZ" |
依然报错,查看一下有没有rabbitmq进程执行
1 2 3 4 5 6 |
[root@iZm5eef03d3t5i0uciwpfxZ rabbitmq]# ps aux|grep rabbitmq rabbitmq 31455 5.3 0.9 3870772 75908 ? Ssl 13:53 0:04 /usr/lib64/erlang/erts-9.3/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 1280000 -K true -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.4/ebin -noshell -noinput -s rabbit boot -sname rabbit@iZm5eef03d3t5i0uciwpfxZ -boot start_sasl -config /etc/rabbitmq/rabbitmq -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit lager_log_root "/var/log/rabbitmq" -rabbit lager_default_file "/var/log/rabbitmq/rabbit@iZm5eef03d3t5i0uciwpfxZ.log" -rabbit lager_upgrade_file "/var/log/rabbitmq/rabbit@iZm5eef03d3t5i0uciwpfxZ_upgrade.log" -rabbit enabled_plugins_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/plugins:/usr/lib/rabbitmq/lib/rabbitmq_server-3.7.4/plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/rabbit@iZm5eef03d3t5i0uciwpfxZ-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit@iZm5eef03d3t5i0uciwpfxZ" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672 rabbitmq 31773 0.0 0.0 4308 540 ? Ss 13:53 0:00 erl_child_setup 1024 rabbitmq 31802 0.0 0.0 11544 448 ? Ss 13:53 0:00 inet_gethost 4 rabbitmq 31803 0.0 0.0 13668 656 ? S 13:53 0:00 inet_gethost 4 root 31965 0.0 0.0 112656 968 pts/7 R+ 13:55 0:00 grep --color=auto rabbitmq |
还真有,停止一下再启动
1 2 3 4 5 |
[root@iZm5eef03d3t5i0uciwpfxZ rabbitmq]# service rabbitmq-server stop Redirecting to /bin/systemctl stop rabbitmq-server.service [root@iZm5eef03d3t5i0uciwpfxZ rabbitmq]# rabbitmq-server -detached Warning: PID file not written; -detached was passed. [root@iZm5eef03d3t5i0uciwpfxZ rabbitmq]# |
这下OK了吧
浏览器输入 http://【rabbitmq所在ip】:15672
输入 guest 用户名密码(guest) 登录:
参考资料:
http://blog.csdn.net/hao134838/article/details/71512557
https://www.cnblogs.com/hobinly/p/7703972.html
http://www.bubuko.com/infodetail-2229779.html