1.操作系统环境

操作系统:CentOS6.5 / 64bit

用户:root

2.RabbitMQ编译安装

RabbitMQ是使用Erlang开发,所以安装RabbitMQ前需要先安装Erlang。

2.1.获取Erlang和RabbitMQ的源文件

http://erlang.org/download/下查找最新的源文件,我选择的是版本20

找到后,执行以下命令直接在Linux下获取源码

[root@test17vm5 ~]#wget  http://erlang.org/download/otp_src_20.0.tar.gz

http://www.rabbitmq.com/releases/rabbitmq-server查找到最新的源码版本,我选择v3.6.11

找到后,执行以下命令直接在Linux下获取源码

[root@test17vm5 ~]#wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.11/rabbitmq-server-3.6.11-1.noarch.rpm
2.2.编译安装Erlang
2.2.1.解压otp_src_20.0.tar.gz
[root@test17vm5 ~]#tar -zxvf  otp_src_20.0.tar.gz

编译安装Erlang对环境有要求,为防止在编译的时候提示某些软件包未安装之类的错误,所以我将Erlang需要的软件提前安装,直接使用yum进行安装即可

2.2.2.利用yum安装erlang编译环境(这里跟系统环境有关,可能已安装)
[root@test17vm5 ~]#yum -y install make ncurses-devel gcc gcc-c++ unixODBC unixODBC-devel openssl openssl-devel

安装后,有部分是更新,有部分是依赖更新,也有的是新安装等等,我的执行后结果如下图:

rabbitmq 的docker文件如何修改配置 rabbitmq配置文件目录_配置文件

2.2.3.编译安装Erlang

设置

[root@test17vm5 ~]#cd otp_src_20.0
[root@test17vm5 otp_src_20.0]#./configure      
                   --prefix=/usr/local/erlang     
                   --enable-smp-support          
                   --enable-threads                 
                   --enable-sctp                      
                   --enable-kernel-poll            
                   --enable-hipe                      
                   --with-ssl

上述参数说明:

–prefix 指定安装目录

–enable-smp-support启用对称多处理支持(Symmetric Multi-Processing对称多处理结构的简称)

–enable-threads启用异步线程支持

–enable-sctp启用流控制协议支持(Stream Control Transmission Protocol,流控制传输协议)

–enable-kernel-poll启用Linux内核poll

–enable-hipe启用高性能Erlang(High Performance Erlang)参考资料:

–with-ssl使用SSL包

上述说明未必准确,大家可以到官网或者其他地方查找资料确定一下

编译和安装

[root@test17vm5 otp_src_20.0]make && make install
2.3.设置环境变量

环境变量为追加

[root@test17vm5 ~]vi /etc/profile

ERL_HOME=/usr/local/erlang
PATH=$ERL_HOME/bin:$PATH
export ERL_HOME PATH

保存后,重新激活环境变量生效

[root@test17vm5 ~]source /etc/profile

验证是否已经追加成功

[root@test17vm5 ~]echo $ERL_HOME
/usr/local/erlang
[root@test17vm5 ~]echo $PATH
/usr/local/erlang/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
2.4.安装RabbitMQ
[root@test17vm5 ~]# rpm -i rabbitmq-server-3.6.11-1.noarch.rpm
warning: rabbitmq-server-3.6.11-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 056e8e56: NOKEY
error: Failed dependencies:
        erlang >= R16B-03 is needed by rabbitmq-server-3.6.11-1.noarch

上述错误信息显示安装失败,因为rabbigmq的依赖关系所导致,所以要忽略依赖,执行以下命令

[root@test17vm5 ~]# rpm -i --nodeps rabbitmq-server-3.6.11-1.noarch.rpm
2.5.启停RabbitMQ

官网提供启动方式
使用root用户启动和停止服务

/sbin/service rabbitmq-server stop/start/etc.
[root@test17vm5 ~]#service rabbitmq-server start  启动服务
[root@test17vm5 ~]#service rabbitmq-server etc   查看哪些命令可以使用
[root@test17vm5 ~]#service rabbitmq-server stop  停止服务
[root@test17vm5 ~]#service rabbitmq-server status查看服务状态
2.6.添加rabbitmq到启动项

执行以下代码

chkconfig rabbitmq-server on

参考资料:

2.7.RabbitMQ设置

从官网来看,RabbitMQ有两个配置文件,使用RPM方式安装:

RabbitMQ的根目录:/var/lib/rabbitmq
RabbitMQ的配置文件目录:/etc/rabbitmq/
RabbitMQ的日志文件目录:/var/log/rabbitmq
两个配置文件分别是:
rabbitmq.config
rabbitmq-env.conf
RabbitMQ环境变量配置文件,变量名称及内容可参考:http://www.rabbitmq.com/configure.html#define-environment-variables?
配置在文件中的变量使用参考中的标准变量,但是需要将变量前缀RABBITMQ_去掉
官网中提到的关于变量的默认内容及含义可参考:http://www.rabbitmq.com/relocate.html?
配置文件相关资料:http://www.rabbitmq.com/configure.html#configuration-file

3.web管理界面

rabbitmq有一个web管理的界面,可通过ip:15672进行访问,但是安装好之后默认的用户guest和密码guest是不能用来做远程登录的,这对用户名和密码只能在本地访问,说是为了安全,因此就必须创建一个用户管理员权限的新用户,记得在防火墙设置中添加15672端口。

添加用户:rabbitmqctl add_user admin admin
添加权限:rabbitmqctl set_permissions -p “/” admin “.” “.” “.*”
修改用户角色rabbitmqctl set_user_tags admin administrator

通过上面三步即新建了一个拥有管理员权限的用户admin,密码admin,此时就可以在浏览器中输入ip:15672,然后用admin进行登录。

rabbitmq 的docker文件如何修改配置 rabbitmq配置文件目录_后端_02

rabbitmq 的docker文件如何修改配置 rabbitmq配置文件目录_配置文件_03

4.安装过程中遇到的问题

我最开始的时候是直接使用的yum install命令安装的erlang,但用这种默认方法安装的erlang不是最新版本,而我却安装了最新版的rabbitmq,结果导致在启动rabbitmq时报如下错误,结果给我折腾了相当长时间,各种查都差不多一个解决办法,可能也是根据查了那么多信息总结过的一个可能性,那就是erlang版本太低,就抱着试一试的态度,下载了最新的erlang再一次进行安装,最后很惊喜,成功了!

{"init terminating in do_boot",{undef,[{rabbit_prelaunch,start,[]},{init,start_it,1},{init,start_em,1}]}}

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()