1. 程式人生 > >1.3.1 apache的配置(下)

1.3.1 apache的配置(下)

(1)httpd.conf的配置

    使用文字編輯工具(推薦使用Editplus、UltraEdit等工具),開啟httpd.conf。

 

    其中,行首為#的部分為註釋部分,不會被apache伺服器程式進行讀取和執行,沒有#部分為正式配置部分,會被伺服器讀取並執行。

    首先為上圖中的“Define SRVROOT "/Apache24"”,此處為伺服器的根目錄,應根據你的實際配置進行修改,前文所述,我們將apache的目錄apache24放置於C盤的根目錄下了,因此,此處應該為為“Define SRVROOT "C:/Apache24"”,如下圖

 

    (約67行),此行數根據apache具體版本不同,可能區別,但順序一致,下同)我們向下閱讀該配置檔案,,有一處

 

    這是配置apache的伺服器監聽埠,按照HTTP協議,預設埠就是80。因此,此處如無特殊需要,不需修改。注意:有關網路協議和埠相關知識,有興趣的讀者可以參考計算機網路相關書籍,這裡不做詳細介紹。

    (約190行左右)再向下閱讀此配置檔案,是有關載入哪些動態庫物件部分,此處先安裝預設即可。但是,在動態庫物件最後,我們要加入對php的支援,因為php解析器本身也是一個動態庫物件。

在最後一行“#LoadModule”的後面加入下面的程式碼:

 

# php7 support

LoadModule php7_module "D:/php7/php7apache2_4.dll"

AddType application/x-httpd-php .php .html .htm

 

# configure the path to php.ini

