Windows上安裝Apache2、PHP5、MySQL5及與Resin配合實現多系統之整合

NO IMAGE

誰知坎坷頗多,故覺得有必要記錄下來,一來為了備忘,二來希望對後來者有所助益,避免走不必要的彎路。本人的安裝操作過程也參考了很多前輩們的經驗,在此一併表示感謝。

另外在進入正題前,再說幾句題外話。下文的安裝整合在Apache2.2、PHP5、MySQL5、resin-3.1.10上測試通過,但考慮到每個人電腦本身執行環境的差異,並不能保證按照筆者的流程可以順利在各個電腦上安裝執行。因此按照此流程安裝的朋友遇到問題時,請自行通過Google、百度解決。因為別人文章裡言之鑿鑿順利完成的安裝,在筆者電腦裡卻就是無法執行,出的問題也是稀奇古怪,毫無道理可言。以下流程筆者走了不下10餘次,其間磕磕碰碰、反反覆覆、裝裝卸卸、修修改改,不由感嘆程式設計師工作之煩複瑣碎,心想如能以程式設計師執著之精神、頑強之意志、堅韌之毅力來做其他事情,諸事皆成!

好了,下面進入正題。

一、安裝apache 2.2.14

1、執行安裝程式,一路“Next”到“Server Information”,前兩處有域名填域名,無域名可填localhost(也可隨意填寫),其餘接受預設選項即可,按“Next”繼續。

2、選擇安裝型別,如果需要更改預設程式安裝目錄的話,選擇Custom自定義安裝,否則選Typical進行預設安裝。此處筆者選擇Custom,按“Next”繼續。

3、出現選擇安裝選項介面,點選“Change…”指定安裝目錄,按“Next”繼續。

4、確認安裝選項無誤後,按“Install”開始安裝。安裝嚮導成功完成時,右下角狀態列會出現一個新的小圖示,設定成“Start”狀態表示Apache服務已經開始執行,按“Finish”結束。

5、在瀏覽器輸入http://localhost/,如果顯示“It works!”,表示Apache已能正常工作。如果沒有顯示,或者提示出錯,或者Apache小圖示的綠燈不亮,則可能是系統80埠被佔用。這時需要查詢出錯原因,一般情況可能是IIS、迅雷等軟體佔用了80埠,關閉該軟體即可。

二、安裝php-5.2.5

1、將PHP的壓縮包解壓到指定資料夾中,筆者將其解壓到D:\dev\php。

2、將其中的php.ini-recommended檔案改名為php.ini,同時修改其內容:
(1);default_charset = “iso-8859-1″改為:default_charset =”utf-8″;
(2)extension_dir = “./” 改為:extension_dir =” D:/dev/php/ext”;
(3)找到memory_limit = 128M,修改數值可限定php指令碼最多佔用的記憶體大小;
(4)根據需求選擇要載入的模組,方法是去掉前面的;號,通常可載入如下的模組:
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
extension=php_mysql.dll
extension=php_xmlrpc.dll

3、將PHP安裝路徑新增到Windows的系統路徑中,具體方法是:在“我的電腦”上右鍵點選選擇“屬性”,在“系統屬性”視窗中按“高階”標籤,點選“環境變數”,在“系統變數”下找到“Path”變數,將“;D:\dev\php;D:\dev\php\ext”新增到原有值的最後面(具體路徑根據真實安裝路徑修改),修改之後重啟生效。

4、對Apache的配置檔案httpd.conf作如下修改:
(1)找到DocumentRoot “X:/xxx/htdocs” 和 <Directory “X:/xxx/htdocs”>(引號中地址根據個人安裝路徑填寫),將“X:/xxx/htdocs”改為網站所存放的資料夾,筆者在此將其改為DocumentRoot “D:/www” 和 <Directory “D:/www”>
(2)找到LoadModule,在下面新增
LoadModule php5_module “D:/dev/php/php5apache2_2.dll”
PHPIniDir “D:/dev/php”
(3)找到<IfModule dir_module> DirectoryIndex index.html </IfModule>,將其改為:
<IfModule dir_module>
DirectoryIndex index.php index.phtml index.html index.jsp
</IfModule>
(4)找到“AddType application/x-gzip .gz .tgz”, 在下面增加:
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php .html

5、在D:\www中建立index.php檔案,內容如下:
<?php
phpinfo();
?>
重啟Apache,在瀏覽器中輸入http://localhost/ ,如果顯示PHP的相關資訊的話,則表示Apache已支援PHP。

三、安裝mysql-5.0.41

1、執行安裝程式,選擇“Custom”方式,將MySQL的安裝路徑改為D:\dev\MySQL,然後一路“Next”。

2、安裝完成後出現提示“Configure the MySQL Server now”,將其勾選後按“finish”。

3、在啟動的MySQL配置嚮導中,選擇“Detailed Configuration”配置方式,按“Next”繼續。

