2010年1月8日 星期五

RHEL5升級JDK 6 Update 17+Tomcat 6.0.20筆記

RHEL5內建的JDK是gij (GNU libgcj) version 4.1.1的Java 1.4.2,這版本跟一些系統不大合,也稍嫌有點舊,所以趁升級Tomcat 6時順便來換掉,
一般RHEL 5目前都僅支援到Apache Tomcat 5及JRE 5, 無法以yum安裝,以下為更新步驟:

1.安裝JDK

目前最新版本是JDK 6 Update 17,請到此下載
http://java.sun.com/javase/downloads/index.jsp

安裝JDK,回答完Yes的版權問題後, 開始自動解壓縮並安裝RPM

#sh jdk-6u17-linux-i586-rpm.bin

新增path在/etc/profile (順便把tomcat的路徑設定上去)

#vi /etc/profile

##JAVA Environment
export JAVA_HOME=/usr/java/jdk1.6.0_17
export JAVA_BIN=/usr/java/jdk1.6.0_17/bin
export JAVA_OPTS="$JAVA_OPTS -Xmx512M -Dcom.sun.management.jmxremote"
export PATH=$JAVA_HOME/bin:$PATH
#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
export CATALINA_HOME=/var/lib/tomcat6
#export CLASSPATH=$CATALINA_HOME/common/lib/servlet.jar
export CLASSPATH=./:${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib/ext:${CATALINA_HOME}/common/lib

#source /etc/profile

退出後再重新登入,使用新path,由於一個系統可以使用多個版本的java,所以RHEL5內建的"java"是1.4.2的gij,
如果export PATH=$JAVA_HOME/bin:$PATH的順序相反可能會抓到1.4.2
# java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-52)

正常應該看到我們新裝的1.6.0_17
$ java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)

2.安裝Apache Tomcat 6

目前最新版本是6.0.20,請在官方網站下載
http://apache.freelamp.com/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz

先將舊的tomcat5移除掉

#rpm -qa|grep tomcat

# rpm -qa|grep tomcat
tomcat5-servlet-2.4-api-5.5.17-8jpp.2
tomcat5-jsp-2.0-api-5.5.17-8jpp.2
tomcat5-jasper-5.5.17-8jpp.2
tomcat5-server-lib-5.5.17-8jpp.2
tomcat5-admin-webapps-5.5.17-8jpp.2
tomcat5-webapps-5.5.17-8jpp.2
tomcat5-common-lib-5.5.17-8jpp.2
tomcat5-5.5.17-8jpp.2

rpm -e tomcat5
rpm -e tomcat5-server-lib
rpm -e tomcat5-admin-webapps
rpm -e tomcat5-webapps
rpm -e tomcat5-common-lib
rpm -e tomcat5-jasper

解壓縮tomcat6,並移到 /var/lib/tomcat6
#tar zxvf apache-tomcat-6.0.20.tar.gz
# mv apache-tomcat-6.0.20 /var/lib/tomcat6

--------------------------------------
由於Tomcat從 5.5版本後增加了APR技術(Apache Portable Runtime),這是一個用C語言寫成的runtime lib,目的在於提高Tomcat的性能,使得Tomcat將不僅僅擔任一個容器的功能,且成為一個一般的web服務器(general purpose webserver),
但官方原始並未放進去這些,所以我們必須抓The Apache Tomcat Native Connector回來補進去
Tomcat在原apache-tomcat-6.0.20.tar.gz的bin裡面有附tomcat-native.tar.gz, 這是tomcat-native-1.1.16-src,但tomcat-6.0.20需要1.1.18,可以在此下載:

http://tomcat.apache.org/native-doc/

# wget http://www.apache.org/dist/tomcat/tomcat-connectors/native/1.1.18/source/tomcat-native-1.1.18-src.tar.gz
# tar zxvf tomcat-native-1.1.18-src.tar.gz

需要apr-devel ,openssl-devel兩個套件,openssl-devel已有,apr-devel在此下載:
# wget http://ftp://ftp.rediris.es/volumes/vol1/centos.org/5.3/os/x86_64/CentOS/apr-devel-1.2.7-11.i386.rpm
# rpm -ivh apr-devel-1.2.7-11.i386.rpm

# cd tomcat-native-1.1.18-src/jni/native
# ./configure --with-apr=/usr/bin/apr-1-config \
--with-java-home=/usr/java/jdk1.6.0_17 \
--with-ssl=yes \
--prefix=$CATALINA_HOME
# make && make install

compile好的lib會在$CATALINA_HOME/lib

在startup.sh加上以下兩行:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH

或是直接丟到/jre/lib/i386
# cd /var/lib/tomcat6/lib
# mv lib* /usr/java/jdk1.6.0_17/jre/lib/i386

有個已經compile好的lib--Tomcat-native-i686-whatever-linux2.tar.gz是1.1.12,tomcat-6.0.20需要1.1.18,所以不支援
--------------------------------------
修改權限
#chown -R tomcat.tomcat /var/lib/tomcat6

啟動tomcat6
# cd /var/lib/tomcat6/bin
#./startup.sh

可以在logs/catalina.out裡看到APR有被啟動
2009/12/5 下午 05:39:27 org.apache.catalina.core.AprLifecycleListener init
資訊: Loaded APR based Apache Tomcat Native library 1.1.18.
2009/12/5 下午 05:39:27 org.apache.catalina.core.AprLifecycleListener init
資訊: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

然後打開瀏覽器,http://your.ip:8080
即可看到Tomcat

