Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl(&$output) in /www/htdocs/v167612/wplog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl(&$output) in /www/htdocs/v167612/wplog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /www/htdocs/v167612/wplog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /www/htdocs/v167612/wplog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /www/htdocs/v167612/wplog/wp-includes/classes.php on line 1244

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /www/htdocs/v167612/wplog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /www/htdocs/v167612/wplog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /www/htdocs/v167612/wplog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /www/htdocs/v167612/wplog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /www/htdocs/v167612/wplog/wp-includes/classes.php on line 1442

Strict Standards: Redefining already defined constructor for class wpdb in /www/htdocs/v167612/wplog/wp-includes/wp-db.php on line 306

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /www/htdocs/v167612/wplog/wp-includes/cache.php on line 433
iFool » 2012 » November

Archiv

Archiv für November, 2012

Jetty unter MAC OS X (10.8.2) als Boot-Daemon einrichten

10. November 2012

Ich habe einen Jetty-Server auf unserem Home-Server (MAC MINI) installiert, um darauf ein paar GRAILS-Anwendungen für den Hausgebrauch zu hosten (Kassenbuch, Dokumenten-Archiv etc.). Fraglich ist nun, wie man einen Daemon so einrichten kann, dass der Jetty-Server bei jedem Start des MAC MINI automatisch (und ohne dass sich ein Benutzer dazu anmelden muss) startet.

Zunächst einmal habe ich ein Start-Script (Filename “Users/Shared/jetty/taustart.sh”) geschrieben, dass ich verwende, um den Jetty-Server einfach mit vorher festgelegten Eingenschaften starten zu können:


cd /Users/Shared/jetty
java -Dtau.config.path=/Users/Shared/jetty/tau-config -DSTOP.PORT=8085 -DSTOP.KEY=stopme -jar start.jar

Wie zu erkennen ist befindet sich das Jetty-Home-Verzeichnis in meinem Fall unter “/Users/Shared/jetty”. Außerdem habe ich dem Server mitgeteilt, dass ich ihn bei Bedarf über den STOP.PORT “8085″ mit den STOP,KEY “stopme” stoppen möchte. Das ist nützlich, wenn ich den Server für Wartungsarbeiten beenden muss. Ab jetzt soll er ja schließlich beim Systemstart automatisch gestartet werden.

Der Clou an der Sache besteht nun darin, dem launch-Daemon (”launchd”) mitzuteilen, dass dieses Start-Script beim booten automatisch ausgeführt werden soll. Dazu erstelle ich eine sogenannte “plist” (Filename “/Library/LaunchDaemons/org.aulich.jetty.plist”) wie folgt:


<?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.aulich.jetty</string>
    <key>ProgramArguments</key>
      <array>
        <string>/Users/shared/jetty/taustart.sh</string>
      </array>
    <key>Disabled</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
  </dict>
</plist>

Jetzt kommt noch ein wichtiger Schritt, den ich zunächst vergessen hatte und mich wunderte, warum meine plist nicht ausgeführt wird: Der Eigentümer der neuen plist sollte “root” sein. Daher verwendete ich das folgende command um den Eigentümer entsprechend auf dem plist-File zu setzen:


sudo chown root /Library/LaunchDaemons/org.aulich.jetty.plist

So, dass ist eigentlich auch schon alles, was geschehen muss, um einen entsprechenden Boot-Daemon einzurichten. Abschließend sei noch angemerkt, dass ich das folgende Script benutze, wenn ich den Jetty-Server zwischendurch mal beenden muss:


cd /Users/Shared/jetty
java -Dtau.config.path=/Users/Shared/jetty/tau-config -DSTOP.PORT=8085 -DSTOP.KEY=stopme -jar start.jar --stop

Allgemein, IT, Software ,