天天看點

apache tomcat php mysql 配置_Windows下Apache+Tomcat+MySQL+jsp+php的伺服器整合配置經驗總結...JSP test

Windows下Apache+Tomcat+MySQL+jsp+php的伺服器整合配置經驗總結

1.作者:moonsbird

題目:Windows下Apache+Tomcat+MySQL+jsp+php的伺服器整合配置經驗總結

時間:2004.8.19

最初發表于西南交通大學錦城驿站

2.本文是作者學習幾年來學習jsp/配置伺服器環境的經驗總結。可以轉載,但請注明出處.

開始學習jsp很久了,網上有許多關于jsp整合的例子,但存在着許多問題。

對于Apache+Tomcat+MySQL+jsp+php的整合,針對不同的Tomcat和apache的版本,稍微有些差別。

即使你E文很好,去看Tomcat和Apache的手冊,也不一定能完全整合成功。暑假在家,網速不像

在交大那樣---老黃牛拉破車樣的慢,是以基于此作者查閱大量網上資料,汲其精華,寫這篇文

章希望能為初學者提供友善,也可以作為高手的參考手冊。

jsp是優秀的,它基于Java技術,利用JavaBean/Servlet制作動态網站,Java強大的面向對

象程式設計使Jsp相對于php和asp有着得天獨厚的優勢。但學習jsp相對于php和asp來說是有難度的。

我想原因之一就是jsp伺服器環境的配置要棘手一些。對于動态網頁制作,在交大asp曾很長時

間占據上風,不太多的“高手”(也許很多人認為使用jsp的是高手吧)使用jsp,交大比較成功的

jsp網站如世紀星網(Tomcat)、網絡教育學院網站(Resin)、交大招生就業網(Tomcat),伺服器是

Linux 9,運作相對來說比較穩定可靠。Linux下的Apache和Tomcat整合我曾經發過一篇文章,需