4、選擇伺服器型別,“Developer Machine(開發測試型別,MySQL佔用很少資源)”、“Server Machine(伺服器型別,MySQL佔用較多資源)”、“Dedicated MySQL Server Machine(專門的資料庫伺服器,MySQL佔用所有可用資源)”,根據自己的需要進行選擇。筆者主要是為了測試程式,這裡選“Developer Machine”,按“Next”繼續。

5、選擇MySQL資料庫的用途,“Multifunctional Database(通用多功能型)”、“Transactional Database Only(專注事務處理型)”、“Non-Transactional Database Only(非事務處理型)”,根據自己的用途進行選擇。筆者選擇“Multifunctional Database”,按“Next”繼續。

6、對InnoDB Tablespace進行配置,就是為InnoDB 資料庫檔案選擇儲存空間。筆者此處使用預設位置,按“Next”繼續。

7、對MySQL大概的連線數進行配置,“Decision Support(DSS)/OLAP(20個左右)”、“Online Transaction Processing(OLTP)(500個左右)”、“Manual Setting(手動設定個數)”。筆者此處選擇“Decision Support(DSS)/OLAP”,僅為除錯程式之用,按“Next”繼續。

8、勾選啟用TCP/IP連線,預設埠3306,按“Next”繼續。

9、對MySQL資料庫預設編碼進行設定,第一是西文編碼,第二是UTF8編碼,第三個是手工配置。筆者選第三個,並在Character Set處選擇“gbk”,按 “Next”繼續。

10、將MySQL設定為Windows服務,指定Service Name(服務標識名稱),並將MySQL的bin目錄加入到Windows PATH中(加入後將可在DOS視窗內直接使用bin目錄中的命令,而不再需要輸入完整地址)。筆者此處全部勾選,Service Name預設不變,按“Next”繼續。

11、設定root使用者密碼(預設為空),在“New root password”中填寫密碼(如果是重灌並且之前已經設定了密碼,此處更改密碼可能會出錯,請留空並將“Modify Security Settings”前面的勾去掉,安裝配置完成後另行修改密碼)。另外可勾選“Enable root access from remote machines(是否允許root使用者遠端登陸)”,而“Create An Anonymous Account(新建一個匿名使用者)”,一般不用勾選。設定完畢,按“Next”繼續。

12、確認設定無誤後。按“Execute”使設定生效。設定完畢,按“Finish”結束。

13、在D:\www中建立testconn.php檔案,內容如下:(**為root使用者密碼):
<?php
mysql_connect(“localhost”, “root”, “**”) or die(mysql_error());
echo “Connected to MySQL<br />”;
?>
在瀏覽器中輸入http://localhost/testconn.php,如果顯示Connected to MySQL,則表明與MySQL連線成功。

四、安裝phpMyAdmin-3.2.5

1、將phpMyAdmin壓縮包解壓在指定資料夾中,筆者將其解壓到D:\www\phpmyadmin,並將libraries目錄中的config.default.php複製到phpmyadmin目錄,重新命名為config.inc.php。

2、對config.inc.php檔案作如下修改:
(1)將 $cfg[‘Servers’][$i][‘auth_type’] = ‘config’; 改為:
$cfg[‘Servers’][$i][‘auth_type’]=’http’;
(2)將 $cfg[‘Servers’][$i][‘password’] = ” 改為:
$cfg[‘Servers’][$i][‘password’] = ‘**’(**為MySQL的密碼)

3、開啟Apache配置檔案httpd.conf,找到 # Alias /webpath /full/filesystem/path,在下面新增一下程式碼(具體路徑根據情況修改):
Alias /phpmyadmin “D:/www/phpmyadmin”
複製程式碼 程式碼如下:
<Directory “D:/www/phpmyadmin”>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

重啟Apache,在瀏覽器中開啟http://localhost/phpmyadmin。在出現的對話方塊中輸入管理員帳號(root)和對應密碼,如果順利登入並開啟phpMyAdmin介面,則表明已安裝完成。

五、安裝ZendOptimizer-3.3.3

ZendOptimizer的安裝較為簡單,只需按提示步驟選擇安裝路徑、勾選Apache2.x以及設定專案所在的根目錄即可。安裝完成後,在瀏覽器中輸入http://localhost/可以看到Zend 的資訊。

六、整合Apache與Resin並配置虛擬主機

筆者電腦在Resin中已存在兩個工程,假設其中一個名為tieba,另一個名為zhidao,現需再整合phpwind論壇系統,並實現分別可以用如下網址來訪問對應的系統:tieba.aaa.com、zhidao.aaa.com、bbs.aaa.com。

1、修改C:\WINDOWS\system32\drivers\etc目錄中的hosts檔案,在其中新增:
127.0.0.1 tieba.aaa.com
127.0.0.1 zhidao.aaa.com
127.0.0.1 bbs.aaa.com

2、進入Resin安裝目錄的win32子目錄,執行setup.exe。在“Resin Setup”視窗中勾選Apache核取方塊,並在後面的輸入框中填寫Apache的安裝目錄,按“OK”確認。
3、對Apache的配置檔案httpd.conf作如下修改:
(1)LoadModule caucho_module “D:/dev/resin-3.1.10/win32/apache-2.0/mod_caucho.dll”
將其修改為:
LoadModule caucho_module “D:/dev/resin-3.1.10/win32/apache-2.2/mod_caucho.dll”

