2016-09-24 2 views
1

J'utilise un écosystème MacPorts et le port rabbitmq-server est vraiment vieux et ça ne marche plus. J'ai donc installé rabbitmq-server sur Mac OS X Sierra, en utilisant Generic Unix release. Ça marche. RabbitMQ est installé sous /usr/local/rabbitmq_server-3.6.5/ et il existe des liens symboliques pour tous les exécutables sous /usr/local/sbin/.RabbitMQ ne commence pas à utiliser launchd

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 

Quand je lance le serveur RabbitMQ, tout fonctionne comme prévu:

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/[email protected] 
###### ##  /usr/local/rabbitmq_server-3.6.5/var/log/rabbitmq/[email protected] 
########## 
      Starting broker... 
completed with 6 plugins. 

Pour démarrer le démon automatiquement j'ai créé un fichier com.rabbitmq.rabbitmq-server.plist que je l'ai placé sous /usr/local/etc/LaunchDaemons. J'ai également créé un lien symbolique vers ce fichier dans /Library/LaunchDaemons. Le propriétaire est root et le groupe est 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 

Voici le contenu du fichier 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> 

Lorsque je tente de charger le fichier plist

sudo launchctl load -w /Library/LaunchDaemons/com.rabbitmq.rabbitmq-server.plist 

je ne suis pas d'erreur, mais le démon n » t commencer. J'ai même essayé d'ajouter des informations de débogage à la plist, mais le journal ne montre aucune erreur. Qu'est-ce que je fais de mal?

Répondre

1

Eh bien, ce n'était pas facile mais j'ai finalement trouvé une solution moi-même.

Voici le script com.rabbitmq.rabbitmq-server.plist final:

<?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> 

Je l'ai utilisé de MacPorts pour exécuter l'exécutable rabbitmq-server. Que j'ai mis à jour la variable PATH. Utilisation de la StandardErrorPath je compris que Erlang n'a pas pu trouver la maison exécutable dir: Je suis, en fait, cette erreur:

erlexec: HOME must be set 

J'ai donc ajouté HOME à la section EnvironmentVariables.

Si vous relayez sur MacPorts et vous n'utilisez pas Homebrew, vous pouvez utiliser ce script pour exécuter le serveur en utilisant RabbitMQ launchd et installation de la version Unix générique.