[环境部署]RabbitMQ环境部署

目录

系统版本

RabbitMQ包下载和解压

系统环境变量、服务环境变量、服务配置

系统环境变量

服务环境变量、服务配置

RabbitMQ启动

安装依赖服务

erlang

加入系统service,使用service命令启停rmq

探路

起航


系统版本

centos 6.10(iso版本:CentOS-6.10-x86_64-bin-DVD1)

 

RabbitMQ包下载和解压

官方地址:https://www.rabbitmq.com/install-generic-unix.html

我安装的版本:3.8.7

包文件名:rabbitmq-server-generic-unix-3.8.7.tar.xz

 

上传到服务器后,解压

xz -d rabbitmq-server-generic-unix-3.8.7.tar.xz

tar -xvf rabbitmq-server-generic-unix-3.8.7.tar

解压后的文件树

# 忽略插件目录(插件文件以ez后缀)和LICENSE
[root@openstack-base rabbitmq_server-3.8.7]# tree |grep -v LICENSE |grep -v ez
.
├── escript
│   ├── rabbitmqctl
│   ├── rabbitmq-diagnostics
│   ├── rabbitmq-plugins
│   ├── rabbitmq-queues
│   └── rabbitmq-upgrade
├── etc
│   └── rabbitmq
├── INSTALL
├── plugins
│   ├── README
├── sbin
│   ├── rabbitmqctl
│   ├── rabbitmq-defaults
│   ├── rabbitmq-diagnostics
│   ├── rabbitmq-env
│   ├── rabbitmq-plugins
│   ├── rabbitmq-queues
│   ├── rabbitmq-server
│   └── rabbitmq-upgrade
└── share
    └── man
        ├── man5
        │   └── rabbitmq-env.conf.5.gz
        └── man8
            ├── rabbitmqctl.8.gz
            ├── rabbitmq-diagnostics.8.gz
            ├── rabbitmq-echopid.8.gz
            ├── rabbitmq-plugins.8.gz
            ├── rabbitmq-queues.8.gz
            ├── rabbitmq-server.8.gz
            ├── rabbitmq-service.8.gz
            └── rabbitmq-upgrade.8.gz

9 directories, 110 files

系统环境变量、服务环境变量、服务配置

系统环境变量

将sbin目录加入到环境变量中

编辑/etc/bashrc 文件,并在末尾加入以下代码

export RABBITMQ_HOME="/root/rabbitmq-server_3.8.7"
export PATH="$RABBITMQ_HOME/sbin:$PATH"

# RABBITMQ_HOME 要根据个人情况修改

修改完后 source /etc/bashrc 使环境变量生效

服务环境变量、服务配置

rmq会有默认的环境变量(以RABBITMQ_ 前缀) 和默认启动配置,具体后续补充

也可自主指定环境变量文件和配置文件

请先阅读sbin/rabbitmq-defaults 文件,查看相关内容

默认的环境变量文件路径及文件名: etc/rabbitmq/rabbitmq-env.conf

默认的配置文件路径及文件名: etc/rabbitmq/rabbitmq (这个可以在rabbitmq-env.conf中配置的)

 

RabbitMQ启动

安装依赖服务

erlang

要先安装erlang,可根据官方引导完成安装,具体参考:https://www.erlang-solutions.com/resources/download.html

(但我印象里没有经历那么多步骤,只以下步骤就可以)

在/etc/yum.repo.d/ 目录下新建erlang.repo文件,内容如下

[erlang-solutions]
name=CentOS $releasever - $basearch - Erlang Solutions
baseurl=https://packages.erlang-solutions.com/rpm/centos/$releasever/$basearch
gpgcheck=1
gpgkey=https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
enabled=1

执行yum -y install erlang 进行安装

锁定erlang版本

1、安装versionlock

yum -y install yum-versionlock

2、使用versionlock锁定erlang版本

yum versionlock erlang

 

加入系统service,使用service命令启停rmq

探路

绕弯的原因

主要是不喜欢通过yum安装,bin、conf、log等等都特别分散,不好找,不如放在一处来的爽快

读者可直接跳过探路的步骤,下载使用后面的github文件

为了获得相对官方的init.d脚本,我按照官方引导使用yum安装的rmq,具体参考:https://www.rabbitmq.com/install-rpm.html#bintray

大致如下:

在/etc/yum.repo.d/ 目录下新建rabbitmq-server.repo文件,内容如下

这里我参考上面erlang的格式,修改了一下

1)gpgcheck改为了1

2)加入了gpgkey,其为参考文档中的asc地址

3)repo_gpgcheck去掉了

