<-
Apache > HTTP 伺服器 > 說明文件 > 2.4 版

編譯和安裝

此文件僅說明在類 Unix 系統上編譯與安裝 Apache HTTP 伺服器。在 Windows 上編譯與安裝,請參閱 將 Apache HTTP 伺服器與 Microsoft Windows 搭配使用為 Microsoft Windows 編譯 Apache。在其他平台上,請參閱 平台 文件。

Apache httpd 使用 libtoolautoconf 來建立一個編譯環境,看起來像許多其他的開放原始碼專案。

如果您要將較低版本升級為較高版本(例如,2.4.8 升級到 2.4.9),請跳到 升級 區段。

Support Apache!

相關

top

不耐煩的讀者請看概述

安裝在 Fedora/CentOS/Red Hat Enterprise Linux
sudo yum install httpd
sudo systemctl enable httpd
sudo systemctl start httpd
這些版本的較新版本使用 dnf 代替 yum。請參閱 Fedora 專案文件 以取得特定於平台的注意事項。
安裝在 Ubuntu/Debian
sudo apt install apache2
sudo service apache2 start
請參閱 Ubuntu 的文件 以取得特定於平台的注意事項。
從原始碼安裝
下載 https://apache-httpd.dev.org.tw/download.cgi 下載最新版本
解壓縮 $ gzip -d httpd-NN.tar.gz
$ tar xvf httpd-NN.tar
$ cd httpd-NN
配置 $ ./configure --prefix=PREFIX
編譯 $ make
安裝 $ make install
自訂 $ vi PREFIX/conf/httpd.conf
測試 $ PREFIX/bin/apachectl -k start

NN 必須以目前的版本號取代,PREFIX 必須以安裝伺服器應設定的文件系統路徑取代。若未指定 PREFIX,會預設為 /usr/local/apache2

編譯和安裝程序的每個區段會在下文以更詳細說明,從編譯和安裝 Apache httpd 的需求開始。

未在此處看到您最喜歡的平台?來協助我們改善這份文件。
top

需求

以下為建置 Apache httpd 的需求

APR 和 APR-Util
請確認您的系統上已安裝 APR 和 APR-Util。若尚未安裝,或是偏好不要使用系統提供的版本,請從 Apache APR 下載 APR 和 APR-Util 的最新版本,並解壓縮至 /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 的副本相符。
Perl 相容的正規表示式函式庫 (PCRE)
此函式庫為必要,但不與 httpd 搭配使用。從 http://www.pcre.org 下載原始碼,或安裝 Port 或套件。若您的建置系統無法找到 PCRE 建置安裝的 pcre-config 腳本,請使用 --with-pcre 參數指出其路徑。在某些平台上,您可能必須安裝對應的 -dev 套件,才能讓 httpd 建置成與安裝中 PCRE 的副本相符。
磁碟空間
請確認至少有 50 MB 的暫時可使用磁碟空間。安裝過後,伺服器會佔用約 10 MB 的磁碟空間。實際的磁碟空間需求會根據您選擇的設定選項、任何協力廠商模組,以及您伺服器上的網站或網站大小而有顯著的不同。
ANSI-C 編譯器和建置系統
請確認您已安裝 ANSI-C 編譯器。建議使用 GNU C 編譯器 (GCC)自由軟體基金會 (FSF) 下載。若您沒有 GCC,至少請確認您的供應商編譯器與 ANSI 相符。此外,您的 PATH 必須包含基本建置工具,例如 make
準確的時間維護
HTTP 協定的元素會表達為一天中的時間。因此,請著手研究您的系統設定中的一些時間同步功能。通常會使用 ntpdatexntpd 程式進行此目的,它們基於網路時間通訊協定 (NTP)。請參閱 NTP 主頁 以取得更多有關 NTP 軟體和公共時間伺服器的詳細資訊。
Perl 5 [選擇性]
對於某些支援指令碼,像是 apxsdbmmanage (它們是用 Perl 編寫的),需要 Perl 5 執行環境 (5.003 或更新的版本)。如果 configure 指令碼找不到 Perl 5 執行環境,你將無法使用受影響的支援指令碼。當然,你仍然可以建置並使用 Apache httpd。
top

下載

