ฉันจะเริ่ม Apache Tomcat เมื่อบูตบน Mac OS X ได้อย่างไร


16

ฉันสังเกตว่าไม่มีคู่มือฉบับเต็มสำหรับการติดตั้ง tomcat บน OS X ซึ่งจะรวมถึงการตั้งค่าให้เริ่มต้นในเวลาบูต

นี่คือคำแนะนำด่วน:

  • ติดตั้ง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/shal/share/java/tomcat6/conf/tomcat-users.xml นาโน / opt / local / share / java / tomcat6 /conf/tomcat-users.xml

  • ... ตรวจสอบบทความ

แต่ฉันไม่มีส่วนเกี่ยวกับวิธีทำให้มันทำงานเป็น service / daemon จริง: เมื่อเริ่มต้นระบบและเลือกที่จะเริ่มใหม่หากเกิดข้อผิดพลาด


เหตุใดจึงต้องใช้ MacPorts เมื่อมีไบนารีอย่างเป็นทางการ ฉันเกลียดความเชื่อมั่นที่ผู้ใช้ Mac บางคนมีสำหรับ MacPorts โดยเฉพาะเมื่อแพคเกจ MacPorts ส่วนใหญ่ล้าสมัยและทำให้คุณเปิดช่องโหว่ด้านความปลอดภัยได้
Cromulent

Simon นี่เป็นสิ่งจำเป็นเนื่องจาก macports ยังเป็นตัวจัดการแพ็คเกจดังนั้นคุณจะได้รับปัญหามากมายโดยใช้วิธีนี้ นอกจากนี้คุณจะสามารถอัพเกรด Tomcat ได้ง่ายมาก
sorin

คำตอบ:


12

สิ่งนี้ใช้สำหรับการติดตั้ง tomcat เป็นdaemonบนพอร์ต 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"

ในตัวอย่างของฉันฉันจัดสรร ~ 3Gb หรือ RAM แต่คุณสามารถปรับตัวนี้ได้อย่าใส่น้อยกว่า 1GB หากคุณใช้งานhudsonภายในโพง

ทำงานเป็นบริการ

เรียกใช้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 ตรวจพบ daemon ใหม่ของคุณหากไม่รีบูท :(

launchctl list|grep tomcat

เริ่มต้น Tomcat ด้วยตนเอง

launchctl start org.apache.tomcat

ถ้าสถานะเป็นสิ่งอื่นมากกว่า-คุณมีปัญหาและคุณควรตรวจสอบมันและการตรวจสอบlaunchctl log level debug/var/log/system.log


1
อาจเป็นฉันเป็นฉันใหม่สำหรับ Mac (OS X 10.8.2) แต่ฉันต้องทำ: sudo launchctl load -w /Library/LaunchDaemons/org.apache.tomcat.plist เพื่อให้มันเริ่มต้น
Steve

1

คุณต้องลงทะเบียน Tomcat เป็นรายการที่ต้องดำเนินการเมื่อเริ่มต้น บน Mac OS สิ่งนี้จัดการโดย launchd ( http://developer.apple.com/macosx/launchd.html ) ฉันไม่รู้ว่า launchd รองรับการรีสตาร์ทอัตโนมัติหรือไม่ แต่อย่างอื่นคุณควรมองสิ่งที่ต้องการเช่น supervisord ( http://supervisord.org/ )


ใช่ launchd มีตัวเลือกแบบ keepalive ทั้งแบบใช่ / ไม่ใช่และมีเงื่อนไขเพิ่มเติมสี่แบบ
flumignan

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>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.