1. 程式人生 > >window 2008 r2 搭建apache伺服器詳解

window 2008 r2 搭建apache伺服器詳解

1、進入apache官網,點右側選單中的download,進入下載頁面。


2、點選最新的穩定釋出版本最下方的windows版本連線。


3、進入下載頁面後,根據頁面的介紹知道:Apache本身不提供該專案(Apache本身就是用Java語言實現的一個專案)的完整編譯版安裝包,僅提供原始碼。有一些貢獻者提供了一個便捷的二進位制安裝包,但這並不是真正的可交付執行版本。如果你確實無法自行編譯Apache HTTP 伺服器專案,那麼你也可以從網際網路上巨量的二進位制釋出版本找一個(來進行安裝)。目前在windows上部署Apache httpd服務或者也可能同時包含PHP和MYSQL的比較流行的安裝版本有:ApacheHaus、Apache Lounge、BitNami WAMP Stack、XAMPP等。

4、找一個你感興趣的安裝包連結進行點選。因為我只需要安裝Apache伺服器,不希望附帶其它的內容,因此選擇:ApacheHaus。新頁面中給了一些相關說明,然後給出了一堆下載連結。


5、那麼我們該下載哪一個呢?分析一下哈:首先分成Apache、Apache Modules、OpenSSL Updates以及Redistributable。然後這每一種又分成了VC14和VC11兩個版本。其中Apache代表的是完整的Apache部署包、Apache Modules是一些備選的功能模組,OpenSSL Updates是OpenSSL協議的更新和最後一個是VS C++的需要的執行時庫檔案。然後V14和V11分別對應不同的作業系統版本:VC9是合適xp與2003系統的,VC11是合適Win7與

win8系統的,VC14是合適win10系統的。版本可降低,但不可升高。我的是Win2008,所以用不了V14 ,因此選擇V11。點選後注意根據作業系統的位數選擇對應的包,我選的x64的,因為我是64位作業系統。


6、點選Download下載後解壓到你想放置的位置(注意:目錄中最好不要包含中文)。然後windows-》開始-》執行-》輸入cmd回車-》開啟的命令列中進入解壓後目錄的bin資料夾,執行httpd -k install.


7、從截圖中可以看出來Apache安裝已經成功了(is successfully installed),但是安裝完後遇到了錯誤,導致服務啟動有問題,啟動不了(Errors reported here must be conrrected before the service can be started)。具體的錯誤發生在httpd.conf檔案的第39行(Syntax error on line 39 of E:/test/Apache24/conf/httpd.conf:ServerRoot must be valid directory)。那就開啟檔案看看到底是什麼錯誤吧。


可以看到第39行引用了第38行定義的一個變數SRVROOT,這個變數的值是"/Apache24"。這個代表的是某個系統盤下的Apache24目錄,很遺憾我的目錄並不是直接在磁碟根目錄下的(為了給大家看到這個錯誤,我故意的,嘿嘿),而是在test目錄下,那麼要怎麼改呢?很簡單,兩種方式:1、寫成絕對路徑,比如我的是 E:\test\Apache24 2、寫除去磁碟名之外的相對路徑,那麼我這裡就是 /test/Apache24。我用的是第二種方式。


儲存後,cmd視窗中bin目錄下輸入 httpd -k start嘗試啟動服務試試,正常情況下,到這裡基本就可以啟動成功了。但是很遺憾,我啟動又失敗了,報錯是:


啥意思???很明顯,因為443埠被佔用導致無法啟動。那麼問題來了,Apache跟443埠有什麼關係?難道監聽的是443埠,預設不是80埠麼?咱們安裝之後也沒有修改監聽埠啊,怎麼會用到443埠呢?原來443埠是Apache使用的SSL擴充套件需要用的埠。要解決這個問題,又是兩種思路:1、kill掉佔用443埠的程序,並且讓那個程序的服務不要自動啟動以免後患

2、修改SSL擴充套件的監聽埠,換成另外一個不常用的埠。下面我們先來試試第一種:

1)cmd中用netstat -ano命令找到佔用443埠的程序PID

2)開啟windows工作管理員,根據PID找到對應的程序,進行結束


3)、根據工作管理員中程序的描述發現是VMWare軟體的相關服務造成的,進入window服務管理,將相關的服務啟動變成手動的


4)、cmd進入Apache的bin目錄,輸入httpd -k start,恩,沒有訊息就是最好的訊息。沒有報錯,好了,成功了。


好,下面來試試第二種方式,先把VMWare相關服務起來,恢復環境麼。然後httpd -k stop停止Apache服務,因為一會要啟動檢視結果啊。用netstat -ano命令確定443埠被佔用。(經確認是VMWare WorkStation Server這個服務用的443埠^-^,實際啟動這一個服務就ok了)


接下來修改SSL服務監聽的埠,從443變成其它的。首先開啟百度裡很多人都說的“openssl.cnf”檔案,查詢“443”.word天哪,什麼情況,根本沒有443好嗎。怎麼辦??繼續,最後在/conf/extra資料夾下找到了2個有443埠的檔案:httpd-ahssl.conf和httpd-ssl.conf檔案。那麼兩個都要改麼?nonono,經實測,只需要修改httpd-ahssl.conf,將所有的443埠統一變成另外一個不常用的埠就ok了。

實際上還有另外一種方式可以解決這個問題,但是思路跟前面兩種方式方向完全不一樣。大家想想,是什麼???

對了,就是禁用Apache的OpenSSL模組。具體做法就是將httpd.conf檔案中的載入OpenSSL模組這句給註釋掉。如下圖:


這種方式相當簡單粗暴,但是不提倡!不提倡!不提倡!

當然Apache安裝過程中還有可能遇到80埠被佔用而無法啟動服務的情況,解決方式也是兩種:1、修改httpd.conf檔案的Listen 80後的80改為其它未被佔用的埠 2、讓別的程序釋放80埠,具體不再操作,大家可以自行嘗試。