可以從 Apache HTTP Server 下載網站 下載 Apache HTTP Server,該網站列出多個鏡像。大多數 Unix 類系統上的 Apache 使用者最好下載並編譯原始程式碼版本。建置程序 (如下所述) 很容易,而且你可以依需求自訂你的伺服器。此外,二進位版本通常不會更新到最新的原始程式碼版本。如果你確實下載二進位檔案,請按照發行版中的 `INSTALL.bindist` 檔案中的說明進行操作。

在下載後,重要的是驗證你擁有完整且未修改版本的 Apache HTTP Server。這可以透過測試已下載的 tarball 與 PGP 簽章來達成。如何進行此項測試的詳細資訊可以在 下載頁面 上找到,而 PGP 使用說明 提供了一個延伸範例。

top

解壓縮

從 Apache HTTP Server tarball 中抽取原始程式碼的步驟很簡單,只需先解壓縮,然後解開 tarball

$ gzip -d httpd-NN.tar.gz
$ tar xvf httpd-NN.tar

這將在目前的目錄下建立一個新目錄,其中包含發行的原始程式碼。在你繼續編譯伺服器之前,你應該使用 `cd` 進入該目錄。

top

設定原始程式碼樹

下一步是針對你的特定平台和個人需求設定 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_ldapmod_lua 的範例,可讓您快速了解有哪些可能的操作:

$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-ldap=shared \
--enable-lua=shared

當執行 configure 時,它會花費數分鐘來測試系統中功能的可用性並建置稍後會用來編譯伺服器的 Makefiles。

所有不同的 configure 選項的詳細資料都可以在 configure 手冊頁面取得。

top

建置

現在您可以透過僅執行下列命令,建置構成 Apache 套件的不同部分

$ make

請在此處耐心等待,因為基本組態需要數分鐘才能編譯,而且時間將視您的硬體和已啟用模組的數量而大不相同。

top

安裝

現在是透過執行下列動作在已組態的安裝PREFIX (請參閱上方的 --prefix 選項) 中安裝套件的時候了

$ make install

此步驟通常需要 root 權限,因為 PREFIX 通常是寫入權限受限的目錄。

如果您正在升級,安裝不會覆寫您的組態檔或文件。

top

自訂

接下來,您可以透過編輯 PREFIX/conf/ 中的組態檔來自訂您的 Apache HTTP 伺服器。

$ vi PREFIX/conf/httpd.conf

您可以在 PREFIX/docs/manual/ 下看到 Apache 手冊或是查閱 https://apache-httpd.dev.org.tw/docs/2.4/ 取得此手冊的最新版本以及可用的所有 組態指令 的完整參考資料。

top

測試

現在您可以透過立即執行下列指令來 啟動 Apache HTTP 伺服器

$ PREFIX/bin/apachectl -k start

然後您應該可以透過 URL https://127.0.0.1/ 來要求您的第一份文件。您所看到的網頁位於 DocumentRoot 之下,一般通常會是 PREFIX/htdocs/。然後再透過執行下列指令來 停止 伺服器

$ PREFIX/bin/apachectl -k stop

top

升級

升級的第一步驟是閱讀版本公告和原始碼散佈中的檔案 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

top

第三方套件

許多第三方提供關於 Apache HTTP 伺服器已封裝的發行版,可安裝於特定平台。這包括不同種類的 Linux 發行版、各種第三方 Windows 套件包、Mac OS X、Solaris,以及許多等等。

我們的軟體授權不僅允許也鼓勵這種種類的重新配發。然而,這會導致一種情況,伺服器安裝中的組態配置與預設值可能會與文件中所述內容不同。雖然不幸,但這種情況在短時間內不太可能改變。

HTTP 伺服器 wiki 中維護著〈這些第三方發行版的說明〉,並且應該反映這些第三方發行版的現況。不過,您需要熟悉特定平台的套件管理和安裝程序。

語言: de  |  en  |  es  |  fr  |  ja  |  ko  |  tr 

top

評論

注意事項
這不是個問答區。放在這裡的留言應針對建議改善文件或伺服器而提出,如果已執行或被認為無效/無關,可能會被我們的管理員移除。關於如何管理 Apache HTTP Server 的問題,應定向到我們的 IRC 頻道、在 Libera.chat 上的 #httpd,或傳送給我們的 郵件串列