Ports Mongodb bloccato dopo l’aggiornamento a OS X Mavericks
Dopo l’aggiornamento a Mac OS X Mavericks il mio server mongodb non parte più.
Il motivo è semplicemente che l’aggiornamento ha rimosso l’utente _mongo necessario allo start…
Oct 23 11:17:11 mymacbookpro ManagedClient[1497]: FAILURE: Job com.apple.ManagedClient.enrollagent is not loaded in launchd.
Oct 23 11:17:18 mymacbookpro sudo[1500]: root : unknown user: _mongo
Questa la soluzione veloce (ma sporca): cambiare l’utente con cui far girare mongodb con il proprio utente. Certo non son cose da fare in produzione…
Apri Terminal e digita:
$ sudo vi /Library/LaunchDaemons/org.macports.mongodb.plist
Cambia l’utente usato per lo start (_mongo) nel tuo utente:
<?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>org.macports.mongodb</string> <key>ProgramArguments</key> <array> <string>/opt/local/bin/daemondo</string> <string>--label=mongodb</string> <string>--start-cmd</string> <string>sudo</string> <string>-u</string> <string>_mongo</string> <string>/opt/local/bin/mongod</string> <string>--dbpath</string> <string>/opt/local/var/db/mongodb</string> <string>--logpath</string> <string>/opt/local/var/log/mongodb/mongodb.log</string> <string>--logappend</string> <string>;</string> <string>--pid=exec</string> </array> <key>Debug</key><true/> <key>Disabled</key><true/> <key>KeepAlive</key><true/> </dict> </plist>
Poi esegui:
sudo chown -R freedev: /opt/local/var/db/mongodb/
sudo chown -R freedev: /opt/local/var/log/mongodb/
sudo port unload mongodb
sudo port load mongodb
E come dicevano alcuni mie colleghi sistemisti: “PROOVAAA ORAAA?”.
Se invece non sei soddisfatto dalle soluzioni quick and dirty, una soluzione più pulita è creare un nuovo utente per mongodb, questi sono i passi che ho usato (ma potrebbero cambiare su un altro mac):
Crea l’utente:
sudo dscl . -create /Users/_mongo
sudo dscl . -create /Users/_mongo UserShell /var/empty
Ora dovresti assegnare un id univoco all’utente _mongo. Qui ho scelto l’id precedentemente usato dall’utente che esisteva prima dell’aggiornamento.
sudo dscl . -create /Users/_mongo UniqueID 507
Poi hai bisogno di aggiungere _mongo al gruppo admin, in modo da permettere a mongodb di mettersi in listen sulla sua porta:
sudo dscl . -append /Groups/admin GroupMembership _mongo
D’altra parte il gruppo _mongo esisteva ancora, cosi’ l’ho riusato:
sudo dscl . list /groups PrimaryGroupID | grep mongo
_mongo 504
Ora possiamo associare di nuovo l’id all’utente appena creato:
sudo dscl . -create /Users/_mongo PrimaryGroupID 504
E per finire, sistemiamo le permission del filesystem giusto per essere sicuro che sia tutto ok:
sudo chown -R _mongo: /opt/local/var/db/mongodb/
sudo chown -R _mongo: /opt/local/var/log/mongodb/
Have fun!
Devi effettuare l'accesso per postare un commento.