Как запустить Apache Tomcat при загрузке на Mac OS X?

16

Я заметил, что нет полного руководства по установке tomcat на OS X, которое включало бы его настройку для запуска во время загрузки.

Вот краткое руководство:

  • установить макпорт
    • suport port upgrade
    • sudo port upgrade outdated,
  • sudo port install tomcat6, или если вы хотите проверить другую версию port list|grep tomcat
  • Конфиг сейчас на: /opt/local/share/java/tomcat6/conf
  • скрипт запуска: /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

  • ... проверить статью

Но мне не хватает части о том, как сделать так, чтобы он работал как настоящий сервис / демон: при запуске системы и, при необходимости, чтобы он перезапустился в случае сбоя.

Bogdan
источник
Зачем использовать MacPorts, если у них есть официальные двоичные файлы? Я ненавижу доверие некоторых пользователей Mac к MacPorts, особенно когда большинство пакетов MacPorts устарели и, таким образом, вы открываете себя для дыр в безопасности.
Cromulent
Саймон, это необходимо, потому что macports также является менеджером пакетов, поэтому таким образом вы справитесь с множеством проблем. Также вы сможете легко обновить tomcat.
Сорин

Ответы:

12

Это для установки tomcat в качестве демона на порт 8080, но включите также порт 80 с помощью перенаправления брандмауэра. Он был протестирован на Mac OS 10.6, но должен работать и с 10.5.

Отредактируйте /opt/local/share/java/tomcat6/conf/server.xmlи добавьте proxyport="80" URIEncoding="UTF-8"внутрь <Connector .../>.

Для переадресации порта с 80 на 8080 запустите эту строку и добавьте /bin/catalina.sh:

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

Выделите достаточно памяти для Java-машины, иначе у вас могут возникнуть проблемы. внутри/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"

В моем примере я выделил ~ 3 ГБ или ОЗУ, но вы можете адаптировать это, в любом случае, не кладите меньше 1 ГБ, если вы работаете hudsonвнутри Tomcat.

Запуск в качестве службы

Запустите nano /Library/LaunchDaemons/org.apache.tomcat.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>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>

Убедитесь, что launchd обнаружил у вас нового демона, если не перезагрузите :(

launchctl list|grep tomcat

Запустите tomcat вручную.

launchctl start org.apache.tomcat

Если статус отличается от -вашего, у вас есть проблема, и вы должны исследовать ее: launchctl log level debugи проверить /var/log/system.log.

Sorin Sbarnea
источник
1
Может быть, я новичок в Mac (OS X 10.8.2), но мне нужно было сделать: sudo launchctl load -w /Library/LaunchDaemons/org.apache.tomcat.plist, чтобы запустить его
Стив
1

Вам нужно зарегистрировать tomcat как элемент, который необходимо выполнить при запуске. В Mac OS это обрабатывается launchd ( http://developer.apple.com/macosx/launchd.html ). Я не знаю, поддерживает ли launchd автоматический перезапуск, но в противном случае вам стоит взглянуть на что-то вроде supervisord ( http://supervisord.org/ ).

Bjorn
источник
Да, у launchd есть опция keepalive, как да / нет, так и с четырьмя дополнительными условиями.
Флуминьян
1

Для запуска Snow Leopard при запуске я создал файл plist в / Library / LaunchDaemons / Файл plist будет выглядеть следующим образом (ниже, измените, чтобы соответствовать вашим каталогам). Вы можете запустить / остановить службу для тестирования, выполнив "launchctl load org.macports.tomcat6.plist" или "launchctl unload org.macports.tomcat6.plist". Как только у вас это работает, перезагрузите компьютер, чтобы доказать автозапуск при загрузке


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
источник