作業系統:Redhat Linux(Fedora Core 2)
JDK: j2sdk-1_4_2_01-linux-i586.bin
TOMCAT: jakarta-tomcat-5.0.19.tar.gz
安裝步驟:
JDK:
1)將安裝程式複製到 /usr/local目錄下
2)執行命令:
./j2sdk-1_4_2_01-linux-i586.bin
解壓後得到目錄j2sdk-1.4.2_01,將目錄名改為j2sdk-1.4.2,不然後面的操作會無效。
3)依次執行下列命令:
ln -s j2sdk-1.4.2 jdk
ln -s jdk/jre jre
4)設定環境變數
vi /etc/profile
加入如下內容:
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
CLASSPATH=/usr/local/jdk/lib:/usr/local/jre/lib
export CLASSPATH
PATH=$PATH:/usr/local/jdk/bin:/usr/local/jre/bin
5)測試JDK是否安裝成功
cd /etc
javac
如果出現關於javac的使用說明,表示安裝成功。
TOMCAT:
1)將安裝程式複製到 /usr/local目錄下
2)執行命令:
tar -zxvf jakarta-tomcat-5.0.19.tar.gz
解壓後得到目錄jakarta-tomcat-5.0.19
3)設定環境變數
vi /etc/profile
加入如下內容:
TOMCAT_HOME=foo/tomcat
export TOMCAT_HOME
4)進入 /usr/local/jakarta-tomcat-5.0.19/bin,執行:
./startup.sh start
啟動tomcat伺服器
5)測試是否安裝成功
用瀏覽器瀏覽http://localhost:8080
如果出現tomcat的歡迎頁面,表示安裝成功。
我假設你使用Debian3,如果你使用其他的Linux版,可能會有安裝方法和設定路徑上的區別。
1,安裝J2SDK 1.1 使用Debian源裡的安裝包
以root 身份運行apt-get install sun-j2sdk1.4,這樣將安裝sun的j2sdk1.4。然後輸入java如果你看到的不是command not found,就表示你已經安裝正確了。否則搜尋是否有java和javac兩個檔案,我的在/usr/lib/j2sdk1.4-sun/bin下,如果 有就建立連結到/usr/bin下,串連名與原檔案名稱一樣。
1.2 使用sun網站上的安裝包
具體方法參考sun網站上的安裝說明。也可以參考我的做法(圖形介面操作):
下載正確的壓縮包後解壓,一般得到類似名為jdk1.x.x的檔案夾。將整個檔案夾移動到/usr/lib目錄下,然後進入 jdk.1.x.x/bin下的java, javac, javadoc, jar四個可執行檔建立連結,然後複製到/usr/bin檔案夾下,並且改名為與原檔案相同。這樣做的原因是一般/usr/bin是$PATH環境變數 的一部分,以後你想運行javac命令編繹一個.java源檔案時,只需要輸入javac filename就行了,而不需要輸入javac檔案所在的完整路徑。
JAVA_HOME環境變數可以不設定,因為據我的使用經驗,java,javac等jdk的程式知道在哪裡找到自己的家。當某個程式需要JAVA_HOME環境變數,我們再在它的啟動指令碼中設定。因為使用JAVA_HOME環境變數的程式很少。
2,安裝Tomcat 從http://tomcat.apache.org/網站上下載tomcat for Linux。網站上有不同版本的源碼包和二進位包等,而二進位包又有core,deployer,embedded三種。我使用tomcat5.28二進位包中的core。
下載jakarta-tomcat-5.0.28.tar.gz解壓,將得到jakarta-tomcat-5.0.28檔案夾,我把它改名為tomcat5,把它拷貝到你喜歡的地方。我放在/usr/share/下。
2.1 試運行tomcat
在終端中輸入/usr/share/tomcat5/bin/startup.sh,將啟動tomcat。然後你在瀏覽器中輸入http://localhost:8080或者http://127.0.0.1:8080你就看到tomcat產生的頁面了。
運行/usr/share/tomcat5/bin/startup.sh出錯?試運行:
JAVA_HOME=/usr/lib/j2sdk1.4_sun #這裡的路徑是你的j2sdk的安裝路徑export JAVA_HOME/usr/share/tomcat5/bin/startup.sh2.2 將tomcat設定為開機啟動 有兩個方法,1是使用tomcat內建的啟動指令碼啟動,2是使用jsvc將tomcat啟動為Linux的一個進程。
2.2.1
建立一個指令碼命名為tomcat5.sh,內容為:
#!/bin/sh#file:tomcat5.sh#設定環境變數,如果無法啟動就將注釋去掉#JAVA_HOME=/usr/lib /j2sdk1.4-sun#CATALINA_HOME=/usr/share/tomcat5#CLASSPATH=\#$JAVA_HOME/lib/tools.jar:\#$CATALINA_HOME/bin/commons-daemon.jar:\#$CATALINA_HOME/bin/bootstrap.jarcase "$1" in start) echo "Starting tomcat5..." /usr/tomcat5/bin/startup.sh ;; stop) echo "Stopping tomcat5..." /usr/tomcat5/bin/shutdown.sh ;; *) echo "Usage tomcat.sh start/stop" exit 1;;esac#tomcat5.sh end將tomcat5.sh 拷貝到/etc/init.d下面。然後運行/usr/bin/ksysv運行圖形介面的開機啟動設定工具。將Available Services欄裡的tomcat5.sh拖到Runlever 2 Start,Runlever 3 Start,Runlever 4 Start,Runlever 5 Start,Runlever 6 Start,Runlever 0 Stop,Runlever 1 Stop,Runlever 6 Stop,你可能需要注意表徵圖的位置,我將表徵圖拖到每一欄的啟動項目標號是90的位置。
或者你在終端裡運行:
ln -s /etc/init.d/tomcat5.sh /etc/rc0.d/K90tomcat5.shln -s /etc/init.d/tomcat5.sh /etc/rc1.d/K90tomcat5.shln -s /etc/init.d/tomcat5.sh /etc/rc2.d/S90tomcat5.shln -s /etc/init.d/tomcat5.sh /etc/rc3.d/S90tomcat5.shln -s /etc/init.d/tomcat5.sh /etc/rc4.d/S90tomcat5.shln -s /etc/init.d/tomcat5.sh /etc/rc5.d/S90tomcat5.shln -s /etc/init.d/tomcat5.sh /etc/rc6.d/K95tomcat5.sh重啟機器看tomcat是否可以自動啟動了。
2.2.2
方法2.2.1有一個嚴重的問題,那就是tomcat具有root許可權。我意味著你的任何一個jsp指令碼都具有root許可權,所以可以輕易地用jsp指令碼刪除你整個硬碟裡的東西!所以我們最好不要使用2.2.1方法。
我們下載的jakarta-tomcat-5.0.28.tar.gz帶有fsvc工具,在壓縮包裡的jakarta-tomcat- 5.0.28/bin/fsvc.tar.gz,如果你按上面的步驟做了,它就在 /usr/share/tomcat5/bin/fsvc.tar.gz,將其解壓,得到/usr/share/tomcat5/bin/fsvc- src檔案夾。在終端運行:
/usr/share/tomcat5/bin/fsvc-src/configure --with-java=/usr/lib/j2sdk1.4-sun
make
得到/usr/share/tomcat5/bin/fsvc-src/fsvc檔案。將/usr/share/tomcat5/bin /fsvc- src/native/tomcat5.sh指令檔拷貝到/etc/init.d下,再使用2.2.1中的的半部分方法將tomcat設定為自啟動。
/etc/init.d/tomcat5.sh還需要修改,使其看起來像:
JAVA_HOME=/usr/lib/j2sdk1.4-sunCATALINA_HOME=/usr/share/tomcat5DAEMON_HOME=/usr/share/tomcat5TOMCAT_USER=tomcat5 #這裡改為一個普通身份的使用者名稱TMP_DIR=/var/tmpCATALINA_OPTS=CLASSPATH=\$JAVA_HOME/lib /tools.jar:\$CATALINA_HOME/bin/commons-daemon.jar:\$CATALINA_HOME/bin/bootstrap.jarcase "$1" in start) # # Start Tomcat # $DAEMON_HOME/bin/jsvc-src/jsvc \......先不要重啟實驗,請手動運行/etc/init.d/tomcat5.sh start,然後在瀏覽器中輸入http://localhost:8080或者http://127.0.0.1:8080看tomcat是否能夠啟 動,再運行/etc/init.d/tomcat5.sh stop看是否能停止。
問題:無法用fsvc啟動tomcat?
在http://jakarta.apache.org/commons/daemon/faq.html有 說明。如果你使用Debian,運行 modconf然後將/kernel/security下的capability模組安裝上。如果你使用其它的版本,並且把capability編繹為模 塊,請在/etc/init.d/tomcat5.sh的合適位置(你想使用第2行?)加上modprobe capability。
3,設定tomcat的server.xml布署網站 如果你想讓別人在瀏覽器中輸入你的IP而不需要在IP後面加上“:連接埠號碼”就能訪問你的網站的話,請將
<connector port="8080" maxthreads="150" minsparethreads="25" maxsparethreads="75" enablelookups="false" redirectport="8443" acceptcount="100" debug="0" connectiontimeout="20000" disableuploadtimeout="true"></connector>中的port="8080"改為 port="80",因為80是瀏覽器請求的預設連接埠。找到
<host name="localhost" debug="0" appbase="webapps" unpackwars="true" autodeploy="true" xmlvalidation="false" xmlnamespaceaware="false"></host>修改為使appBase="/home/tomcatweb"。 並在其後面加上:
<context path="" docbase="/home/tomcatweb" crosscontext="false" debug="0" reloadable="true"></context>把你自己的index.jsp放在/home/tomcatweb目錄下, 然後在瀏覽器中輸入http://127.0.0.1,你應該就能看到index.jsp的運行結果了。
4,中文問題 tomcat並沒有特殊的中文問題。而且大部分情況下的中文問題是因為使用者根本就不會寫JSP代碼,甚至不會寫HTML代碼。
4.1 簡單HTML檔案的亂碼問題
一個HTML檔案,裡麵包含有?形奈淖鄭紓?
<html><head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /></head>你好。</html>上面的標籤告訴瀏覽器你的HTML檔案使用的是UTF-8編碼格式。請將UTF- 8正確地設定為你的文字編輯器儲存時的編碼,否則,只有全英文HTML源碼檔案才能保證不出現亂碼。
4.2 簡單的JSP檔案的亂碼問題
一個JSP檔案,裡麵包含有中文文字,如:
<%@ page contentType="text/html; charset=UTF-8" %><html><head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /></head><% out.println("你好。");%></html><%@ page contentType="text/html; charset=UTF-8" %>標籤告訴tomcat和java編繹器你的檔案的編碼是UTF-8格式的。
4.3 被包含的檔案的內容是亂碼
如果你的parent.jsp檔案中使用<jsp:include page="child.jsp" >檔案包含了child.jsp,請在parent.jsp和child.jsp檔案中都指定了正確的<%@ page contentType="text/html; charset=UTF-8" %>(改UTF-8為正確的編碼),兩者可以不一樣。</jsp:include>
如果你的parent.jsp檔案中使用<%@ include file="child.jsp" %>檔案包含了child.jsp,請保證parent.jsp和child.jsp是相同的編碼,並且在parent.jsp中設定了正確的 <%@ page contentType="text/html; charset=UTF-8" %>(改UTF-8為正確的編碼)。不要在child.jsp中設定<%@ page contentType="text/html; charset=UTF-8" %>,否則,tomcat會出錯(不總是)。