欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

手动安装 RabbitMQ

程序员文章站 2024-03-17 13:38:16
...

想装个 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