Native Tomcat in SLAX

0

緣起

年初做了個簡易測試 Tomcat 的 APR 連接器簡易測試 發布在 javaworld@TW 網站,現在想在 SLAX popcorn 上面跑看看,這裡將先作編譯與環境準備工作,也就是產出相對的 mo 檔。

下圖為本文產出的 mo 安裝之後,用 firefox 跑出來的部份畫面。

更新紀錄 Changelog

  1. 2006-09-26 APR 本身編譯時可能以為系統有 sendfile 支援,但是執行時候卻發現沒有這樣支援,可能是檔案系統的支援問題 ? 待查,這個現象在 Apache in Slax 一文 中有遇到,可以在設定檔關掉這個行為,Tomcat 也可以設定 useSendfile 參數來關掉,預設是有開啟的。所以說下面做法如果沒有做到修正檔案系統或是關掉設定的輔助,很可能會導致更慘的效率,白忙一場。但是這在一般 ext2/ext3 應該都沒問題,不過這裡畢竟是談 SLAX 環境,特此加上說明。

準備

有些步驟可能之前做過而出現省略或是疏漏現象,請告訴我或是請參考之前本站的 gcin in slax popcorn 一文,也許可以找到相關提示。

編譯需要準備一些工具,當然要跑 tomcat 之前須先有 JRE。一開始先到 Apache Tomcat 5.5.17 下載,然後主要參考 Apache Portable Runtime and Tomcat 的說明來進行。

Create jre mo

先裝安裝檔,再加連結到 /usr/local/bin/java 執行檔與 /usr/local/java 目錄,接著用 dir2mo 包成 mo 檔,並裝上去測看看。

  1. cd /mnt/hda1
  2. wget jre-1_5_0_08-linux-i586.bin
  3. chmod +x jre-1_5_0_08-linux-i586.bin
  4. cd /mnt/hda1/work
  5. mkdir -p java/usr/local
  6. cd java/usr/local/
  7. /mnt/hda1/jre-1_5_0_08-linux-i586.bin
  8. yes
  9. ls
  10. jre1.5.0_08/bin/java -version
  11. mkdir bin
  12. cd bin
  13. ln -s ../jre1.5.0_08/bin/java java
  14. ./java -version
  15. cd /mnt/hda1/work/java/usr/local
  16. ln -s jre1.5.0_08 java
  17. java/bin/java -version
  18. cd /mnt/hda1/work
  19. dir2mo java jre-1_5_0_08-linux.mo
  20. uselivemod jre-1_5_0_08-linux.mo
  21. java -version

Tomcat test run

tomcat 後來預設用 eclipse 的編譯器,所以目前只要裝 JRE 1.5 版,並不需要裝到 JDK 版本,但是編譯 tcnative 需要 JDK,等一下會談到。

  1. cd /mnt/hda1
  2. wget apache-tomcat-5.5.17.tar.gz
  3. tar zxvf apache-tomcat-5.5.17.tar.gz
  4. export JAVA_HOME=/usr/local/java
  5. apache-tomcat-5.5.17/bin/startup.sh
  6. netstat -at | grep 8080
  7. more apache-tomcat-5.5.17/logs/catalina.out

一開頭部份可以看到 APR 沒有載入。

INFO: The Apache Tomcat Native library which allows optimal performance 
in production environments was not found on the java.library.path:....

Create the jdk mo

編譯 tomcat-native-1.1.3 需要 JDK 的一些檔案,所以建立需要的 jdk mo 檔,這個檔約需要 130M 的空間來解開,所以要注意一下空間。

  1. cd /mnt/hda1
  2. wget jdk-1_5_0_08-linux-i586.bin
  3. chmod +x jdk-1_5_0_08-linux-i586.bin
  4. cd /mnt/hda1/work
  5. mkdir -p jdk/usr/local
  6. cd jdk/usr/local/
  7. /mnt/hda1/jdk-1_5_0_08-linux-i586.bin
  8. jdk1.5.0_08/bin/java -version
  9. cd /mnt/hda1/work
  10. dir2mo jdk jdk-1_5_0_08-linux.mo
  11. uselivemod jdk-1_5_0_08-linux.mo
  12. /usr/local/jdk1.5.0_08/bin/java -version

Create the openssl mo

另外也需要 openssl,爆米花只有裝精簡版,換上完整版。

  1. search openssl in http://slackware.it/en/pb/
  2. wget openssl-0.9.8b-i486-1.tgz
  3. cd /mnt/hda1/work
  4. mkdir openssl
  5. installpkg -root openssl /mnt/hda1/openssl-0.9.8b-i486-1.tgz
  6. dir2mo openssl openssl-0.9.8b.mo
  7. uselivemod openssl-0.9.8b.mo

install Apache Portable Runtime

