Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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 三个文件夹。

1
2
3
4
5
6
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 启动。

1
2
3
4
5
6
7
8
9
10
11
12
[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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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 来使用(怎么这么刁钻啊

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

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

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

评论