Làm cách nào để khởi động Apache Tomcat khi khởi động trên Mac OS X?


16

Tôi quan sát thấy rằng không có hướng dẫn đầy đủ để cài đặt tomcat trên OS X sẽ bao gồm thiết lập nó để bắt đầu khi khởi động.

Dưới đây là hướng dẫn nhanh:

  • cài đặt macports
    • suport port upgrade
    • sudo port upgrade outdated.
  • sudo port install tomcat6hoặc nếu bạn muốn kiểm tra phiên bản khác port list|grep tomcat
  • cấu hình bây giờ là: /opt/local/share/java/tomcat6/conf
  • kịch bản khởi động: /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

  • ... kiểm tra bài viết

Nhưng tôi thiếu một phần về cách làm cho nó chạy như một dịch vụ / daemon thực sự: khi khởi động hệ thống và tùy ý làm cho nó khởi động lại nếu nó gặp sự cố.


Tại sao nên sử dụng MacPorts khi chúng có sẵn các tệp nhị phân chính thức? Tôi ghét sự phụ thuộc của một số người dùng Mac dành cho MacPorts, đặc biệt là khi hầu hết các gói MacPort đã hết hạn và do đó bạn tự mở ra các lỗ hổng bảo mật.
Cromulent

Simon, điều này là bắt buộc vì macports cũng là một trình quản lý gói nên bạn sẽ khắc phục được rất nhiều vấn đề khi sử dụng cách này. Ngoài ra, bạn sẽ có thể nâng cấp tomcat rất dễ dàng.
sorin

Câu trả lời:


12

Điều này là để cài đặt tomcat như một daemon trên cổng 8080 nhưng cũng cho phép cổng 80 bằng cách sử dụng chuyển hướng tường lửa. Nó đã được thử nghiệm trên Mac OS 10.6 nhưng cũng hoạt động với 10.5.

Chỉnh sửa /opt/local/share/java/tomcat6/conf/server.xmlvà thêm proxyport="80" URIEncoding="UTF-8"vào bên trong <Connector .../>.

Để chuyển tiếp cổng 80 đến 8080 chạy dòng này và thêm nó làm /bin/catalina.sh:

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

Gán đủ bộ nhớ cho máy Java hoặc bạn có thể gặp rắc rối sau này. Phía trong/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"

Trong ví dụ của tôi, tôi đã phân bổ ~ 3Gb hoặc RAM nhưng bạn có thể điều chỉnh điều này, dù sao cũng không đặt dưới 1GB nếu bạn đang chạy hudsonbên trong tomcat.

Chạy như một dịch vụ

Chạy nano /Library/LaunchDaemons/org.apache.tomcat.plistvà dán mã dưới đây:

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

Kiểm tra launchd đã phát hiện ra bạn daemon mới, nếu không khởi động lại :(

launchctl list|grep tomcat

Bắt đầu tomcat bằng tay.

launchctl start org.apache.tomcat

Nếu trạng thái là một cái gì đó khác -, bạn có một vấn đề và bạn nên điều tra nó: launchctl log level debugvà kiểm tra /var/log/system.log.


1
Có thể tôi là người mới sử dụng Mac (OS X 10.8.2) nhưng tôi phải làm: sudo launchctl load -w /L Library / LaunchDaemons / org.apache.tomcat.plist để bắt đầu khởi động
Steve

1

Bạn cần đăng ký tomcat như một mục cần được thực thi khi khởi động. Trên Mac OS, điều này được xử lý bởi launchd ( http://developer.apple.com/macosx/launchd.html ). Tôi không biết liệu launchd có hỗ trợ tự động khởi động lại hay không, nhưng nếu không, bạn nên xem cái gì đó như giám sát ( http://supervisord.org/ ).


Có, launchd có một tùy chọn giữ, cả hai có / không và với bốn điều kiện tùy chọn.
flumignan

1

Để khởi chạy Snow Leopard khi khởi động, tôi đã tạo một tệp plist trong / Library / LaunchDaemons / Tệp plist sẽ trông như thế này (bên dưới, sửa đổi để phù hợp với các thư mục của bạn). Bạn có thể bắt đầu / dừng dịch vụ để kiểm tra bằng cách phát hành "launchctl load org.macports.tomcat6.plist" hoặc "launchctl unload org.macports.tomcat6.plist". Khi bạn đã khởi động lại nó để chứng minh tự động khởi động khi khởi động.


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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.