編譯之前需要 Apache Portable Runtime

  1. apache-tomcat-5.5.17/bin/shutdown.sh
  2. uselivemod /mnt/hda1/Official_Development_module_5_1_4.mo
  3. cd /mnt/hda1
  4. wget apr-1.2.7.tar.bz2
  5. tar jxvf apr-1.2.7.tar.bz2
  6. cd apr-1.2.7
  7. ./configure
  8. make
  9. make install

預設會裝到 /usr/local/apr/

install tomcat native

  1. cd apache-tomcat-5.5.17/bin/
  2. tar zxvf tomcat-native.tar.gz
  3. cd tomcat-native-1.1.3/jni/native
  4. ./configure—with-apr=/usr/local/apr—with-java-home=/usr/local/jdk1.5.0_08
  5. make
  6. make install
  7. ls /usr/local/apr/lib

關鍵在於環境變數 LD_LIBRARY_PATH,只要設對,tomcat 就會啟動 APR

  1. export LD_LIBRARY_PATH=/usr/local/apr/lib
  2. cd /mnt/hda1/apache-tomcat-5.5.17
  3. bin/startup.sh
  4. tail -100 logs/catalina.out
  5. bin/shutdown.sh

catalina.out 可以看出差異,非 APR 的版本可以找到 Http11BaseProtocol start 字眼,有 APR 的版本可以找出 Http11AprProtocol start。

make apr-tcnative.mo

既然直接編譯可以裝,必須轉成 mo 測看看,這裡將 apr-1.2.7 與 tomcat-native-1.1.3 兩個安裝一起後包成 apr-tcnative-1.1.3.mo 來用。

  1. cd /mnt/hda1/apr-1.2.7
  2. checkinstall
  3. mv apr-1.2.7-i386-1.tgz /mnt/hda1
  4. cd /mnt/hda1/apache-tomcat-5.5.17/
  5. cd bin/tomcat-native-1.1.3/jni/native/
  6. checkinstall
  7. mv native-native-i386-1.tgz /mnt/hda1/tomcat-native-i386-1.tgz
  8. cd /mnt/hda1/work
  9. mkdir apr-tcnative
  10. installpkg -root apr-tcnative ../apr-1.2.7-i386-1.tgz
  11. installpkg -root apr-tcnative ../tomcat-native-i386-1.tgz
  12. dir2mo apr-tcnative apr-tcnative-1.1.3.mo
  13. reboot for test

make tomcat.mo

重開後測試 apr-tcnative-1.1.3.mo 可以的話,就準備改一下 tomcat 來包 apache-tomcat-5.5.15.mo,讓啟動 APR 模式比較簡單。

  1. cd /mnt/hda1/work
  2. mkdir -p tomcat/usr/local
  3. cd tomcat/usr/local
  4. tar zxvf ../apache-tomcat-5.5.17.tar.gz
  5. cd apache-tomcat-5.5.17
  6. vi bin/catalina.sh

這裡有個考量,必須指名 JAVA_HOME 的位置,而這個位置卻是每次裝新的 JRE 都會更換的,所以設到 /usr/local/java,加上下面一行。

export JAVA_HOME=/usr/local/java

  1. uselivemod jre-1_5_0_08-linux.mo
  2. uselivemod apr-tcnative-1.1.3.mo
  3. cd bin
  4. cp startup.sh startapr.sh
  5. vi startapr.sh

主要是把環境變數寫入,不用每次輸入,加上下面一行。

export LD_LIBRARY_PATH=/usr/local/apr/lib

開始測看看。

  1. ./startapr.sh
  2. tail -100 logs/catalina.out
  3. ./shutdown.sh

可以跑就準備包起來,同時做個捷徑 /usr/local/tomcat。

  1. cd /mnt/hda1/work
  2. cd tomcat/usr/local
  3. ln -s apache-tomcat-5.5.17 tomcat
  4. cd /mnt/hda1/work
  5. dir2mo tomcat apache-tomcat-5.5.17.mo
  6. reboot

final tomcat-native mo test run

重開後就可以把需要的 mo 載入跑看看。

  1. cd /mnt/hda1/work
  2. uselivemod jre-1_5_0_08-linux.mo
  3. uselivemod apr-tcnative-1.1.3.mo
  4. uselivemod apache-tomcat-5.5.17.mo
  5. /usr/local/tomcat/bin/startapr.sh
  6. netstat -at
  7. tail -100 /usr/local/tomcat/logs/catalina.out
  8. uselivemod ttf-arphic-uming-0.1.mo
  9. uselivemod firefox-1.5.0.6-zh_TW.mo
  10. uselivemod gcin-1.2.5.mo
  11. ldconfig
  12. startx
  13. firefox to http://127.0.0.1:8080/

Download

下面軟體都是 Apache 改作,所以採 Apache License 釋出,非本站慣用 授權

apr-tcnative-1.1.3.mo [860K]

apache-tomcat-5.5.17.mo [5964K]

Comments

(leave url/email »)

   Preview comment