手动安装 RabbitMQ

想装个 RabbitMQ,然后源上没有,就只好手动装了。(对着果冻就摁下 pakreq

先从官方网站下载 Generic UNIX 的二进制包,地址不用贴了吧 Google 一下就有了。。

找个地方就解压下来,我现在比较喜欢在 /opt 下面放这些自己安装的服务软件。

cd /opt
tar pxfv ~/Downloads/rabbitmq-server-generic-unix-3.7.2.tar.xz
mv rabbitmq_server-3.7.2 rabbitmq
cd rabbitmq

说实话,不喜欢里面的文件夹命名。。。又不是系统级别工具干嘛叫自己 sbin 呢。

ls -al
[OUTPUT]-------------------------------------------------------------------------------
total 72
drwxrwxr-x 14 rabbitmq     wheel  4096 Dec 30 04:30 .
drwxrwxr-x  8 root         wheel  4096 Dec 29 18:13 ..
drwxrwxr-x  2 rabbitmq     wheel 12288 Dec 23 15:00 ebin
drwxrwxr-x  2 rabbitmq     wheel  4096 Dec 23 15:00 escript
drwxrwxr-x  2 rabbitmq     wheel  4096 Dec 23 15:00 include
drwxrwxr-x  3 rabbitmq     wheel  4096 Dec 30 03:49 log
drwxrwxr-x  2 rabbitmq     wheel  4096 Dec 23 15:00 plugins
drwxrwxr-x  3 rabbitmq     wheel  4096 Dec 23 15:00 priv
drwxrwxr-x  2 rabbitmq     wheel  4096 Dec 23 15:00 sbin
drwxrwxr-x  3 rabbitmq     wheel  4096 Dec 23 15:00 share

权限是我自己事先设置好的,我增加了一个 rabbitmq 用户专门用来跑 rabbitmq-server 。顺便为了方便管理,增加了 configdatalog 三个文件夹。

useradd -b /opt/rabbitmq -d /opt/rabbitmq -s /sbin/nologin rabbitmq
usermod -a -G wheel rabbitmq

mkdir config
mkdir data
mkdir log

新建了一个 rabbitmq.server 方便直接用 systemd 启动。

[Unit]
Description=RabbitMQ - Message Queue Service
Requires=network.target

[Service]
EnvironmentFile=/opt/rabbitmq/config/rabbitmq-environment
ExecStart=/opt/rabbitmq/sbin/rabbitmq-server
User=rabbitmq

[Install]
WantedBy=multi-user.target

环境变量我独立在外部文件 /opt/rabbitmq/config/rabbitmq-environment

# The HOME directory
HOME=/opt/rabbitmq

# Home for RabbitMQ
RABBITMQ_HOME=/opt/rabbitmq

# Base Directory
RABBITMQ_BASE=$RABBITMQ_HOME/data

# MNESIA Directory
RABBITMQ_MNESIA_BASE=$RABBITMQ_HOME/data/mnesia

# Log base
RABBITMQ_LOG_BASE=$RABBITMQ_HOME/log

# Config file location and new filename
RABBITMQ_CONFIG_FILE=$RABBITMQ_HOME/config/rabbitmq-def
RABBITMQ_ADVANCED_CONFIG_FILE=$RABBITMQ_HOME/config/rabbitmq-adv

把文件复制到 /etc/systemd/system 然后 systemctl daemon-reload 就可以用 systemd 启动 RabbitMQ 了。rabbitmq-defrabbitmq-adv 这两个配置文件不需要增加后缀名,启动的时候 RabbitMQ 会自动创建对应的文件。

建议把 HOME 删掉之后导出到环境变量里,我的环境变量是从 /etc/profile.d 额外加载的,所以我在里面创建了 rabbitmq.sh ,之后要 chmod +x rabbitmq.sh

# Home for RabbitMQ
export RABBITMQ_HOME=/opt/rabbitmq

# Base Directory
export RABBITMQ_BASE=$RABBITMQ_HOME/data

# MNESIA Directory
export RABBITMQ_MNESIA_BASE=$RABBITMQ_HOME/data/mnesia

# Log base
export RABBITMQ_LOG_BASE=$RABBITMQ_HOME/log

# Config file location and new filename
export RABBITMQ_CONFIG_FILE=$RABBITMQ_HOME/config/rabbitmq-def
export RABBITMQ_ADVANCED_CONFIG_FILE=$RABBITMQ_HOME/config/rabbitmq-adv

#Export variables
export PATH=$PATH:$RABBITMQ_HOME/sbin

注意 RABBITMQ_BASE 是必须要的,因为 rabbitmqctl 命令从环境变量里获得 RabbitMQ 的位置来操作 rabbitmq-server 。还注意的是,RabbitMQ 的 socket 文件,只有运行 RabbitMQ 的用户可操作,所以在这里需要用 rabbitmq 的权限来使用 rabbitmqctl ,我增加了个 alias 来使用(怎么这么刁钻啊

alias rabbitmqctl='sudo -E -u rabbitmq rabbitmqctl';

好了这样就可以愉快地使用 RabbitMQ 开发了(吧?

其他进阶设置请参考资料 =w = : RabbitMQ - Install on Generic Unix

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 整体架构 部署步骤 基于 Docker 基本概念内存节点只保存状态到内存,例外情况是:持久的 queue 的内容将...
    mvictor阅读 12,822评论 5 30
  • rabbitmq有3种模式,集群模式2种• 单机模式:即单机情况不做集群,就单独运行一个rabbitmq而已。...
    嗷大彬彬阅读 4,100评论 1 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,253评论 19 139
  • 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时...
    预流阅读 585,741评论 51 787
  • RabbitMQ的安装 RabbitMQ下载地址 RabbitMQ是由LShift提供的一个Advanced Me...
    二月_春风阅读 14,528评论 0 10