¿Cómo inicio Apache Tomcat en el arranque en Mac OS X?

16

Observé que no hay una guía completa para instalar tomcat en OS X que incluirá la configuración para comenzar en el momento del arranque.

Aquí está la guía rápida:

  • instalar macports
    • suport port upgrade
    • sudo port upgrade outdated.
  • sudo port install tomcat6, o si quieres otra versión verifica port list|grep tomcat
  • config ahora está en: /opt/local/share/java/tomcat6/conf
  • script de inicio: /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

  • ... consultar artículo

Pero me falta la parte sobre cómo hacer que se ejecute como verdadero servicio / demonio: al inicio del sistema y, opcionalmente, para que se reinicie si se bloquea.

Bogdan
fuente
¿Por qué usar MacPorts cuando tienen binarios oficiales disponibles? Odio la confianza que algunos usuarios de Mac tienen para MacPorts, especialmente cuando la mayoría de los paquetes de MacPorts están desactualizados y por lo tanto te abres a los agujeros de seguridad.
Cromulent
Simon, esto es necesario porque macports también es un administrador de paquetes, por lo que superarás muchos problemas de esta manera. También podrás actualizar tomcat de manera muy fácil.
sorin

Respuestas:

12

Esto es para instalar tomcat como daemon en el puerto 8080, pero también habilita el puerto 80 utilizando una redirección de firewall. Fue probado en Mac OS 10.6 pero debería funcionar también con 10.5.

Edita /opt/local/share/java/tomcat6/conf/server.xmly agrega proxyport="80" URIEncoding="UTF-8"dentro <Connector .../>.

Para reenviar el puerto 80 al 8080, ejecute esta línea y agréguela /bin/catalina.sh:

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

Asigne suficiente memoria a la máquina Java o puede tener problemas más tarde. Dentro/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"

En mi ejemplo, asigné ~ 3Gb o RAM, pero puede adaptar esto, de todos modos, no ponga menos de 1GB si está ejecutando hudsondentro de Tomcat.

Corriendo como un servicio

Ejecute nano /Library/LaunchDaemons/org.apache.tomcat.plisty pegue el siguiente código:

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

Comprueba que launchd detectó tu nuevo demonio, si no reinicia :(

launchctl list|grep tomcat

Inicie tomcat manualmente.

launchctl start org.apache.tomcat

Si el estado es diferente -, tiene un problema y debe investigarlo: launchctl log level debugy verificar /var/log/system.log.

Sorin Sbarnea
fuente
1
Podría ser yo ya que soy nuevo en Mac (OS X 10.8.2) pero tuve que hacer: sudo launchctl load -w /Library/LaunchDaemons/org.apache.tomcat.plist para que comience
Steve
1

Debe registrar tomcat como un elemento que debe ejecutarse en el inicio. En Mac OS, esto se maneja mediante launchd ( http://developer.apple.com/macosx/launchd.html ). No sé si launchd admite el reinicio automático, pero de lo contrario, debería echar un vistazo a algo como supervisor ( http://supervisord.org/ ).

Bjorn
fuente
Sí, launchd tiene una opción de keepalive, tanto sí / no como con cuatro condiciones opcionales.
flumignan
1

Para el lanzamiento de Snow Leopard en el inicio, creé un archivo plist en / Library / LaunchDaemons / El archivo plist se verá así (a continuación, modifíquelo para que coincida con sus directorios). Puede iniciar / detener el servicio para las pruebas emitiendo "launchctl load org.macports.tomcat6.plist" o "launchctl unload org.macports.tomcat6.plist". Una vez que lo tenga funcionando, reinicie para probar el inicio automático en el arranque.


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
fuente