1 前言
最近有個需要我的團隊開發一個BBS,當然我們不會自己去開發,因為現在成熟的BBS比比皆是,就拿Discuz來說好了,應該是目前國內比較的好的版本了吧。大家可以打開http://www.discuz.net/這個網址來訪問他們的論壇,現在成熟的論壇當然是PHP的,網站上有很多的資源可以下來,比如搭建的用戶手冊啦,都寫的非常的不錯,那我為什么還要寫這個文檔呢,因為我發現沒有基于apache下面的用戶手冊,因為我們已經給用戶開發了一套系統是基于J2EE的,運行在Tomcat下面,當然Tomcat無法支持PHP,所以我一定要把這個論壇部署apache下面,這樣能形成apache+tomcat+j2ee+php的環境即能支持java相關web技術的訪問,又能支持php的web訪問,這個就是我的目的。然后我就查閱了相關的資料來搭建這個環境,中間遇到了非常多的問題,提出來跟大家說,希望能給大家一點點的幫助,能給一些自己想動手搭建apache下面論壇的朋友一點幫助,寫的不好的地方往見諒,好了廢話不說了,我們現在就開始。
2 前期準備
在搭建BBS之前所需要準備的軟件:
(1) PHP
官方下載的網址:http://snaps.php.net/win32/php5.2-win32-200808060430.zip
(2) Mysql
官方下載的網址:http://dev.mysql.com/downloads/
或者百度去搜索mysql,我這里給出了華軍的下載:http://www.onlinedown.net/soft/3573.htm
(3) Jdk和tomcat
這里先不寫了,因為我這里搭建論壇,至于想整合的人,應該這2個都有。
Tomcat下載地址:http://apache.mirror.phpchina.co ... e-tomcat-6.0.16.zip
Jdk下載地址:http://cds.sun.com/is-bin/INTERS ... -windows-i586-p.exe
(4) Apache
官方下載的網址:
華軍的下載:http://www.onlinedown.net/soft/11528.htm
(5) Discuz! 6.1.0_UC1.0.0 整合安裝包【20080725】
下載的網址:http://download.comsenz.com/Discuz/6.1.0/Discuz610_UC100_GBK.zip
直接下載這個Discuz和UCenter Home合在一起的,裝起來特別的方便。
(6) UCenter Home 使用手冊正式發布
下載的網址:http://dz.s18.mydiscuz.com/doc/UCenter_Home_usersguide.zip
強烈建議先看這個用戶手冊。
系統約定
環境軟件下載后存放位置:X:/Server_Tools
環境軟件安裝位置:X:/Server_Core
PHP安裝位置:X:/Server_Core/PHP
MySQL安裝位置:X:/Server_Core/MySQL
Apache網站站點根目錄:X:/wwwroot
MySQL 數據庫位置:X:/Database
Apache安裝位置:X:/ Server_Core/apache
這個可以跟用戶手冊上一樣。
3 安裝
3.1 安裝apache
安裝成功,且已運行,在IE中輸入http://localhost/可以看到
apache的主頁。安裝成功!
接下來就需要配置httpd.conf文件, apache的配置文件是httpd.conf,位于apache根目錄的下的conf文件夾下
(1).修改默認網站根目錄:
在X:/下建立文件夾wwwroot,以此作為網站的根目錄
DocumentRoot "X:/ Server_Core /Apache Group/Apache2/htdocs"
改為DocumentRoot "X:/wwwroot"
注意:Apache修改DocumentRoot后訪問頁面出現403錯誤,解決辦法如下:
修改Apache配置文件httpd.conf中的:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
</Directory>
為
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
# Deny from all
Satisfy all
</Directory>
即刪除Deny from all行
(2).修改默認主頁
當訪問目錄時,apache會自動導入的主頁,優先級以先后順序為準
把DirectoryIndex index.html改為
DirectoryIndex index.html index.jsp index.php default.jsp default.php index.html.var
(3). 讓 Apache 解析 php 頁面
用你喜歡的文本編輯器打開httpd.conf文件,讓我們加幾行進去,這樣我們Apache 就可以解析.php 和.phps文件了。我們需要注意conf文件的兩個部分,第一部分是 Dynamic Shared Object (DSO) Support list,第二部分是 cgi-bin directory
首先讓我們找到如下所示的 DSO 列表.
# Dynamic Shared Object (DSO) Support
#
# to be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
這還有許多,一直找到最后一行:
#LoadModule ssl_module modules/mod_ssl.so
上面一行是該列表的最后一行,按回車產生一個空的行,在這個空行內加入下面這行:
LoadModule php5_module X:/Server_Core/PHP / php5apache2_2.dll
注意:這里是根據你自己apache和php的版本來確認的,如果你是PHP4設置就不一樣了,有可能是:
LoadModule php4_module X:/Server_Core /php/sapi/php4apache2.dll
在關閉conf文件之前,我們需要再加入兩行。找到CGI-BIN目錄,為了節省時間,可以這樣找:按CTRL+F,(譯者注:如果你是在記事本而不是寫字板里編輯這個文本,那么,應該用快捷鍵F3)查找 <Directory "C:/Apache2/cgi-bin"> ,在第二個</Directory>后面兩次回車,以便加入下面兩行:
AddType application/x-httpd-php .php .phtml .php3 .php4
AddType application/x-httpd-php-source .phps
添加好后,保存你的conf文件,并重新啟動你的apache服務器,如果不能啟動apache,這個時候要查看哪里設置錯誤了。
3.2 安裝PHP
(1) 解壓縮下載的 php-5.2.4-Win32.zip 文件,并將其復制到:X:/Server_Core/PHP ;
(2) 進入 X:/Server_Core/PHP 文件夾,將 php.ini-dist 重命名為 php.ini ;
(3) 打開 php.ini 文件,找到:extension_dir = "./"
將其改為;
extension_dir = "X:/Server_Core/PHP/ext"
(4) 找到:Windows Extensions
在 Windows Extensions 下方的動態模塊配置中,需要打開以下模塊支持:(去掉模塊配置每行前面的;號即可)
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_mysql.dll
(5) 找到:
disable_functions =
改為:
disable_functions = phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
(6) 保存 php.ini 文件,并將其復制到 C:/Windows/
以上是用戶手冊的配置方法,可以按照如上的方法配置PHP,沒有問題,但是中間我們會有一些東西需要更改進行校驗,避免后期部署產生問題。
在第(5)步
disable_functions =phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
去掉紅色部分的字,這個是PHP的一個函數,官方的把這個函數給禁用了,造成函數不能運行,先把“phpinfo”先去掉,可以讓我們測試PHP的環境有沒有部署好。
現在就開始測試我們的PHP環境部署好了沒有?
打開apache,在X:/wwwroot建立phpinfo.php,編輯輸入如下內容
<?php
phpinfo();
?>
保存。
重新啟動apache
在IE中輸入http://localhost/phpinfo.php ,如果出現php的環境變量,說明php,安裝成功一半,為什么說一半呢,因為有可能你的機器以前裝過php,可能配置文件的讀取是不正確的。
現在就讓我們校對下相關的配置正確不?
現在特別要注意:紅色框框出現的php.ini是C:/Windows/,如果不是就需要你注意了,這個時候需要刪除其他路徑下面的配置文件,然后重新啟動apache。
如果這個成功了以后,這樣PHP就完全的成功了,這個時候可以把這個phpinfo的函數重新加入disable_functions中去了。
現在php也配置好了,現在就開始部署工程吧。
3.3 安裝MYSQL
Mysql的安裝完全按照用戶手冊上的內容進行安裝就ok了,不過有些機器因為環境的問題可能相關mysql的動態鏈接庫dll需要進行更改。
(4) 準備 LibMySQL 動態鏈接庫
將 X:/Server_Core/MySQL/bin/libmySQL.dll 文件復制到 C:/Windows/System32 。
在安裝手冊是拷貝了mysql的安裝目錄的libmySQL.dll到system32下面,在后期安裝BBS驗證數據庫的時候就會不通過,
重要:需要復制php目錄下的libmysql.dll文件到system32下。
3.4 安裝Discuz論壇
(1) X:/wwwroot/下面建立bbs目錄
(2) 講下載好的Discuz610_UC100_GBK.zip打開,
然后把upload下面所有文件拷貝到你的X:/wwwroot/bbs/下面。
(3) 重新啟動apache。
(4) 完畢后,在瀏覽器中運行安裝程序(http://localhost/install)進入準備安裝頁面,如下圖所示:
(5) 驗證數據庫安裝
有些安裝不能通過,需要留意下3.3安裝mysql這個地方。
恭喜你成功安裝了BBS了,這個時候你就可以享受自己的成果了。
由于apache已經占了機器的80端口,如果你原先需要有Tomcat在80端口上跑的就麻煩了,這個時候就需要往下看了,這個時候我們需要整合apache和Tomcat了。
3.5 整合Tomcat和apache
整合,需要下載JK-1.2.26-httpd-2.2.4
下載地址:http://www.apache.org/dist/tomca ... 2.26-httpd-2.2.4.so
注意JK的版本一定要與Apache版本相同。如果你的版本與我的不同,可以去官網下載,有多種版本,適用于各種操作系統,下載適用的既可,地址:
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
(1)配置Tomcat
查找Tomcat目錄下的 conf/server.xml文件,在<host></host>中間加入以下語句以修改其默認的目錄:
<Context path="" docBase="X:/wwwroot" reloadable="true" crossContext="true"/>
在這里,如果 path 不為空,則設置的是虛擬目錄,path 的值為虛擬目錄名。Docbase表示你現在工程的目錄,工程的目錄要在X:/wwwroot下面。
查找Tomcat目錄下的 conf/workers.properties文件,并對比下方文本內容,如有不同處,以下方文本為準進行修改。
workers.tomcat_home=D:/Program Files/Tomcat #讓mod_jk模塊知道Tomcat的位置
workers.java_home=D:/Program Files/Java/jre1.6.0_07 #讓mod_jk模塊知道jre的位置
ps=/
worker.list=ajp13 #模塊版本
worker.ajp13.port=8009 #工作端口,若沒占用則不用修改
worker.ajp13.host=localhost #本機,若上面的Apache主機不為localhost,作相應修改
worker.ajp13.type=ajp13 #類型
worker.ajp13.lbfactor=1 #代理數,不用修改
如果此文件不存在,則依以上內容創建。對Tomcat的設置進行任何修改后都要重啟才可以生效。
(2)配置Apache
打開D:/Program Files/Apache2.2/conf下的httpd.conf,在最后加入下面這段代碼并保存。
LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so
#此處mod_jk的文件為你下載的文件
JkWorkersFile "D:/Program Files/Tomcat/conf/workers.properties"
#指定tomcat監聽配置文件地址
JkLogFile "D:/Program Files/Tomcat/logs/mod_jk2.log"
#指定日志存放位置
JkLogLevel info
JkMount /servlet/* ajp13
#讓Apache支持對servlet傳送,用以Tomcat解析
JkMount /*.jsp ajp13
#讓Apache支持對jsp傳送,用以Tomcat解析
JkMount /*.do ajp13
#讓Apache支持對.do傳送,用以Tomcat解析
注意:以上語句的基本意思是:
loadModule一行:加載mod_jk.dll動態鏈接庫模塊,使之與tomcat通訊
jkWorkersFile:指明工作時tomcat相關文件workers.properties位置
jkMount:兩行指明當遇到*.jsp和servlet時,交由ajp13協議,繼而轉發給tomcat處理。
(3)設置tomcat監聽端口,找到下面的內容:
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="0"
useURIValidationHack="false" disableUploadTimeout="true" />
默認的端口是8080,但這個大家都知道,最好修改一下,假設修改為:8123,則如下:
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
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互相通訊,如果下面的部分
被<!---->注釋掉,一定要把<!---->去掉.
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="0"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
(4)配置httpd.conf文件
這種方法把tomcat和apache的根目錄設置為同一目錄,但是必須限制客戶對目錄下一些文件的訪問,比如存入class
的web-inf,在httpd.conf下添加以下代碼:
#deny the access to WEB-INF
<Directory ~ "/WEB-INF/">
Order allow,deny
Deny from all
</Directory>
這樣,當試圖記問http://localhost/web-inf/時,apache將會拒絕.
到此為至,tomcat和apache的整合就完成啦.重新啟動tomcat和apache,
把jsp網頁放到X:/wwwroot/下,例如:
<html>
<h1>JSP test<hr>
<%out.println("Hello World!");%>
</html>
存為index.jsp,在IE中輸入http://localhost:8123/index.jsp
如果出現了
Hello World!
剛說明tomcat運行正常,在IE中輸入http://localhost/index.jsp,如果也出現
Hello World!
恭喜你!整合成功啦,你在jsp漫長艱辛的道路上邁出了一大步~!