(2)將#ServerName localhost:80前面的#號去掉。

(3)將<Directory ” D:/www “>修改為<Directory />。

(4)將Options Indexes FollowSymLinks中的Indexes去掉,不顯示目錄列表。

(5)將#Include conf/extra/httpd-vhosts.conf前面的#號去掉,開啟虛擬主機配置。

4、對D:\dev\Apache2.2\conf\extra中的httpd-vhosts.conf檔案作如下修改:
(1)將NameVirtualHost *:80改為NameVirtualHost localhost:80,如果正式啟用Internet服務可將localhost換成伺服器的IP地址。

(2)開始配置虛擬主機,一個域名對應一個<VirtualHost>:
複製程式碼 程式碼如下:
<VirtualHost bbs.aaa.com:80>
ServerName bbs.aaa.com
DocumentRoot D:/www/phpwind
</VirtualHost>

<VirtualHost tieba.aaa.com:80>
ServerName tieba.aaa.com
DocumentRoot D:/dev/resin-3.1.10/webapps/tieba
ResinConfigServer 127.0.0.1 6800
</VirtualHost>

<VirtualHost zhidao.aaa.com:80>
ServerName zhidao.aaa.com
DocumentRoot D:/dev/resin-3.1.10/webapps/zhidao
ResinConfigServer 127.0.0.1 6800
</VirtualHost>

5、對Resin的配置檔案resin.conf作如下修改:

(1)由於已不需要Resin直接提供WEB服務,可將<http address=”*” port=”8080″/>註釋掉,只需保證<server id=”” address=”127.0.0.1″ port=”6800″/>有效監聽本地埠即可。這裡需要注意的是,如果Apache與Resin不在同一臺伺服器上的話,此處的127.0.0.1以及上面提到的httpd-vhosts.conf檔案中127.0.0.1都應改成Resin所處伺服器的IP地址。

(2)如下所示配置Host:
複製程式碼 程式碼如下:
<host id=” tieba.aaa.com ” root-directory=”.”>
<web-app id=”/” root-directory=” D:/dev/resin-3.1.10/webapps/tieba “/>
<stderr-log path=’D:/dev/resin-3.1.10/logs/stderr.log’ rollover-period=’1W’/>
<stdout-log path=’D:/dev/resin-3.1.10/logs/stdout.log’ rollover-period=’1W’/>
</host>
<host id=” zhidao.aaa.com” root-directory=”.”>
<web-app id=”/” root-directory=” D:/dev/resin-3.1.10/webapps/zhidao”/>
<stderr-log path=’D:/dev/resin-3.1.10/logs/stderr.log’ rollover-period=’1W’/>
<stdout-log path=’D:/dev/resin-3.1.10/logs/stdout.log’ rollover-period=’1W’/>
</host>

重啟Apache與Resin,現在可以直接使用tieba.aaa.com、zhidao.aaa.com、bbs.aaa.com這三個域名來訪問對應的工程了。

七、利用Apache Rewrite規則實現URL偽靜態

在實現Apache與Resin的整合之後,由於Apache對帶html的URL優先進行攔截處理,就可能導致原有為優化網站URL而在Resin系統中進行的偽靜態設定失效,這時就需要通過Apache Rewrite規則進行重新設定。此處以tieba工程中的URL為例進行說明,操作步驟如下:

1、在httpd.conf中,找到#LoadModule rewrite_module modules/mod_rewrite.so,將前面的#去掉。

2、在httpd-vhosts.conf中,找到<VirtualHost tieba.aaa.com:80>,將其修改為:
複製程式碼 程式碼如下:
<VirtualHost tieba.aaa.com:80>
ServerName tieba.aaa.com
DocumentRoot D:/dev/resin-3.1.10/webapps/tieba
ResinConfigServer 127.0.0.1 6800
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/tie/(\d ).html$ /do/viewthread?id=$1 [L,PT]
</IfModule>
</VirtualHost>

這樣就可以實現將類似於http://tieba.aaa.com/do/viewthread?id=77的網址偽靜態為http://tieba.aaa.com/tie/77.html了。此處需注意的是,在規則後面必須寫[L,PT],不然會將/do/viewthread?id=$1視為目錄結構進行訪問,而不交由Resin進行解析執行。筆者被此處糾纏較長時間,後來者謹記。

好了,從上至下這樣一個流程走來,完成了在Windows中對Apache2、PHP5、MySQL5、phpMyAdmin、ZendOptimizer的安裝與配置,以及實現了Apache與Resin整合、虛擬主機配置和URL偽靜態的處理。接下來,筆者有空會來總結一下如何將Oracle中的資料快速便利的匯入到MySQL中,以及如何將已有的JSP網站與phpwind論壇整合實現同步登入與同步退出的功能。