PHPIniDir "D:/php7"

 

 

    這裡,我們使用的是php7.4.15(下載地址:https://windows.php.net/download#php-7.4-nts-vc15-x64),該php庫與apache伺服器所依賴的執行庫均為VC15(VS2017),不必重複安裝執行庫。截至目前,php的最高版本為8.0,依賴執行庫為VS2017/2019,讀者們也可以下載使用,配置方法與此相同,這裡的庫檔案和ini路徑按照php實際存放路徑仿照上述填寫即可。

    有關php7配置、特性細節,我們下一個小節進行描述。

    (約223行左右)再向下看該配置檔案,配置管理員郵箱,apache伺服器遇到錯誤時,會向用戶顯示錯誤頁面,上面會有管理員的郵箱地址,這個地方改為你的郵箱,有助於使用者將錯誤資訊及時通過郵件發給你(當然不改也可以,不影響使用)。

 

(約232行左右)向下看配置檔案,此處需要配置伺服器名和埠,伺服器名是伺服器識別自身的一個屬性,需要根據實際情況進行配置,如果你前面已經申請了域名,你可以使用域名+埠的形式進行配置,如果沒有域名,需要使用IP地址+埠的形式配置。

 

    (約240行左右)此處開始配置網站目錄,首先,這裡給出了一個全部許可權禁止訪問的目錄配置,而且說明了,你需要在其他目錄明確的寫出該目錄可被訪問的許可權。這是一個安全配置,即先禁用全部,然後按照需要逐個放開許可權,此處無需修改。

 

    (約256行)此處為網站根目錄及其訪問許可權配置,按下圖配置即可。

 

   如果還有其他目錄,比如虛擬主機中另外埠對應其他目錄,對那個目錄也需要按上述方法配置許可權。(不配置許可權也可以在虛擬主機中使用,但可能由於許可權太大,導致不可預料的安全問題。)有關此處配置的詳細詳細,讀者可以參考apache相應文件,此處不再贅述。

    (約289行)此處是配置apache伺服器預設執行檔案,即如果使用者直接通過瀏覽器輸入一個路徑,而不指定具體的訪問檔案,apache應該解析該路徑下的哪個檔案呢?

 

    下面兩個配置是客戶端無法顯示*.ht*檔案以及錯誤日誌輸入路徑,按其配置即可(此處注意,如果在虛擬主機配置中配置了錯誤日誌輸出檔案,則此處對虛擬主機無效,按虛擬主機配置執行)。

    (約482行之前)這部分配置主要是錯誤級別配置、外部路徑訪問許可權配置、壓縮檔案的支援、錯誤頁面的自定義等,這些保持預設配置即可,並不影響本文所討論的應用。

    (約482行)從這裡開始,為apache伺服器增強能力配置,配置這部分內容,需要配合conf/extra/目錄中其他檔案配置。我們在此處需要為配置兩個重要的能力:虛擬主機能力和SSL安全連結能力。(此處不做配置,apache伺服器執行http協議已經沒有問題了)。

    虛擬主機主要是解決一個apache伺服器執行多個網站的問題,這些網站(即多個網站空間路徑)可以使用不同埠、不同地址、不同的域名,我們這裡使用的不同的埠。

    (約509行)虛擬主機需要增強能力httpd-vhosts的支援,如下圖,將httpd-vhosts開啟。

 

    虛擬主機檔案conf/extra/httpd-vhosts.conf檔案的配置本文下面再做詳細介紹。

    (約525行)這裡是這部分要詳細介紹的SSL安全連結增強能力的支援。在微信服務號開發中,尤其是自定義選單的連結,很多時候是需要安全連結的(也就是https連結),因此,這部分是必須要配置的。

 

    請在此處加入下列配置程式碼,完成SSL能力配置,關於conf/extra/httpd-ssl.conf有關設定細節,在本文後面會有詳細描述。

<IfModule ssl_module>

Include conf/extra/httpd-ssl.conf

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

</IfModule>

<IfModule http2_module>

    ProtocolsHonorOrder On

    Protocols h2 h2c http/1.1

</IfModule>

<IfModule mod_headers.c>

    Header set Access-Control-Allow-Origin: "*"

    Header set Access-Control-Allow-Methods: "GET,POST,PUT,DELETE,OPTIONS"

    Header set Access-Control-Allow-Headers: "Content-Type"

</IfModule>

 

    該檔案最後是關於Fast-CGI的配置,按照預設配置即可,至此,httpd.conf檔案講解和配置完成!

    小結:本章詳細描述了httpd.conf檔案的組成和配置過程,之所以描述的如此詳細,就是因為這個檔案太重要了,它是apache伺服器最重要的配置檔案,沒有之一!很多apache伺服器出現問題,甚至安全問題,都與該檔案配置問題相關。本書既然面向0基礎的讀者,有必要對這個檔案進行詳細描述,請讀者務必數量掌握該檔案的配置和重要屬性的意義,後期網站出現問題時,可能需要從此處著手排除問題。

 

(2)extra/httpd-vhosts.conf的配置

   

    extra/httpd-vhosts.conf是apache伺服器的增強配置,主要用於配置多個網站空間時,虛擬主機的配置方案。要使extra/httpd-vhosts.conf生效,在前文中提及的httpd.conf必須解除Include conf/extra/httpd-vhosts.conf註釋,使其生效。

    (如果讀者的網站至執行一個網站空間,則不必接觸Include conf/extra/httpd-vhosts.conf註釋,extra/httpd-vhosts.conf也無需配置也是可以的)

    這裡我們看一下extra/httpd-vhosts.conf檔案的具體內容。

 

    上圖中是一個實體伺服器上配置兩個虛擬主機的例子,按照埠(一個是80埠-預設,一個是5094埠-自定義)不同進行分別配置,在每一個虛擬主機中寫明各自的根目錄地址,其他資訊按照實際填寫即可。

 

(3)extra/httpd-ssl.conf的配置

 

    SSL作為安全連結傳輸協議,在微信服務號設定時,經常需要用到的。我們將網站配置成為SSL連結,有利於增強資料傳輸的安全性,這在敏感資料傳輸時尤為重要。

SSL也是apache伺服器增強功能之一,在extra/httpd-ssl.conf進行配置。配置前,需在httpd.conf中開啟Include conf/extra/httpd-ssl.conf。

    我們下面詳細介紹下extra/httpd-ssl.conf。

    (約37行)這裡是SSL連結預設的監聽埠,按照協議要求,預設是443埠,這裡無需修改。

 

 

    (約63行開始)這個配置檔案剩下部分是對SSL虛擬主機的配置,與上一個部分虛擬主機的配置相同,根目錄、主機名稱、錯誤日誌、執行日誌的路徑是需要配置的,如下

 

    (約74行)開啟SSL引擎。

 

    以上配置結束後,其餘預設配置即可,你的https網站就可以訪問了,但訪問時瀏覽器會出現下列提示:

 

    從英文的錯誤可以看出,是無效的授權證書錯誤,因此,我們必須還要配置正確的證書。

    證書的獲取,可以從騰訊雲控制檯來獲取,具體為“雲產品”中,“域名與網站”中選擇“SSL證書”。

 

    在“SSL證書”介面選擇切換到“我的證書”,選擇“申請免費證書”。

    下面是最重要的三個檔案路徑的配置,這

 

    彈出的介面中,選擇預設的“亞洲誠信”的免費證書即可,然後點選確定。

 

 

分步驟填寫必要的資訊。

 

 

 

    驗證成功後,在“我的證書”介面,可以檢視已申請完成的證書。

 

    點選已經申請完成的證書後面的“下載”將證書下載至本地。下載至本地的檔案是一個以網站域名命名的zip壓縮檔案,將該檔案解壓後得到1個文字檔案和4個資料夾,我們用的是apache伺服器,所以我們要使用apache資料夾下的3個證書相關檔案進行部署。

 

 

 

將這3個檔案放置於伺服器中的某個檔案路徑下,如放置於“C:/MyPHPSite/conf-on1BsW6mX0d/”路徑(路徑名由讀者自定義,在配置檔案下一致即可)下,

 

 

    則

    (約94行)將SSL證書檔案的路徑寫成

    (約104行)將SSL金鑰檔案的路徑寫成

 

    (約116行)將CA認證檔案的路徑寫成

 

最後,對網站路徑訪問許可權進行配置

(約182行)

 

    此處配置與前述httpd.conf中相應配置相同,請參考本文上述內容。

    該配置檔案其餘部分,從其預設配置即可,至此,檔案配置完成。

 

    上述檔案配置完成後,在伺服器端瀏覽器中,輸入http://127.0.0.1或 https://127.0.0.1 可以訪問C:\MyPHPSite\ 下的網頁index.php。

 

    本章小結:請熟練掌握apache的配置檔案和配置方法,尤其是根目錄、訪問許可權、虛擬主機、安全連結等的定義和配置技巧,從某種程度上來講,這並不比編寫程式要簡單。我們不但要會使用工具,我們也要熟悉我們的工具,常見的工具問題,我們應能及時排除,這就是我們花很大篇幅來介紹apache相關配置的意義所