Wie starte ich Apache Tomcat beim Booten unter Mac OS X?

16

Ich habe festgestellt, dass es keine vollständige Anleitung für die Installation von Tomcat unter OS X gibt, die das Einrichten für den Start zum Startzeitpunkt vorsieht.

Hier ist die Kurzanleitung:

  • Installieren Sie Macports
    • suport port upgrade
    • sudo port upgrade outdated.
  • sudo port install tomcat6, oder wenn Sie eine andere Versionsprüfung wünschen port list|grep tomcat
  • config ist jetzt bei: /opt/local/share/java/tomcat6/conf
  • Startskript: /opt/local/share/java/tomcat6/bin/tomcatctl

    cp /opt/local/share/java/tomcat6/conf/tomcat-users.xml.sample /opt/local/share/java/tomcat6/conf/tomcat-users.xml nano / opt / local / share / java / tomcat6 /conf/tomcat-users.xml

  • ... Artikel überprüfen

Aber mir fehlt der Teil, wie man es als echten Dienst / Daemon laufen lässt: beim Systemstart und optional, um es neu zu starten, wenn es abstürzt.

Bogdan
quelle
Warum MacPorts verwenden, wenn es offizielle Binärdateien gibt? Ich hasse das Vertrauen, das einige Mac-Benutzer in MacPorts haben, besonders wenn die meisten MacPorts-Pakete veraltet sind und Sie sich damit Sicherheitslücken öffnen.
Cromulent
Simon, dies ist erforderlich, da macports auch ein Paketmanager ist, sodass Sie auf diese Weise viele Probleme bewältigen können. Außerdem können Sie Tomcat ganz einfach aktualisieren.
Sorin

Antworten:

12

Dies dient zur Installation von tomcat als Daemon auf Port 8080, aktiviert aber auch Port 80 mithilfe einer Firewall-Umleitung. Es wurde unter Mac OS 10.6 getestet, sollte aber auch mit 10.5 funktionieren.

Bearbeiten /opt/local/share/java/tomcat6/conf/server.xmlund fügen Sie proxyport="80" URIEncoding="UTF-8"innen <Connector .../>.

Führen Sie für die Weiterleitung von Port 80 nach 8080 diese Zeile aus und fügen Sie sie hinzu /bin/catalina.sh.

sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in

Weisen Sie dem Java-Computer genügend Speicher zu, oder Sie haben später möglicherweise Probleme. Innerhalb/opt/local/share/java/tomcat6/conf/local.env

export JAVA_JVM_VERSION=CurrentJDK
export JAVA_OPTS="-Xmx3000M -Xms3000M -Djava.awt.headless=true -Duser.timezone=UTC"

In meinem Beispiel habe ich ~ 3Gb oder RAM zugewiesen, aber Sie können dies anpassen, setzen Sie auf keinen Fall weniger als 1 GB ein, wenn Sie hudsonin tomcat arbeiten.

Als Dienst ausführen

Führen Sie nano /Library/LaunchDaemons/org.apache.tomcat.plistden folgenden Code aus und fügen Sie ihn ein:

<?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>Label</key>
    <string>org.apache.tomcat</string>
    <key>ProgramArguments</key>
    <array>
            <string>/opt/local/share/java/tomcat6/bin/catalina.sh</string>
            <string>run</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Stellen Sie sicher, dass launchd Ihren neuen Daemon erkannt hat, falls nicht, starten Sie ihn neu :(

launchctl list|grep tomcat

Starten Sie Tomcat manuell.

launchctl start org.apache.tomcat

Wenn der Status etwas anderes als ist -, haben Sie ein Problem und sollten es untersuchen: launchctl log level debugund überprüfen /var/log/system.log.

Sorin Sbarnea
quelle
1
Könnte mich sein , wie ich auf Mac (OS X 10.8.2) neu bin , aber ich hatte zu tun: sudo launchctl Last -w /Library/LaunchDaemons/org.apache.tomcat.plist , um es zu starten zu bekommen
Steve
1

Sie müssen tomcat als ein Element registrieren, das beim Start ausgeführt werden muss. Unter Mac OS wird dies von launchd ( http://developer.apple.com/macosx/launchd.html ) erledigt . Ich weiß nicht, ob launchd den automatischen Neustart unterstützt, aber ansonsten sollten Sie sich etwas wie supervisord ansehen ( http://supervisord.org/ ).

Björn
quelle
Ja, launchd hat eine Keepalive-Option, sowohl als yes / no als auch mit vier optionalen Bedingungen.
Flumignan
1

Für den Start von Snow Leopard beim Start habe ich eine plist-Datei in / Library / LaunchDaemons / erstellt. Sie können den Dienst zum Testen starten / stoppen, indem Sie "launchctl load org.macports.tomcat6.plist" oder "launchctl unload org.macports.tomcat6.plist" eingeben. Sobald Sie es funktioniert haben, starten Sie neu, um den Autostart beim Booten zu beweisen.


sh-3.2# more org.macports.tomcat6.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>Label</key><string>org.macports.tomcat6</string>
<key>ProgramArguments</key>
<array>
        <string>/opt/local/bin/daemondo</string>
        <string>--label=tomcat6</string>
        <string>--start-cmd</string>
        <string>/opt/local/bin/tomcatctl</string>
        <string>start</string>
        <string>;</string>
        <string>--pid=fileclean</string>
        <string>--pidfile</string>
        <string>/opt/local/share/java/tomcat6/logs/tomcat6.pid</string>
</array>
<key>Debug</key><false/>
<key>Disabled</key><false/>
<key>OnDemand</key><false/>
<key>RunAtLoad></key><true/>
</dict>
</plist>
gordonkshort
quelle