Como inicio o Apache Tomcat na inicialização do Mac OS X?

16

Observei que não há um guia completo para instalar o tomcat no OS X que inclua a configuração para iniciar no momento da inicialização.

Aqui está o guia rápido:

  • instalar macports
    • suport port upgrade
    • sudo port upgrade outdated.
  • sudo port install tomcat6ou se você quiser outra verificação de versão port list|grep tomcat
  • config agora está em: /opt/local/share/java/tomcat6/conf
  • script de inicialização: /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

  • ... verifique o artigo

Mas estou faltando a parte de como fazê-lo funcionar como verdadeiro serviço / daemon: na inicialização do sistema e, opcionalmente, para reiniciá-lo se travar.

Bogdan
fonte
Por que usar o MacPorts quando eles têm binários oficiais disponíveis? Odeio a confiança que alguns usuários de Mac têm no MacPorts, especialmente quando a maioria dos pacotes do MacPorts está desatualizada e, assim, você se abre para falhas de segurança.
cromulent
Simon, isso é necessário porque o macports também é um gerenciador de pacotes, para que você possa resolver muitos problemas dessa maneira. Além disso, você poderá atualizar o tomcat com muita facilidade.
sorin

Respostas:

12

Isso é para instalar o tomcat como um daemon na porta 8080, mas ative também a porta 80 usando um redirecionamento de firewall. Foi testado no Mac OS 10.6, mas também deve funcionar com o 10.5.

Edite /opt/local/share/java/tomcat6/conf/server.xmle adicione proxyport="80" URIEncoding="UTF-8"dentro <Connector .../>.

Para a porta de encaminhamento 80 a 8080, execute esta linha e adicione /bin/catalina.sh:

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

Atribua memória suficiente à máquina Java ou poderá ter problemas mais 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"

No meu exemplo, aloquei ~ 3Gb ou RAM, mas você pode adaptar isso, de qualquer forma, não coloque menos de 1 GB se estiver executando o hudsontomcat.

Executando como um Serviço

Execute nano /Library/LaunchDaemons/org.apache.tomcat.pliste cole o código abaixo:

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

Verifique se o launchd detectou seu novo daemon, se não reiniciar :(

launchctl list|grep tomcat

Inicie o tomcat manualmente.

launchctl start org.apache.tomcat

Se o status for diferente de -, você tem um problema e deve investigá-lo: launchctl log level debuge verifique /var/log/system.log.

Sorin Sbarnea
fonte
11
Poderia ser eu como eu sou novo no Mac (OS X 10.8.2), mas tive que fazer: sudo launchctl load -w /Library/LaunchDaemons/org.apache.tomcat.plist para iniciá-lo
Steve
1

Você precisa registrar o tomcat como um item que precisa ser executado na inicialização. No Mac OS, isso é tratado pelo launchd ( http://developer.apple.com/macosx/launchd.html ). Não sei se o launchd suporta reinicialização automática, mas caso contrário, você deve dar uma olhada em algo como supervisord ( http://supervisord.org/ ).

Bjorn
fonte
Sim, o launchd tem uma opção keepalive, tanto como yes / no quanto com quatro condições opcionais.
Flumignan
1

Para o lançamento do Snow Leopard na inicialização, criei um arquivo plist em / Library / LaunchDaemons / O arquivo plist terá esta aparência (abaixo, altere para corresponder aos seus diretórios). Você pode iniciar / parar o serviço para teste emitindo "launchctl load org.macports.tomcat6.plist" ou "launchctl unload org.macports.tomcat6.plist". Depois que você estiver trabalhando, reinicie para provar a inicialização automática na inicialização.


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
fonte