Tomcat的帳號設定在/var/lib/tomcat6/conf/tomcat-users.xml
點Administration的Status/Tomcat Manager卻一直無法進入,原因是未拿掉,加入admin帳號及manager的role












Tomcat6開機啟動
這個有兩種方式,主要須避開以root啟動
(1)官方文件以jsvc來啟動,須compile jsvc

# cd $CATALINA_HOME/bin
# tar xvfz jsvc.tar.gz
# cd jsvc-src
# autoconf
# chmod 755 configure
# ./configure
# make
# cp jsvc ..
# cd ..
# cd $CATALINA_HOME
# ./bin/jsvc -cp ./bin/bootstrap.jar \
-outfile ./logs/catalina.out -errfile ./logs/catalina.err \
org.apache.catalina.startup.Bootstrap

然後把Tomcat5.sh修改完放到/etc/rc.d/init.d/去
cp $CATALINA_HOME/bin/jsvc-src/native/Tomcat5.sh /etc/rc.d/init.d/tomcat
以下請參考修改(附檔tomcat及tomcat6):
-----------------------------------------------------------------------------
echo "Tomcat 6 auto start/stop"
JAVA_HOME=/usr/java/jdk1.6.0_17
CATALINA_HOME=/var/lib/tomcat6
DAEMON_HOME=/var/lib/tomcat6/bin
TOMCAT_USER=tomcat

# for multi instances adapt those lines.
TMP_DIR=/var/lib/tomcat6/temp
PID_FILE=/var/run/tomcat6.pid
CATALINA_BASE=/var/lib/tomcat6

CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar

case "$1" in
'start')
#
# Start Tomcat
#
echo -n "Starting Tomcat6: "
$DAEMON_HOME/jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Dcatalina.base=$CATALINA_BASE \
-Djava.io.tmpdir=$TMP_DIR \
-wait 10 \
-pidfile $PID_FILE \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
exit $?
echo
;;

'stop')
#
# Stop Tomcat
#
echo -n "Shutting Tomcat6: "
$DAEMON_HOME/jsvc -stop -pidfile $PID_FILE org.apache.catalina.startup.Bootstrap
exit $?
echo
;;

'status')
#
# Tomcat Status
#
echo -n "Restarting Tomcat6: "
ps ax --width=1000 | grep "
rg.apache.catalina.startup.Bootstrap" | awk '{printf $1 " "}' | wc | awk '{print $2}' >/tmp/tomcat_process_count.txt
read line < /tmp/tomcat_process_count.txt
if [ $line -gt 0 ]; then
echo -n "Tomcat ( pid "
ps ax --width=1000 | grep "
rg.apache.catalina.startup.Bootstrap" | awk '{printf $1 " "}'
echo ") is running..."
else
echo "Tomcat is stopped"
fi
echo
;;

*)
echo "Usage tomcat {start | stop | status}"
exit 1;;

esac
exit 0
-----------------------------------------------------------------------------
(2)我個人的方式--直接以tomcat用戶呼叫startup.sh/shutdown.sh
-----------------------------------------------------------------------------
#!/bin/sh
#
# Startup script for Tomcat 6.0, the Apache Servlet Engine
#
# chkconfig: - 80 20
#
echo "Tomcat 6.0 auto start/stop"

JAVA_HOME=/usr/java/jdk1.6.0_17
JAVA_BIN=/usr/java/jdk1.6.0_17/bin
CATALINA_HOME=/var/lib/tomcat6
DAEMON_HOME=/var/lib/tomcat6/bin
TOMCAT_USER=tomcat

case "$1" in
'start')

echo -n "Starting Tomcat 6: "
su - $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh
touch /var/lock/subsys/tomcat6
echo
;;

'stop')

echo -n "Shutting Tomcat 6: "
su - $TOMCAT_USER -c $CATALINA_HOME/bin/shutdown.sh
rm -f /var/lock/subsys/tomcat6
echo
;;

*)
echo "Usage: tomcat6 {start | stop }"
exit 1

esac
exit 0
-----------------------------------------------------------------------------
以上請擇一設定,
#chkconfig --add tomcat

安裝Lambdaprobe,這是個滿好用的tomcat管理系統
http://www.lambdaprobe.org/downloads/1.7/probe.1.7b.zip
Lambda Probe(以前稱為Tomcat Probe)是一款即時監控和管理的Apache Tomcat的基本工具, 以AJAX開發而成,可以用來即時管理一個單獨的host.
LambdaProbe擁有幾乎所有Tomcat Manager的功能,可以說是一個增強版本的 Tomcat Manager,除此之外,LambdaProbe 還擁有很多讓開發者和系統管理者更方便的性能, 使得Tomcat對開發者和管理者更加透明. 包括應用程式,資料來源,發佈, 日誌, 進程, 集群, 系統訊息, 狀態, 連接器狀態這些功能. 搭配 JDK 1.5 甚至可以即時的畫出 Server 的詳細記憶體佔用狀態.
用 Tomcat manager 安裝 Probe: 下載 Lambda Probe 的 .war 檔,啟動Tomcat,進入 Manager url(例如:http://localhost:8080/manager/html),使用“WAR file to deploy”選項載入 probe.war。

簡繁中文語言包安裝--將其中的 messages_zh_CN.properties和messages_zh_CN.properties 放到 $CATALINA_HOME/webapps/probe/WEB-INF下即可
# mv messages_zh_CN.properties messages_zh_TW.properties $CATALINA_HOME/webapps/probe/WEB-INF

摘自:http://phorum.study-area.org/index.php?topic=59120.0

沒有留言:

wibiya widget