I use a MacPorts ecosystem and the rabbitmq-server
port is really old and it doesn't work anymore. So I have installed rabbitmq-server
on Mac OS X Sierra, using Generic Unix release . It works.
RabbitMQ is installed under /usr/local/rabbitmq_server-3.6.5/
and there are symlinks for all the executables under /usr/local/sbin/
.
ls -al
total 40
drwxr-xr-x 7 root wheel 238 Sep 24 19:50 .
drwxr-xr-x 8 root wheel 272 Sep 24 19:30 ..
lrwxr-xr-x 1 root wheel 55 Sep 24 19:50 rabbitmq-defaults -> /usr/local/rabbitmq_server-3.6.5/sbin/rabbitmq-defaults
lrwxr-xr-x 1 root wheel 50 Sep 24 19:50 rabbitmq-env -> /usr/local/rabbitmq_server-3.6.5/sbin/rabbitmq-env
lrwxr-xr-x 1 root wheel 54 Sep 24 19:50 rabbitmq-plugins -> /usr/local/rabbitmq_server-3.6.5/sbin/rabbitmq-plugins
lrwxr-xr-x 1 root wheel 53 Sep 24 19:50 rabbitmq-server -> /usr/local/rabbitmq_server-3.6.5/sbin/rabbitmq-server
lrwxr-xr-x 1 root wheel 49 Sep 24 19:50 rabbitmqctl -> /usr/local/rabbitmq_server-3.6.5/sbin/rabbitmqctl
When I run the RabbitMQ server, everything works like expected:
sudo rabbitmq-server
Password:
RabbitMQ 3.6.5. Copyright (C) 2007-2016 Pivotal Software, Inc.
## ## Licensed under the MPL. See http://www.rabbitmq.com/
## ##
########## Logs: /usr/local/rabbitmq_server-3.6.5/var/log/rabbitmq/rabbit@MacBookPro.log
###### ## /usr/local/rabbitmq_server-3.6.5/var/log/rabbitmq/rabbit@MacBookPro-sasl.log
##########
Starting broker...
completed with 6 plugins.
To start the daemon automatically I have created a file com.rabbitmq.rabbitmq-server.plist
that I have placed under /usr/local/etc/LaunchDaemons
. I have also created a symlink to this file in /Library/LaunchDaemons
. The owner is root
and the group is wheel
.
ls -al
total 88
drwxr-xr-x 13 root wheel 442 Sep 24 19:51 .
drwxr-xr-x+ 61 root wheel 2074 Sep 23 14:33 ..
lrwxr-xr-x 1 root wheel 103 Dec 11 2015 com.oracle.java.Helper-Tool.plist -> /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Resources/com.oracle.java.Helper-Tool.plist
lrwxr-xr-x 1 root wheel 63 Sep 24 19:16 com.rabbitmq.rabbitmq-server.plist -> /usr/local/etc/LaunchDaemons/com.rabbitmq.rabbitmq-server.plist
lrwxr-xr-x 1 root admin 66 Sep 12 10:04 org.freedesktop.dbus-system.plist -> /opt/local/Library/LaunchDaemons/org.freedesktop.dbus-system.plist
lrwxr-xr-x 1 root admin 76 Sep 23 16:40 org.macports.OpenSSH.plist -> /opt/local/etc/LaunchDaemons/org.macports.OpenSSH/org.macports.OpenSSH.plist
lrwxr-xr-x 1 root admin 76 Sep 20 20:43 org.macports.apache2.plist -> /opt/local/etc/LaunchDaemons/org.macports.apache2/org.macports.apache2.plist
lrwxr-xr-x 1 root admin 80 Sep 13 00:46 org.macports.memcached.plist -> /opt/local/etc/LaunchDaemons/org.macports.memcached/org.macports.memcached.plist
lrwxr-xr-x 1 root admin 90 Sep 23 16:33 org.macports.mysql56-server.plist -> /opt/local/etc/LaunchDaemons/org.macports.mysql56-server/org.macports.mysql56-server.plist
lrwxr-xr-x 1 root admin 72 Sep 23 15:17 org.macports.redis.plist -> /opt/local/etc/LaunchDaemons/org.macports.redis/org.macports.redis.plist
lrwxr-xr-x 1 root admin 74 Sep 23 15:19 org.macports.rsyncd.plist -> /opt/local/etc/LaunchDaemons/org.macports.rsyncd/org.macports.rsyncd.plist
lrwxr-xr-x 1 root admin 72 Sep 12 18:00 org.macports.slapd.plist -> /opt/local/etc/LaunchDaemons/org.macports.slapd/org.macports.slapd.plist
lrwxr-xr-x 1 root wheel 84 May 25 03:58 org.macports.supervisord.plist -> /opt/local/etc/LaunchDaemons/org.macports.supervisord/org.macports.supervisord.plist
Here is the plist file content:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.rabbitmq.rabbitmq-server</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/sbin/rabbitmq-server</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/sbin:/usr/bin:/bin:/usr/local/bin</string>
</dict>
</dict>
</plist>
When I try to load the plist file using
sudo launchctl load -w /Library/LaunchDaemons/com.rabbitmq.rabbitmq-server.plist
I don't get any error, but the daemon doesn't start. I have even tried to add debug information to the plist, but the log doesn't show any error. What am I doing wrong?
Well, it wasn't easy but I have finally found a solution myself.
This is the final com.rabbitmq.rabbitmq-server.plist
script:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.rabbitmq.rabbitmq-server</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/bin/daemondo</string>
<string>--label=rabbitmq-server</string>
<string>--start-cmd</string>
<string>/usr/local/sbin/rabbitmq-server</string>
<string>-u</string>
<string>nobody</string>
<string>;</string>
<string>--pid=exec</string>
</array>
<key>Disabled</key><true/>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>EnvironmentVariables</key>
<dict>
<key>HOME</key>
<string>/usr/local/rabbitmq_server-3.6.5</string>
<key>PATH</key>
<string>/usr/local/sbin:/usr/bin:/bin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/usr/local/rabbitmq_server-3.6.5/sbin</string>
</dict>
<key>StandardOutPath</key>
<string>/var/log/rabbit-launchd.log</string>
<key>StandardErrorPath</key>
<string>/var/log/rabbit-launchd-error.log</string>
</dict>
</plist>
I have used daemondo
from MacPorts to run the rabbitmq-server
executable. Than I have updated the PATH
variable. Using the StandardErrorPath
I have figured out that ErLang couldn't find the executable home dir: I got, in fact, this error:
erlexec: HOME must be set
So I have added HOME
to the EnvironmentVariables
section.
If you relay on MacPorts and you don't use Homebrew, you can use this script to run RabbitMQ server using launchd
and installing the Generic Unix release.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.