[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.8.x/el/6/
gpgcheck=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
enabled=1

执行yum -y install rabbitmq-server进行安装

安装完成后很多文件就都准备好了,譬如/etc/init.d/rabbitmq-server     /etc/rabbitmq    /usr/sbin中rabbitmq开头的二进制文件  等

这里我取/etc/init.d/rabbitmq-server 文件,保留到本地

修改其中内容

# 添加RABBITMQ_HOME=/root/rabbitmq_server-3.8.7  这个主要用于后面替换文件路径用的,具体路径要根据个人情况修改
RABBITMQ_HOME=/root/rabbitmq_server-3.8.7

# 添加export HOME=/root   这个不加的话,使用service rabbitmq-server start | status 命令会报crash,这里踩坑了好几个小时
export HOME=/root

# 替换DAEMON、CONTROL、PID_FILE、RABBITMQ_LOG_BASE
DAEMON=${RABBITMQ_HOME}/sbin/${NAME}
CONTROL=${RABBITMQ_HOME}/sbin/rabbitmqctl
: ${RABBITMQ_SERVER_CONSOLE_OUTPUT_DIR:=${RABBITMQ_LOG_BASE:-${RABBITMQ_HOME}/var/log/rabbitmq}}

# 其他的不需要改动

为了方便,直接附一个地址,以供学习下载使用

https://github.com/chkinglee/asgard-treasury/blob/master/rabbitmq/rabbitmq-server

注意将rabbitmq-server 上传到 /etc/init.d 路径下,并赋予可执行权限

上传: rz -be

授权:chmod +x rabbitmq-server

 

起航

服务启停

service rabbitmq-server start
service rabbitmq-server status
service rabbitmq-server stop
service rabbitmq-server restart

加入开机启动

chkconfig --add rabbitmq-server
chkconfig rabbitmq-server on

服务启动后

会在RABBITMQ_HOME目录中 (根据上面的rabbitmq-server脚本中指定的各个路径配置)

1、创建 var/lib/rabbitmq/mnesia 目录存放数据文件

2、创建 var/run/rabbitmq/pid 文件存放pid

3、在 var/log/rabbitmq 目录中创建日志文件

进程查找

主要根据 erl  或者 rabbitmq 关键词查找进程

附部署完成后的目录树(已经删掉了没用LICENSE文件)

[root@openstack-base rabbitmq_server-3.8.7]# tree |grep -v ez
.
├── escript
│   ├── rabbitmqctl
│   ├── rabbitmq-diagnostics
│   ├── rabbitmq-plugins
│   ├── rabbitmq-queues
│   └── rabbitmq-upgrade
├── etc
│   └── rabbitmq
│       └── rabbitmq-env.conf
├── plugins
│   ├── README
├── sbin
│   ├── rabbitmqctl
│   ├── rabbitmq-defaults
│   ├── rabbitmq-diagnostics
│   ├── rabbitmq-env
│   ├── rabbitmq-plugins
│   ├── rabbitmq-queues
│   ├── rabbitmq-server
│   └── rabbitmq-upgrade
├── share
│   └── man
│       ├── man5
│       │   └── rabbitmq-env.conf.5.gz
│       └── man8
│           ├── rabbitmqctl.8.gz
│           ├── rabbitmq-diagnostics.8.gz
│           ├── rabbitmq-echopid.8.gz
│           ├── rabbitmq-plugins.8.gz
│           ├── rabbitmq-queues.8.gz
│           ├── rabbitmq-server.8.gz
│           ├── rabbitmq-service.8.gz
│           └── rabbitmq-upgrade.8.gz
└── var
    ├── lib
    │   └── rabbitmq
    │       └── mnesia
    │           ├── rabbit@openstack-base
    │           │   ├── cluster_nodes.config
    │           │   ├── DECISION_TAB.LOG
    │           │   ├── LATEST.LOG
    │           │   ├── msg_stores
    │           │   │   └── vhosts
    │           │   │       └── 628WB79CIFDYO9LJI6DKMI09L
    │           │   │           ├── msg_store_persistent
    │           │   │           │   └── 0.rdq
    │           │   │           ├── msg_store_transient
    │           │   │           │   └── 0.rdq
    │           │   │           └── recovery.dets
    │           │   ├── nodes_running_at_shutdown
    │           │   ├── quorum
    │           │   │   └── rabbit@openstack-base
    │           │   │       ├── 00000002.wal
    │           │   │       ├── meta.dets
    │           │   │       └── names.dets
    │           │   ├── rabbit_durable_exchange.DCD
    │           │   ├── rabbit_durable_queue.DCD
    │           │   ├── rabbit_durable_route.DCD
    │           │   ├── rabbit_runtime_parameters.DCD
    │           │   ├── rabbit_serial
    │           │   ├── rabbit_topic_permission.DCD
    │           │   ├── rabbit_user.DCD
    │           │   ├── rabbit_user_permission.DCD
    │           │   ├── rabbit_vhost.DCD
    │           │   ├── schema.DAT
    │           │   └── schema_version
    │           ├── rabbit@openstack-base-feature_flags
    │           └── rabbit@openstack-base-plugins-expand
    ├── log
    │   └── rabbitmq
    │       ├── log
    │       │   └── crash.log
    │       ├── rabbit@openstack-base.log
    │       ├── rabbit@openstack-base_upgrade.log
    │       ├── shutdown_err
    │       ├── shutdown_log
    │       ├── startup_err
    │       └── startup_log
    └── run
        └── rabbitmq
            └── pid

27 directories, 118 files

1、启动服务前建议预先创建var/log/rabbitmq 目录,否则start时可能会夯住

2、在init.d脚本中,注意添加export HOME=  ,否则使用service rabbitmq-server start时,会crash,提示No home for cookie file

这个坑踩了很久,当时尝试sh /etc/init.d/rabbitmq-server start 就是成功的,但使用service rabbitmq-server start 就会crash,找了很久解决方案,最后得以解决。。

大概就是在HOME目录中会创建一个.erlang.cookie 文件存放 cookie hash

3、尽量不要采取那些删mnesia目录的解决方案,那是存放数据的,没数据的话还好说,有数据的话你删了还玩啥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值