Mac OS Xでの起動時にApache Tomcatを起動するにはどうすればよいですか?


16

OS Xにtomcatをインストールするための完全なガイドはありません。これには、ブート時に起動するようにセットアップすることが含まれます。

クイックガイドを次に示します。

  • macportsをインストールする
    • suport port upgrade
    • sudo port upgrade outdated
  • sudo port install tomcat6、または他のバージョンチェックが必要な場合 port list|grep tomcat
  • configは次の場所にあります。 /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

  • ... 記事を確認する

しかし、私はそれを真のサービス/デーモンとして実行する方法に関する部分が欠落しています:システムの起動時、およびオプションでクラッシュした場合に再起動するようにします。


公式のバイナリが利用できるのに、なぜMacPortsを使用するのですか?一部のMacユーザーがMacPortsに依存していることは嫌いです。特に、ほとんどのMacPortsパッケージが古くなっているため、セキュリティホールにさらされている場合は特にそうです。
Cromulent

サイモン、これは必須です。なぜなら、macportsはパッケージマネージャーでもあるため、この方法を使用すると多くの問題を克服できるからです。また、Tomcatを非常に簡単にアップグレードできます。
ソリン

回答:


12

これは、ポート8080にTomcatをデーモンとしてインストールするためのものですが、ファイアウォールリダイレクトを使用してポート80も有効にします。Mac OS 10.6でテストされましたが、10.5でも動作するはずです。

内部を編集/opt/local/share/java/tomcat6/conf/server.xmlして追加しproxyport="80" URIEncoding="UTF-8"ます<Connector .../>

以下のために転送ポート 8080から80は、この行を実行し、それを追加しません/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"

私の例では〜3GbまたはRAMを割り当てましたが、hudsonTomcat内で実行している場合は1GB未満にしないでください。

サービスとして実行

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


1
それが起動に取得する/Library/LaunchDaemons/org.apache.tomcat.plist -wはsudo launchctlをロード:私は、Mac(OS X 10.8.2)への新たなんだけど、私がしなければならなかったように私のだろう
スティーブ・

1

tomcatは、起動時に実行する必要があるアイテムとして登録する必要があります。Mac OSでは、これはlaunchd(http://developer.apple.com/macosx/launchd.html)によって処理されます。launchdが自動再起動をサポートしているかどうかはわかりませんが、それ以外の場合は、supervisord(http://supervisord.org/)のようなものを見る必要があります。


はい、launchdにはキープアライブオプションがあり、yes / noと4つのオプション条件があります。
フルミグナン

1

起動時にSnow Leopardを起動するために、/ライブラリ/ LaunchDaemons /にplistファイルを作成しました。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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.