想装个 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
。顺便为了方便管理,增加了 config
、data
、log
三个文件夹。
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-def
和 rabbitmq-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