要的大家在錦城搜搜。linux和windows下整合思想是相同的,利用apache來解析*.html/*.htm

靜态網頁,當遇到*.jsp和servlet時,通過一個apache中的module把jsp頁面抛給Tomcat(或者

resin)來處理,在linux下通過編譯來制作這個module,要麻煩一些,本文通過現成的win下的一

個module來完成整合。

廢話不說啦,下面開始整合:

所需軟體

(1) j2sdk-1_4_2-windows-i586.exe

jdk的版本關系倒不是很大,不影響Apache和Tomcat的整合,配置環境變量時注意一些就行了.

(2) apache_2.0.49-win32-x86-no_ssl.exe

apache版本對整合影響不是太大,但最好利用此版本。

(3) jakarta-tomcat-4.1.30.exe

版本最好用這個版本,其他的我沒有試過,有可能會導緻整合不成功。

(3) php-4.3.3-Win32.zip

是一個壓縮包,下載下傳下來直接解壓就行了。

(4) mod_jk.dll

這個module是放到apache中的module中去的,利用它來使Tomcat和Apache之間通訊。

(5) mysql-max-3.23.46a-win.zip

資料庫mysql,其版本對整合影響不大.

(6) jdbc驅動

mysql的驅動程式,和資料庫連接配接時用

以上軟體我就不把down的位址貼出來啦,去網上搜baidu、北大天網,隻要用心找,應該問題

不大,如果真的找不到,發信找我要吧。

一.安裝j2sdk

在Windows下,直接運作下載下傳的j2sdk-1_4_1_01-windows-i586.exe檔案,根據安裝向導安裝

到一個目錄,例如安裝到d:\server\j2sdk

1.配置環境變量:

添加CLASSPATH變量

變量值為

./;%CLASSPATH%;D:\server\j2sdk1.4.0\lib\dt.jar;d:\server\j2sdk1.4.0\lib\tools.jar;

d:\server\j2sdk1.4.0\bin

這個配置保證java運作時可以找到class類。

2.添加JAVA_HOME變量,變量值為d:\server\j2sdk1.4.0

3.在原來的path變量中,添加d:\server\j2sdk1.4.0\bin,這樣無論在何處運作java名令都行。

重新啟動

cmd進入dos,運作java和javac看有沒有反應,如果出現指令的幫助,那麼java就安裝成功了

也可以運作一個java小程式看看.

public class test{

public static void main(String args[]){

System.out.println("看到這個說明java安裝成功!");

}

}

把上以程式存放在test.java檔案中,一定要是test.java才行,然後利用指令編譯

javac test.java

如果沒有錯誤,則說明編譯成功,如果有錯,在程式書寫正确的基礎上,剛說明java環境變量沒

有配置好,剛重新配置。如果編譯成功,則運作:

java test

注意,不是java test.java!如果無誤,剛會列印出:

看到這個說明java安裝成功!

gxgx,jdk安裝成功啦!可以進行下一步.

二.apache安裝

1.運作apache_2.0.49-win32-x86-no_ssl.exe,一路點"确定"和"接受"就行,路徑選

d:\server\apache group\apache2。

此時apache已經安裝成功,且已運作,在IE中輸入http://localhost/可以看到

apache的首頁。安裝成功!

2.修改httpd.conf

apache的配置檔案是httpd.conf,位于apache根目錄的下的conf檔案夾下

(1).修改預設網站根目錄:

在d:\server下建立檔案夾www,以此作為網站的根目錄

DocumentRoot "D:/server/Apache Group/Apache2/htdocs"

改為DocumentRoot "D:/server/www

(2).修改字元設定

apache解析中文網頁時會産生亂碼,

修改AddDefaultCharset ISO-8859-1為AddDefaultCharset GB2312

(3).修改預設首頁

當通路目錄時,apache會自動導入的首頁,優先級以先後順序為準

把DirectoryIndex index.html index.html.var改為

DirectoryIndex index.html index.jsp index.php default.jsp default.php index.html.var

(4).設定錯誤頁面

這樣對于你的網站會更安全些,如果沒設定,别人在你的網址後随便輸入一個路徑,會顯示404錯

誤,并且會顯示你的伺服器版本号,伺服器配置一目了然,為了避免這種情況,可以設定錯誤頁面。

當出現404錯誤,即找不到網頁時,把通路者導入到一個錯誤頁面

找到:

#

# Customizable error responses come in three flavors:

# 1) plain text 2) local redirects 3) external redirects

#

# Some examples:

#ErrorDocument 500 "The server made a boo boo."

#ErrorDocument 404 /missing.html

#ErrorDocument 404 "/cgi-bin/missing_handler.pl"

#ErrorDocument 402 http://www.example.com/subscription_info.html

#

httpd.conf中的這一部分,#ErrorDocument 404 /missing.html

一行修改為ErrorDocument 404 /error/noFile.htm,其中noFile.htm為d:\server\www\error\下一個錯誤檔案,需

要你自己建立。當發生404錯誤時,進入noFile.htm頁面,可以提示網頁沒有找到。這樣就不可能看到

你的伺服器軟體資訊了。也可以設定其它的錯誤導向的頁面,具體http響應錯誤編号請查閱相關資料。

重新啟動apache,如果沒意外,此時已經安裝成功,把靜态頁面放到d:\server\www\error\目錄下,看能不能成功解析。

随便輸入一個:http://localhost/sdagasgdasasg.htm,看是不是導向你設定的404錯誤,即noFile.htm錯誤頁面.

成功了吧!

關于apache中其他參數的意義,我就不說啦,你可以去網上查,其實最好的方法是看httpd.conf中的注釋部

分,已經說得很清楚啦。

好啦,到此apache安裝成功,你可以休息一下,聽首音樂,開始下一步的安裝:)

三.php安裝

解壓php-4.3.3-Win32.zip,到d:\server\php目錄下.下配置PHP和Apache,使之能解析php程式。

将d:\server\php\目錄中的“php.ini-dist”改名“php.ini”,并複制到C:\windows\system32

(Win2K目錄為:C:\winnt\system32)下,在apache的配置檔案httpd.conf中下入以下幾行,使之

支援php.

ScriptAlias /php/ "d:/server/php/"

AddType application/x-httpd-php .php3

AddType application/x-httpd-php .php

AddType application/x-httpd-php .phtml

Action application/x-httpd-php "/php/php.exe"

在d:\server\www下建立網頁:index.php,内容為:

php測試

phpinfo();

?>

用文本編輯器編輯好為存為index.php,重新啟動apache,在IE中輸入http://localhost/index.php,如果出現php的

環境變量,說明php,安裝成功,如果不能解析<?php  phpinfo(); ?>中的部分,則說明沒有成功安裝。

四.Tomcat的安裝

我用的是jakarta-tomcat-4.1.30.exe安裝檔案,在windows下一路點"确定"就行了,比較簡單,安裝目錄為

d:\server\tomcat

下面設定環境變量:

同jdk的環境變量,添加變量TOMCAT_HOME,值為d:\server\tomcat;增加變量CATALINA_HOME,值為

d:\tomcat\server,在path變量中加入d:\server\tomcat\bin

下面啟動tomcat,運作tomcat目錄下的,bin/startup.bat檔案就行啦,出現tomcat運作控制台,tomcat成功

啟動.

在IE中輸入http://localhost:8080/,看到大貓的吧,則tomcat安裝成功.

五.安裝MySQL

第一步:解壓 mysql-max-3.23.46a-win.zip,運作mysql安裝檔案,把mysql安裝到d:\server\mysql

第二步:在環境變量path中加入 d:\server\mysql\bin

第三步:進入d:\server\mysql\bin目錄,運作winmysqladmin,剛會出現對話框,設定mysql使用者密碼,假設

帳号為:root 密碼為:123

第四步:進入dos,進入mysql/bin下,運作以下指令打開mysql

mysqld-nt --standalone

則mysql開啟

然後運作:

mysql

如果開啟,則出現以下文字:

Welcome to the MySQL monitor. Commonds end with ; or \g.

Your MySQL connection id is 1 to server version: 3.23.46-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

注意:此時mysql沒有設定密碼,為了不讓别人進入你的資料庫,請為mysql設定密碼,具體操作請參閱mysql

的中文說明文檔。

至此,mysql安裝成功!

六.安裝MySQL的驅動類jdbc

解開jdbc驅動包,把裡面的org檔案夾複制到jsp可以找到的位置就行啦。可以是tomcat的根目錄common/classes

檔案夾下,也可以是jsp網站class類WEB-INF/class/下。當加載驅動程式時,以便能找到相關的類。或者把jdbc包

的路徑加入到classpath變量中。

七.Tomcat和Apache的整合配置

Tomcat隻是一個用來解析*.jsp檔案的容器,它不是伺服器,其解析靜态htm/html檔案的能力遠遠不如apache,

整合後在同一個端口使apache來解析靜态網頁,而遇到*.jsp網頁時,交由tomcat來解析.

第一步:把 mod_jk.dll複制到apache根目錄module檔案夾下。

第二步:配置APACHE

打開apache根目錄下conf\httpd.conf

添加以下語句:

#------------------------------------------

#connecting to tomcat using ajp13

LoadModule jk_module modules/mod_jk.dll

JkWorkersFile "d:/server/tomcat/conf/workers.properties"

JkMount /servlet/* ajp13

JkMount /*.jsp ajp13

#-----------------------------------------------------

注意:以上語句的基本意思是:

loadModule一行:加載mod_jk.dll動态連結庫子產品,使之與tomcat通訊

jkWorkersFile:指明工作時tomcat相關檔案workers.properties位置

jkMount:兩行指明當遇到*.jsp和servlet時,交由ajp13協定,繼而轉發給tomcat處理。

第三步:建立workers.properties檔案,在tomcat根目錄conf下建立workers.properties檔案,内容為:

workers.tomcat_home=d:\server\tomcat

workers.java_home=d:\server\j2sdk1.4.0

ps=\

# worker.list=ajp13

worker.list=ajp12,ajp13

worker.ajp12.port=8007

worker.ajp12.host=localhost

worker.ajp12.type=ajp12

worker.ajp12.lbfactor=1

worker.ajp13.port=8009

worker.ajp13.host=localhost

worker.ajp13.type=ajp13

worker.ajp13.lbfactor=1

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=ajp12, ajp13

worker.inprocess.type=jni

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jaxp.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parser.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)jasper.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)servlet.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)webserver.jar

worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar

worker.inprocess.cmd_line=-config

worker.inprocess.cmd_line=$(workers.tomcat_home)/conf/jni_server.xml

worker.inprocess.cmd_line=-home

worker.inprocess.cmd_line=$(workers.tomcat_home)

worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll

worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout

worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr

worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)

注意以上檔案第一、二行填上tomcat和jdk的相關目錄.

第四步:配置tomca/conf下的server.xml檔案,這個是tomcat的主要配置檔案,重要配置如下:

1.虛拟目錄設定:

找到下面内容:

unpackWARs="true" autoDeploy="true">

修改為:

unpackWARs="true" autoDeploy="true">

使tomcat主目錄為d:\server\www.

找到下面内容:

reloadable="true" crossContext="true">

修改為

reloadable="true" crossContext="true">

這個我的了解是應該是使tomcat根目錄下的jsp作為一個虛拟主機吧.

2.設定tomcat監聽端口,找到下面的内容:

port="8080"     minProcessors="5" maxProcessors="75"

enableLookups="true" redirectPort="8443"

acceptCount="100" debug="0" connectionTimeout="0"

useURIValidationHack="false" disableUploadTimeout="true" />

預設的端口是8080,但這個大家都知道,最好修改一下,假設修改為:8123,則如下:

port="8123"     minProcessors="5" maxProcessors="75"

enableLookups="true" redirectPort="8443"

acceptCount="100" debug="0" connectionTimeout="0"

useURIValidationHack="false" disableUploadTimeout="true" />

3.找到以下8009端口的地方,這個很重要,通過8009,tomcat與apache互相通訊,如果下面的部分

被注釋掉,一定要把去掉.

port="8009" minProcessors="5" maxProcessors="75"

enableLookups="true" redirectPort="8443"

acceptCount="10" debug="0" connectionTimeout="0"

useURIValidationHack="false"

protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

第五步:配置tomcat的conf/web.xml檔案:

類似于apache下404錯誤頁面的配置,在最後一行之前加入以下内容:

404

/error/noFile.htm

java.lang.NullPointerException

/error/error.jsp

第一個之間的是404未找到jsp網頁的錯誤導向頁面,使之發生404錯誤時,

網頁導向至/error/noFile.htm,也可以用類似方法添加其多的錯誤代碼導向頁面。

第二個之間的是當jsp網頁出現java.lang.NullPointerException導常時

導向至/error/error.jsp錯誤頁面。那麼需要在第個jsp網頁中加入以下内容:

典型的error.jsp錯誤頁面的程式寫法如下:

錯誤頁面

出錯了:

 錯誤資訊: 

Stack Trace is : 

java.io.CharArrayWriter cw = new java.io.CharArrayWriter();

java.io.PrintWriter pw = new java.io.PrintWriter(cw,true);

exception.printStackTrace(pw);

out.println(cw.toString());

%>

當出現NullPointerException異常時tomcat會把網頁導入到error.jsp,且會列印出出錯資訊。

第五步主要是安全考慮,在正常情況下,如果找不到網頁即出現404錯誤或者jsp程式出錯,在用戶端

會列舉出類似于如下的資訊(以tomcat為例,resin類似):

HTTP Status 404 - /sdags.jsp

--------------------------------------------------------------------------------

type Status report

message /sdags.jsp

description The requested resource (/sdags.jsp) is not available.

--------------------------------------------------------------------------------

Apache Tomcat/5.0.19

這樣伺服器版本會被别人看到,如果完成第五步的配置,就不會出現這種情況.

第六步:配置httpd.conf檔案

這種方法把tomcat和apache的根目錄設定為同一目錄,但是必須限制客戶對目錄下一些檔案的通路,比如存入class

的web-inf,在httpd.conf下添加以下代碼:

#deny the access to WEB-INF

Order allow,deny

Deny from all

這樣,當試圖記問http://localhost/web-inf/時,apache将會拒絕.

到此為至,tomcat和apache的整合就完成啦.重新啟動tomcat和apache,

把jsp網頁放到d:\server\www\下,例如:

JSP test

存為index.jsp,在IE中輸入http://localhost:8123/index.jsp

如果出現了

Hello World!

剛說明tomcat運作正常,在IE中輸入http://localhost/index.jsp,如果也出現

Hello World!

恭喜你!整合成功啦,你在jsp漫長艱辛的道路上邁出了一大步~!

以上整合文章我是在倉促的的時間完成的,可能有些錯誤。或考慮不周的地方,但是總體應該沒

太大問題,我是反複使用這種方法整合成功的。如果有疑問,可以直接給我聯系.

moonsbird:    mail:[email protected]

posted on

2008-01-30 13:53

exce4

閱讀(677)

評論(0)

編輯

收藏