2013年3月17日 星期日

在 windows 上面同時安裝多個 Apache


環境:windows server2003 + XAMPP1.7.7 (使用80port)

目的:另外安裝 apache2.2.22 使用其他 port (例:8080 port)

解決方式:
  1. 下載 apache2.2.22 http://httpd.apache.org/download.cgi,假設使用預設值,安裝成 on Port 80,as a Service,安裝後,應該無法正常啟動,因為 80 port 被 XAMPP 的 apache佔用了。
  2. 修改新安裝的 apache 設定檔,httpd.conf 裡面的 Listen 80,改為 Listen 8080,重新啟動 Apache
  3. 此時發生了 XAMPP Control Panel 一直將新安裝的 Apache2.2.22 當成 XAMPP 原本的Apache,所以XAMPP的啟動停止都變成控制新裝的 Apache。
    根據測試,XAMPP 應該是判斷系統服務的 KeyName,因為 XAMPP 的 Apache 若裝成系統服務,KeyName 也是 "Apache2.2",剛好跟新裝的 Apache 系統服務名稱一樣。所以產生此誤判。
  4. 修改新安裝的Apache系統服務名稱。
    參考 http://httpd.apache.org/docs/2.2/platform/windows.html 的 "Running Apache as a Service" 說明,
    先將新裝的 Apache 設定為不是系統服務
    d:\Apache\bin\httpd.exe -k uninstall -n "Apache2.2"
    再重新用另一名稱 Apache2.2My,將新裝的 Apache 設定為系統服務
    d:\Apache\bin\httpd.exe -k install -n "Apache2.2My" -f "d:\Apache\conf\httpd.conf"
    (註:以此方法設定後,以後移除新裝的 apache 時,Apache2.2My這個手動安裝的服務不會自動移除,須要另外手動移除)
  5. 修改後,XAMPP Control Panel 便依然可控制自己附帶的 Apache 啟動或停止。
    Apache 附帶的 "Apache Service Monitor" 則會出現目前有安裝程系統服務的Apache,若 XAMPP 的 Apache 亦有選擇為系統服務,則會在 "Apache Service Monitor" 看到兩個 Apache 服務。

1 則留言: