Comment démarrer Apache Tomcat au démarrage sur Mac OS X?

16

J'ai observé qu'il n'y a pas de guide complet pour l'installation de tomcat sur OS X qui inclurait sa configuration pour démarrer au démarrage.

Voici le guide rapide:

  • installer macports
    • suport port upgrade
    • sudo port upgrade outdated.
  • sudo port install tomcat6, ou si vous souhaitez vérifier une autre version port list|grep tomcat
  • config est maintenant à: /opt/local/share/java/tomcat6/conf
  • script de démarrage: /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

  • ... consultez l'article

Mais il me manque la partie sur la façon de le faire fonctionner en tant que véritable service / démon: au démarrage du système et éventuellement de le faire redémarrer s'il tombe en panne.

bogdan
la source
Pourquoi utiliser MacPorts alors qu'ils ont des binaires officiels disponibles? Je déteste la confiance que certains utilisateurs de Mac ont pour les MacPorts, en particulier lorsque la plupart des packages MacPorts sont obsolètes et que vous vous ouvrez ainsi à des failles de sécurité.
Cromulent
Simon, cela est nécessaire car macports est également un gestionnaire de paquets, vous aurez donc beaucoup de problèmes à utiliser de cette façon. Vous pourrez également mettre à niveau Tomcat très facilement.
sorin

Réponses:

12

C'est pour installer tomcat en tant que démon sur le port 8080 mais activer également le port 80 en utilisant une redirection de pare-feu. Il a été testé sur Mac OS 10.6 mais devrait également fonctionner avec 10.5.

Modifiez /opt/local/share/java/tomcat6/conf/server.xmlet ajoutez à l' proxyport="80" URIEncoding="UTF-8"intérieur <Connector .../>.

Pour transférer le port 80 à 8080, exécutez cette ligne et ajoutez-la /bin/catalina.sh:

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

Attribuez suffisamment de mémoire à la machine Java ou vous pourriez avoir des problèmes plus tard. À l'intérieur/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"

Dans mon exemple, j'ai alloué ~ 3 Go ou RAM, mais vous pouvez l'adapter, de toute façon ne mettez pas moins de 1 Go si vous utilisez hudsonTomcat.

Exécution en tant que service

Exécutez nano /Library/LaunchDaemons/org.apache.tomcat.plistet collez le code ci-dessous:

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

Vérifiez que launchd vous a détecté un nouveau démon, sinon redémarrez :(

launchctl list|grep tomcat

Démarrez tomcat manuellement.

launchctl start org.apache.tomcat

Si le statut est autre chose que -, vous avez un problème et vous devez le rechercher: launchctl log level debuget vérifiez /var/log/system.log.

Sorin Sbarnea
la source
1
Cela pourrait être moi car je suis nouveau sur Mac (OS X 10.8.2) mais je devais le faire: sudo launchctl load -w /Library/LaunchDaemons/org.apache.tomcat.plist pour le faire démarrer
Steve
1

Vous devez enregistrer tomcat comme un élément qui doit être exécuté au démarrage. Sous Mac OS, cela est géré par launchd ( http://developer.apple.com/macosx/launchd.html ). Je ne sais pas si launchd prend en charge le redémarrage automatique, mais sinon, vous devriez jeter un œil à quelque chose comme supervisord ( http://supervisord.org/ ).

Bjorn
la source
Oui, launchd a une option keepalive, à la fois comme oui / non et avec quatre conditions facultatives.
flumignan
1

Pour le lancement de Snow Leopard au démarrage, j'ai créé un fichier plist dans / Library / LaunchDaemons / Le fichier plist ressemblera à ceci (ci-dessous, modifiez-le pour qu'il corresponde à vos répertoires). Vous pouvez démarrer / arrêter le service pour les tests en émettant "launchctl load org.macports.tomcat6.plist" ou "launchctl unload org.macports.tomcat6.plist". Une fois que vous l'avez fait, redémarrez pour prouver le démarrage automatique au démarrage.


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
la source