Apache HTTP Server 2.4 版
此文件僅說明在類 Unix 系統上編譯與安裝 Apache HTTP 伺服器。在 Windows 上編譯與安裝,請參閱 將 Apache HTTP 伺服器與 Microsoft Windows 搭配使用 和 為 Microsoft Windows 編譯 Apache。在其他平台上,請參閱 平台 文件。
Apache httpd 使用 libtool
和 autoconf
來建立一個編譯環境,看起來像許多其他的開放原始碼專案。
如果您要將較低版本升級為較高版本(例如,2.4.8 升級到 2.4.9),請跳到 升級 區段。
sudo yum install httpd sudo systemctl enable httpd sudo systemctl start httpd
sudo apt install apache2 sudo service apache2 start
下載 | 從 https://apache-httpd.dev.org.tw/download.cgi 下載最新版本 |
解壓縮 | $ gzip -d httpd-NN.tar.gz |
配置 | $ ./configure --prefix=PREFIX
|
編譯 | $ make |
安裝 | $ make install |
自訂 | $ vi PREFIX/conf/httpd.conf |
測試 | $ PREFIX/bin/apachectl -k start
|
NN 必須以目前的版本號取代,PREFIX 必須以安裝伺服器應設定的文件系統路徑取代。若未指定 PREFIX,會預設為 /usr/local/apache2
。
編譯和安裝程序的每個區段會在下文以更詳細說明,從編譯和安裝 Apache httpd 的需求開始。
以下為建置 Apache httpd 的需求
/httpd_source_tree_root/srclib/apr
和 /httpd_source_tree_root/srclib/apr-util
(請確認目錄名稱沒有版本號,例如 APR 的發行版本必須在 /httpd_source_tree_root/srclib/apr/ 下),並使用 ./configure
的 --with-included-apr
選項。在某些平台上,您可能必須安裝對應的 -dev
套件,才能讓 httpd 建置成與安裝中 APR 和 APR-Util 的副本相符。--with-pcre
參數指出其路徑。在某些平台上,您可能必須安裝對應的 -dev
套件,才能讓 httpd 建置成與安裝中 PCRE 的副本相符。PATH
必須包含基本建置工具,例如 make
。ntpdate
或 xntpd
程式進行此目的,它們基於網路時間通訊協定 (NTP)。請參閱 NTP 主頁 以取得更多有關 NTP 軟體和公共時間伺服器的詳細資訊。apxs
或 dbmmanage
(它們是用 Perl 編寫的),需要 Perl 5 執行環境 (5.003 或更新的版本)。如果 configure
指令碼找不到 Perl 5 執行環境,你將無法使用受影響的支援指令碼。當然,你仍然可以建置並使用 Apache httpd。可以從 Apache HTTP Server 下載網站 下載 Apache HTTP Server,該網站列出多個鏡像。大多數 Unix 類系統上的 Apache 使用者最好下載並編譯原始程式碼版本。建置程序 (如下所述) 很容易,而且你可以依需求自訂你的伺服器。此外,二進位版本通常不會更新到最新的原始程式碼版本。如果你確實下載二進位檔案,請按照發行版中的 `INSTALL.bindist` 檔案中的說明進行操作。
在下載後,重要的是驗證你擁有完整且未修改版本的 Apache HTTP Server。這可以透過測試已下載的 tarball 與 PGP 簽章來達成。如何進行此項測試的詳細資訊可以在 下載頁面 上找到,而 PGP 使用說明 提供了一個延伸範例。
從 Apache HTTP Server tarball 中抽取原始程式碼的步驟很簡單,只需先解壓縮,然後解開 tarball
$ gzip -d httpd-NN.tar.gz
$ tar xvf httpd-NN.tar
這將在目前的目錄下建立一個新目錄,其中包含發行的原始程式碼。在你繼續編譯伺服器之前,你應該使用 `cd` 進入該目錄。
下一步是針對你的特定平台和個人需求設定 Apache 原始程式碼樹。此步驟是透過在發行版的根目錄中附帶的 configure
指令碼來進行。(下載未發布版本的 Apache 原始程式碼樹的開發人員需要安裝 `autoconf` 和 `libtool`,並在繼續執行後續步驟之前執行 `buildconf`。官方版本不需要執行此步驟。)
若要使用所有預設選項設定原始程式碼樹,只要輸入 `./configure`。若要變更預設選項,configure
允許多個變數和命令列選項。
最重要的選項是 --prefix,後面為 Apache 之後要安裝的位置,因為 Apache 必須針對此位置進行設定才能正確運作。可以透過其他 組態選項,更精細地控制檔案的位置。
另外在此時,您可以透過啟用和停用模組來指定您要包括在 Apache 中的功能。 Apache 隨附預設包含的各種類模組。它們會編譯為共用物件 (DSO),可以在執行階段載入或卸載。您也可以使用選項 --enable-module=static
來選擇將模組靜態編譯。
使用 --enable-module
選項啟用其他模組,其中 module 是模組名稱,已移除字串 mod_
,且任何底線均轉換為破折號。同樣地,您可以使用 --disable-module
選項停用模組。使用這些選項時請小心,因為configure
無法警告您指定的模組不存在;它只會忽略選項。
此外,有時需要使用configure
指令碼,提供有關您的編譯器、函式庫或標頭檔案位置的額外資訊。這是透過將環境變數或命令列選項傳遞給 configure
來完成的。欲取得更多資訊,請參閱 configure
手冊頁面。或者使用 --help
選項呼叫 configure
。
以下是編譯安裝樹 /sw/pkg/apache
的 Apache,並使用特定編譯器和旗標以及兩個其他模組 mod_ldap
和 mod_lua
的範例,可讓您快速了解有哪些可能的操作:
$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-ldap=shared \
--enable-lua=shared
當執行 configure
時,它會花費數分鐘來測試系統中功能的可用性並建置稍後會用來編譯伺服器的 Makefiles。
現在是透過執行下列動作在已組態的安裝PREFIX (請參閱上方的 --prefix
選項) 中安裝套件的時候了
$ make install
此步驟通常需要 root 權限,因為 PREFIX 通常是寫入權限受限的目錄。
如果您正在升級,安裝不會覆寫您的組態檔或文件。
接下來,您可以透過編輯 PREFIX/conf/
中的組態檔來自訂您的 Apache HTTP 伺服器。
$ vi PREFIX/conf/httpd.conf
您可以在 PREFIX/docs/manual/
下看到 Apache 手冊或是查閱 https://apache-httpd.dev.org.tw/docs/2.4/ 取得此手冊的最新版本以及可用的所有 組態指令 的完整參考資料。
現在您可以透過立即執行下列指令來 啟動 Apache HTTP 伺服器
$ PREFIX/bin/apachectl -k start
然後您應該可以透過 URL https://127.0.0.1/
來要求您的第一份文件。您所看到的網頁位於 DocumentRoot
之下,一般通常會是 PREFIX/htdocs/
。然後再透過執行下列指令來 停止 伺服器
$ PREFIX/bin/apachectl -k stop
升級的第一步驟是閱讀版本公告和原始碼散佈中的檔案 CHANGES
,找出可能會影響您的網站的任何變更。當在主要版本之間變更時(例如,從 2.0 變更為 2.2 或從 2.2 變更為 2.4),編譯時間和執行時間的組態可能會出現重大的差異,這將需要手動調整。所有模組也需要升級才足以應付模組 API 中的變更。
從一個次要版本升級到下一個次要版本(例如,從 2.2.55 升級到 2.2.57)會比較容易。make install
程序不會覆寫您現有的任何文件、記錄檔或組態檔。此外,開發人員也會盡一切努力避免在次要版本之間的 configure
選項、執行時間組態或模組 API 中出現不相容的變更。在大多數情況下,您應該能夠使用完全相同的 configure
命令列、完全相同的組態檔,且所有模組都應該能夠繼續執行。
若要跨次要版本進行升級,請從您的已安裝伺服器的 build
目錄或舊版安裝的原始碼樹根目錄中尋找檔案 config.nice
。其中會包含您用來組態原始碼樹的精確 configure
命令列。然後若要從一個版本升級到下一個版本,您只需要將 config.nice
檔案複製到新版本的原始碼樹中,編輯檔案以進行任何想要的變更,然後執行
$ ./config.nice
$ make
$ make install
$ PREFIX/bin/apachectl -k graceful-stop
$ PREFIX/bin/apachectl -k start
--prefix
和不同的埠(藉由調整 Listen
指令)在舊版旁邊安裝並執行新版本,以在進行最終升級之前測試任何不相容性。您可以傳遞其他參數到 config.nice
,這些參數會附加到您原本的 configure
選項
$ ./config.nice --prefix=/home/test/apache --with-port=90
許多第三方提供關於 Apache HTTP 伺服器已封裝的發行版,可安裝於特定平台。這包括不同種類的 Linux 發行版、各種第三方 Windows 套件包、Mac OS X、Solaris,以及許多等等。
我們的軟體授權不僅允許也鼓勵這種種類的重新配發。然而,這會導致一種情況,伺服器安裝中的組態配置與預設值可能會與文件中所述內容不同。雖然不幸,但這種情況在短時間內不太可能改變。
在 HTTP 伺服器 wiki 中維護著〈這些第三方發行版的說明〉,並且應該反映這些第三方發行版的現況。不過,您需要熟悉特定平台的套件管理和安裝程序。