公司的开发环境没有联网,想要从一台崭新的mini centos7安装rabbitmq。用于后续的开发,由于对linux一点不懂,被这个依赖包的问题折磨完了。
不过最终还是找到一个办法。
centos下一些命令需要的rpm包可以在此网站下载。
Index of /centos/7/os/x86_64/Packages/
比如gcc,autoconf等命令。
但是这种适合单独下载某个指定的rpm。但是无法处理关联的依赖问题。所以最简单的还是通过yum这种方式去下载到指定文件夹,自动处理依赖关系。
首先找到一台能联网的虚拟机,安装一个插件。
yum install yum-plugin-downloadonly
下载需要的rpm到指定文件夹。
yum -y install --downloadonly --downloaddir=/opt/rpm perl gcc
找到指定文件夹,将rpm移到离线的虚拟机里。然后统一安装rpm。
rpm -ivh *.rpm --force --nodeps
本文就是基于此方法来安装erlang所需要的依赖。
进入正题。
准备erlang所需的rpm包
准备rpm包
安装erlang需要下面一些插件的支持。
gcc gcc-c++ unixODBC-devel openssl-devel ncurses-devel perl
所以要提前通过能联网的机器通过文章开始说明的方式下载好这些rpm。
yum -y install --downloadonly --downloaddir=/opt/rpm gcc gcc-c++ unixODBC-devel openssl-devel ncurses-devel perl
将这些rpm转移到离线虚拟机下。然后统一安装这些rpm包。
rpm -ivh *.rpm --force --nodeps
安装erlang
rabbitmq需要erlang环境,所以需要先下载erlang源码包。
我要安装的是3.8.0版本的rabbitmq,去rabbitmq官网查看对应的erlang版本。选择了22.1版本。于是官网下载此版本erlang。
otp_src_22.1.tar.gz
将官网下载的源码包,下载后转移到centos中。准备解压源码包。
tar -xzvf otp_src_22.1.tar.gz
将源码解压的文件夹转移到 usr/local内,毕竟是比较重要的软件。类似于windows的C:\Program Files
mv otp_src_22.1 /usr/local/
进入到解压后的文件夹。准备编译。
[root@zbh rabbitmq]# cd /usr/local/otp_src_22.1/
创建一个erlang文件夹,准备放编译后的文件。
mkdir ../erlang
执行configure文件夹,生成makefile文件,配置安装路径。
./configure --prefix=/usr/local/erlang --without-javac
出现下图,不影响,继续进行。因为我们没有java环境。
编译安装到刚才指定的erlang中,此过程很慢。
make && make install
添加环境变量到profile文件中
echo 'export PATH=$PATH:/usr/local/erlang/bin' >> /etc/profile
刷新刚才添加的环境变量
[root@zbh erlang]# source /etc/profile
此时就完成了erlang的安装,测试一下。
[root@zbh erlang]# erl
Erlang/OTP 22 [erts-10.5] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1]
Eshell V10.5 (abort with ^G)
1> halt().
[root@zbh erlang]#
或者输入erl的版本。
[root@zbh erlang]# erl -version
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 10.5
安装RabbitMQ
官网下载rabbitmq的3.8.0的源码包。
注意要下载源码包。
rabbitmq-server-generic-unix-3.8.0.tar.xz
因为它是xz文件,需要先转换为tar文件。
[root@zbh rabbitmq]# xz -d rabbitmq-server-generic-unix-3.8.0.tar.xz
此时就变成了tar 文件。
-rw-r--r--. 1 root root 86643553 Jun 24 21:42 otp_src_22.1.tar.gz
-rw-r--r--. 1 root root 13619200 Jun 24 21:42 rabbitmq-server-generic-unix-3.8.0.tar
解压rabbitmq-server包。
[root@zbh rabbitmq]# tar -xvf rabbitmq-server-generic-unix-3.8.0.tar
转移到/usr/local中
[root@zbh rabbitmq]# mv rabbitmq_server-3.8.0/ /usr/local/
配置环境变量
[root@zbh local]# echo 'export PATH=$PATH:/usr/local/rabbitmq_server-3.8.0/sbin' >> /etc/profile
刷新环境变量
[root@zbh local]# source /etc/profile
到这就完成了rabbitmq的安装。
常用命令
启动rabbitmq
rabbitmq-server -detached
停止rabbitmq
rabbitmqctl stop
查看rabbitmq状态
rabbitmqctl status
下面代码说明了已经开启了3个端口,5672,25672,15672(管理页面的端口,我提前开启了)
Totals
Connection count: 0
Queue count: 0
Virtual host count: 1
Listeners
Interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Interface: [::], port: 15672, protocol: http, purpose: HTTP AP
查看rabitmq状态,如果出现下方代码
rabbit@zbh:
* connected to epmd (port 4369) on zbh
* epmd reports node 'rabbit' uses port 25672 for inter-node and CLI tool traffic
* can't establish TCP connection to the target node, reason: timeout (timed out)
* suggestion: check if host 'zbh' resolves, is reachable and ports 25672, 4369 are not blocked by firewall
找到 /etc/hosts文件,第一行后边添加你的主机名 zbh 即可.
配置rabbitmq
开启web管理页面的插件
rabbitmq-plugins enable rabbitmq_management
这时候主机访问192.168.182.10:15672就可以打开web管理页面。(保证端口开放给主机,或者关闭防火墙)
配置账号
guest的账号从3.3.0开始仅允许本机访问,不允许远程访问。可以修改配置文件解决这个问题,但为了安全,暂时不需要。直接创建其它管理员账号。
添加用户,设置角色,赋予权限的命令
查看用户
[root@zbh local]# rabbitmqctl list_users
Listing users ...
user tags
guest [administrator]
添加用户
[root@zbh local]# rabbitmqctl add_user zhengbh 123456
Adding user "zhengbh" ...
配置权限
赋予zhengbh 在 / 虚拟主机上配置消息,读和写的权限。
[root@zbh local]# rabbitmqctl set_permissions -p "/" zhengbh ".*" ".*" ".*"
Setting permissions for user "zhengbh" in vhost "/" ...
查看用户权限
[root@zbh local]# rabbitmqctl list_user_permissions zhengbh
Listing permissions for user "zhengbh" ...
vhost configure write read
/ .* .* .*
给用户设置tag,也即是用户的角色
[root@zbh local]# rabbitmqctl set_user_tags zhengbh administrator
Setting tags for user "zhengbh" to [administrator] ...
至此基本完成了rabbitmq的安装和配置。再一次登陆zhengbh账号试试。
但是每次重新启动都需要重新开启rabbitmq服务。
rabbitmq-server -detached
没有设置自动启动,需要编写启动文件。暂时先不研究了。
安装延时插件
延时任务需要用到的延时插件,github上下载,直接拖到rabbitmq安装文件夹下的plugins下。
启动延时插件
[root@zbh local]# rabbitmq-plugins enable rabbitmq_delayed_message_exchange
[root@zbh local]# rabbitmq-plugins enable rabbitmq_delayed_message_exchange
Enabling plugins on node rabbit@zbh:
rabbitmq_delayed_message_exchange
The following plugins have been configured:
rabbitmq_delayed_message_exchange
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@zbh...
The following plugins have been enabled:
rabbitmq_delayed_message_exchange
started 1 plugins.
本人安装时用到的参考网址:
安装erlang
安装rabbitmq
CentOS7安装RabbitMQ - 不该相遇在秋天 - 博客园
配置权限