Native Tomcat in SLAX
Sep
緣起
年初做了個簡易測試 Tomcat 的 APR 連接器簡易測試 發布在 javaworld@TW 網站,現在想在 SLAX popcorn 上面跑看看,這裡將先作編譯與環境準備工作,也就是產出相對的 mo 檔。
下圖為本文產出的 mo 安裝之後,用 firefox 跑出來的部份畫面。

更新紀錄 Changelog
- 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 檔,並裝上去測看看。
- cd /mnt/hda1
- wget jre-1_5_0_08-linux-i586.bin
- chmod +x jre-1_5_0_08-linux-i586.bin
- cd /mnt/hda1/work
- mkdir -p java/usr/local
- cd java/usr/local/
- /mnt/hda1/jre-1_5_0_08-linux-i586.bin
- yes
- ls
- jre1.5.0_08/bin/java -version
- mkdir bin
- cd bin
- ln -s ../jre1.5.0_08/bin/java java
- ./java -version
- cd /mnt/hda1/work/java/usr/local
- ln -s jre1.5.0_08 java
- java/bin/java -version
- cd /mnt/hda1/work
- dir2mo java jre-1_5_0_08-linux.mo
- uselivemod jre-1_5_0_08-linux.mo
- java -version
Tomcat test run
tomcat 後來預設用 eclipse 的編譯器,所以目前只要裝 JRE 1.5 版,並不需要裝到 JDK 版本,但是編譯 tcnative 需要 JDK,等一下會談到。
- cd /mnt/hda1
- wget apache-tomcat-5.5.17.tar.gz
- tar zxvf apache-tomcat-5.5.17.tar.gz
- export JAVA_HOME=/usr/local/java
- apache-tomcat-5.5.17/bin/startup.sh
- netstat -at | grep 8080
- 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 的空間來解開,所以要注意一下空間。
- cd /mnt/hda1
- wget jdk-1_5_0_08-linux-i586.bin
- chmod +x jdk-1_5_0_08-linux-i586.bin
- cd /mnt/hda1/work
- mkdir -p jdk/usr/local
- cd jdk/usr/local/
- /mnt/hda1/jdk-1_5_0_08-linux-i586.bin
- jdk1.5.0_08/bin/java -version
- cd /mnt/hda1/work
- dir2mo jdk jdk-1_5_0_08-linux.mo
- uselivemod jdk-1_5_0_08-linux.mo
- /usr/local/jdk1.5.0_08/bin/java -version
Create the openssl mo
另外也需要 openssl,爆米花只有裝精簡版,換上完整版。
- search openssl in http://slackware.it/en/pb/
- wget openssl-0.9.8b-i486-1.tgz
- cd /mnt/hda1/work
- mkdir openssl
- installpkg -root openssl /mnt/hda1/openssl-0.9.8b-i486-1.tgz
- dir2mo openssl openssl-0.9.8b.mo
- uselivemod openssl-0.9.8b.mo
install Apache Portable Runtime
編譯之前需要 Apache Portable Runtime
- apache-tomcat-5.5.17/bin/shutdown.sh
- uselivemod /mnt/hda1/Official_Development_module_5_1_4.mo
- cd /mnt/hda1
- wget apr-1.2.7.tar.bz2
- tar jxvf apr-1.2.7.tar.bz2
- cd apr-1.2.7
- ./configure
- make
- make install
預設會裝到 /usr/local/apr/
install tomcat native
- cd apache-tomcat-5.5.17/bin/
- tar zxvf tomcat-native.tar.gz
- cd tomcat-native-1.1.3/jni/native
- ./configure—with-apr=/usr/local/apr—with-java-home=/usr/local/jdk1.5.0_08
- make
- make install
- ls /usr/local/apr/lib
關鍵在於環境變數 LD_LIBRARY_PATH,只要設對,tomcat 就會啟動 APR。
- export LD_LIBRARY_PATH=/usr/local/apr/lib
- cd /mnt/hda1/apache-tomcat-5.5.17
- bin/startup.sh
- tail -100 logs/catalina.out
- 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 來用。
- cd /mnt/hda1/apr-1.2.7
- checkinstall
- mv apr-1.2.7-i386-1.tgz /mnt/hda1
- cd /mnt/hda1/apache-tomcat-5.5.17/
- cd bin/tomcat-native-1.1.3/jni/native/
- checkinstall
- mv native-native-i386-1.tgz /mnt/hda1/tomcat-native-i386-1.tgz
- cd /mnt/hda1/work
- mkdir apr-tcnative
- installpkg -root apr-tcnative ../apr-1.2.7-i386-1.tgz
- installpkg -root apr-tcnative ../tomcat-native-i386-1.tgz
- dir2mo apr-tcnative apr-tcnative-1.1.3.mo
- reboot for test
make tomcat.mo
重開後測試 apr-tcnative-1.1.3.mo 可以的話,就準備改一下 tomcat 來包 apache-tomcat-5.5.15.mo,讓啟動 APR 模式比較簡單。
- cd /mnt/hda1/work
- mkdir -p tomcat/usr/local
- cd tomcat/usr/local
- tar zxvf ../apache-tomcat-5.5.17.tar.gz
- cd apache-tomcat-5.5.17
- vi bin/catalina.sh
這裡有個考量,必須指名 JAVA_HOME 的位置,而這個位置卻是每次裝新的 JRE 都會更換的,所以設到 /usr/local/java,加上下面一行。
export JAVA_HOME=/usr/local/java
- uselivemod jre-1_5_0_08-linux.mo
- uselivemod apr-tcnative-1.1.3.mo
- cd bin
- cp startup.sh startapr.sh
- vi startapr.sh
主要是把環境變數寫入,不用每次輸入,加上下面一行。
export LD_LIBRARY_PATH=/usr/local/apr/lib
開始測看看。
- ./startapr.sh
- tail -100 logs/catalina.out
- ./shutdown.sh
可以跑就準備包起來,同時做個捷徑 /usr/local/tomcat。
- cd /mnt/hda1/work
- cd tomcat/usr/local
- ln -s apache-tomcat-5.5.17 tomcat
- cd /mnt/hda1/work
- dir2mo tomcat apache-tomcat-5.5.17.mo
- reboot
final tomcat-native mo test run
重開後就可以把需要的 mo 載入跑看看。
- cd /mnt/hda1/work
- uselivemod jre-1_5_0_08-linux.mo
- uselivemod apr-tcnative-1.1.3.mo
- uselivemod apache-tomcat-5.5.17.mo
- /usr/local/tomcat/bin/startapr.sh
- netstat -at
- tail -100 /usr/local/tomcat/logs/catalina.out
- uselivemod ttf-arphic-uming-0.1.mo
- uselivemod firefox-1.5.0.6-zh_TW.mo
- uselivemod gcin-1.2.5.mo
- ldconfig
- startx
- firefox to http://127.0.0.1:8080/
Download
下面軟體都是 Apache 改作,所以採 Apache License 釋出,非本站慣用 授權 。