RabbitMQ не начинает использовать launchd
Я использую экосистему MacPorts и rabbitmq-server
Порт действительно старый и больше не работает. Итак, я установил rabbitmq-server
в Mac OS X Sierra, используя общий выпуск Unix. Оно работает.
RabbitMQ устанавливается под /usr/local/rabbitmq_server-3.6.5/
и есть символические ссылки для всех исполняемых файлов в /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
Когда я запускаю сервер RabbitMQ, все работает как ожидалось:
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.
Для автоматического запуска демона я создал файл com.rabbitmq.rabbitmq-server.plist
что я поместил под /usr/local/etc/LaunchDaemons
, Я также создал символическую ссылку на этот файл в /Library/LaunchDaemons
, Владелец root
и группа 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
Вот содержимое файла plist:
<?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>
Когда я пытаюсь загрузить файл plist, используя
sudo launchctl load -w /Library/LaunchDaemons/com.rabbitmq.rabbitmq-server.plist
Я не получаю никакой ошибки, но демон не запускается. Я даже пытался добавить отладочную информацию в список, но журнал не показывает ошибки. Что я делаю неправильно?
1 ответ
Ну, это было нелегко, но я наконец-то нашел решение сам.
Это финал com.rabbitmq.rabbitmq-server.plist
сценарий:
<?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>
я использовал daemondo
от MacPorts для запуска rabbitmq-server
исполняемый файл. Чем я обновил PATH
переменная. С использованием StandardErrorPath
Я выяснил, что ErLang не может найти исполняемый файл home dir: фактически, я получил эту ошибку:
erlexec: HOME must be set
Итак, я добавил HOME
к EnvironmentVariables
раздел.
Если вы ретранслируете на MacPorts и не используете Homebrew, вы можете использовать этот скрипт для запуска сервера RabbitMQ с помощью launchd
и установка универсального релиза Unix.