- Angelegt von //SEIBERT/MEDIA Employee, zuletzt geändert am Mär 20, 2018
Für die langfristige Verwendung sollten Sie konfigurieren, dass Crowd automatisch neustartet, wenn es das Betriebssystem tut. Auf Mac OS X verwaltet das Systemstart-Programm Launchd die laufenden Prozesse – Daemons oder Dienste.
Apple bietet eine Einführung in Launchd an. Unten erläutern wir Ihnen, wie Sie Launchd verwenden, um Crowd automatisch auf Mac OS X zu starten, wenn Tomcat ausgeführt wird.
Launchd mit Tomcat verwenden
Die Crowd-Distribution (nicht EAR-WAR) kommt mit Tomcat an Board. Es gibt eine Verschiedenheit zwischen der erwarteten Verhaltensweise eines Daemons von Launchd und der Funktionsweise der Standard-Start-Skripte für Tomcat:
- Launchd von OS X erwartet, dass der von ihm gestartete Prozess für immer läuft, aber "catalina.sh start" startet die JVM, um Tomcat auszuführen und beendet danach.
- Tomcat bietet "catalina.sh stop" an, um Tomcat ordentlich herunterzufahren und das tut er indem er mit einem Sockel verbindet, auf dem Tomcat lauscht, aber Launchd dagegen stoppt die Daemons, indem er Ihnen ein Signal sendet, welches die Prozesse unverzüglich killt, wenn keine spezifische Handhabung inkludiert ist.
Sie werden ein Wrapper Shell Skript und eine Einstellungsliste benötigen, um Launchd mit Tomcat zum Laufen zu bringen.
1. Schritt: Hinzufügen eines Wrapper Shell Skripts
Fügen Sie das folgende Wrapper Shell Skript zu $CATALINA_HOME/bin hinzu:
LAUNCHD_WRAPPER.SH
#!/bin/bash function shutdown() { date echo "Shutting down Crowd" $CATALINA_HOME/bin/catalina.sh stop } date echo "Starting Crowd" export CATALINA_PID=/tmp/$$ # Uncomment to increase Tomcat's maximum heap allocation # export JAVA_OPTS=-Xmx512M $JAVA_OPTS . $CATALINA_HOME/bin/catalina.sh start # Allow any signal that would kill a process to stop Tomcat trap shutdown HUP INT QUIT ABRT KILL ALRM TERM TSTP echo "Waiting for `cat $CATALINA_PID`" wait `cat $CATALINA_PID`
Das obige Shell Skript startet Tomcat und wartet dann darauf, dass der Prozess vervollständigt wird, sodass es für Launchd "okay" ist, dass Tomcat immer noch läuft. Das Skript installiert außerdem einen Signal-Handler, der die shutdown() Funktion aufruft, um Tomcat ordentlich herunterzufahren, sobald Launchd das Skript signalisiert.
Sie können dieses Skript manuell ausprobieren: Starten Sie das Skript, beobachten Sie den Start von Crowd und tippen Sie dann ctrl-C ein und sehen Sie zu wie Crowd ordentlich herunterfährt. (Beachten Sie, dass es nicht ordentlich herunterfährt, wenn Tomcat noch nicht gestartet ist. Es nimmt einige Sekunden in Anspruch, bis Tomcat am Shutdown-Sockel lauscht.)
2. Schritt: Fügen Sie eine Launchd Einstellungsliste hinzu
Die Launchd Einstellungsliste (.plist) sagt Launchd wie es Tomcat zu starten hat.
Fügen Sie die folgende Plist-Datei zu /Library/LaunchDaemons hinzu, welches der systemweite Ort für Dienste ist, die nicht Teil der Basis-OS X sind:
CROWD.PLIST
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>EnvironmentVariables</key> <dict> <key>CATALINA_HOME</key> <string>/Users/myname/conf/crowd-x.x.x</string> <key>JAVA_HOME</key> <string>/Library/Java/Home</string> </dict> <key>Label</key> <string>com.atlassian.crowd</string> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/Users/myname/conf/crowd-x.x.x/bin/launchd_wrapper.sh</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceDescription</key> <string>Crowd</string> <key>StandardErrorPath</key> <string>/Users/myname/conf/crowd-x.x.x/logs/launchd.stderr</string> <key>StandardOutPath</key> <string>/Users/myname/conf/crowd-x.x.x/logs/launchd.stdout</string> <key>UserName</key> <string>root</string> </dict> </plist>
Hinweise:
- Ersetzen Sie "/Users/myname/conf/crowd-x.x.x" mit dem Pfad zu Ihrer Crowd-Installation. Die Zeile erscheint vier mal im obigen Skript.
- JAVA_HOME benutzt das Standard-JDK. Auf der OS X Version 10.4.4 ist das Standard-JDK 1.4.2. Sie müssen diesen Wert ändern, wenn Sie eine andere Java-Version verwenden möchten. Wenn Sie zum Beispiel das JDK 1.5 benutzen wollen, müssen Sie JAVA_HOME auf /System/Library/Frameworks/JavaVM.framework/Versions/1.5 abändern.
- Im obigen Skript haben wir "root" als UserName definiert. Falls notwendig, ändern Sie den UserName in den Benutzer um, mit dem Sie Tomcat ausführen möchten.
Crowd manuell starten und stoppen
Um Crowd manuell zu starten und zu stoppen, verwenden Sie die folgenden Befehle:
- Starten:
cd /Library/LaunchDaemons
sudo launchctl load -w crowd.plist
- Stoppen:
cd /Library/LaunchDaemons
sudo launchctl unload -w crowd.plist
Problembehebung
- Stellen Sie sicher, dass die launch_wrapper.sh sowie die crowd.plist Dateien die notwendigen Privilegien besitzen.
- Überprüfen Sie die Konsolenprotokolle und Protokolldateien auf jegliche Anomalien.