想装个 RabbitMQ,然后源上没有,就只好手动装了。(对着果冻就摁下 pakreq
先从官方网站下载 Generic UNIX 的二进制包,地址不用贴了吧 Google 一下就有了。。
找个地方就解压下来,我现在比较喜欢在 /opt
下面放这些自己安装的服务软件。
1 2 3 4 cd /opttar pxfv ~/Downloads/rabbitmq-server-generic-unix-3.7.2.tar.xz mv rabbitmq_server-3.7.2 rabbitmqcd 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
。顺便为了方便管理,增加了 config
、data
、log
三个文件夹。
1 2 3 4 5 6 useradd -b /opt/rabbitmq -d /opt/rabbitmq -s /sbin/nologin rabbitmq usermod -a -G wheel rabbitmq mkdir configmkdir datamkdir log
新建了一个 rabbitmq.server
方便直接用 systemd
启动。
1 2 3 4 5 6 7 8 9 10 11 12 [Unit] Description =RabbitMQ - Message Queue ServiceRequires =network.target[Service] EnvironmentFile =/opt/rabbitmq/config/rabbitmq-environmentExecStart =/opt/rabbitmq/sbin/rabbitmq-serverUser =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 HOME=/opt/rabbitmq RABBITMQ_HOME=/opt/rabbitmq RABBITMQ_BASE=$RABBITMQ_HOME /data RABBITMQ_MNESIA_BASE=$RABBITMQ_HOME /data/mnesia RABBITMQ_LOG_BASE=$RABBITMQ_HOME /log 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
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 export RABBITMQ_HOME=/opt/rabbitmqexport RABBITMQ_BASE=$RABBITMQ_HOME /dataexport RABBITMQ_MNESIA_BASE=$RABBITMQ_HOME /data/mnesiaexport RABBITMQ_LOG_BASE=$RABBITMQ_HOME /logexport RABBITMQ_CONFIG_FILE=$RABBITMQ_HOME /config/rabbitmq-defexport RABBITMQ_ADVANCED_CONFIG_FILE=$RABBITMQ_HOME /config/rabbitmq-advexport 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