Apache 編譯安裝(linux)

2021-10-13 18:18 更新

本文檔僅涵蓋在 Unix 和類 Unix 系統(tǒng)上編譯和安裝 Apache HTTP Server。有關(guān)在 Windows 上編譯和安裝的信息,請(qǐng)參閱在 Microsoft Windows 中使用 Apache HTTP Server為 Microsoft Windows 編譯 Apache。對(duì)于其他平臺(tái),請(qǐng)前往官網(wǎng)查看官網(wǎng)介紹

Apache httpd 使用libtool并autoconf 創(chuàng)建一個(gè)看起來(lái)像許多其他開源項(xiàng)目的構(gòu)建環(huán)境。

如果您要從一個(gè)次要版本升級(jí)到下一個(gè)(例如,2.4.8 到 2.4.9),請(qǐng)?zhí)缴?jí)部分。

快速入門

在 Fedora/CentOS/Red Hat Enterprise Linux 上安裝
sudo yum install httpd 
sudo systemctl enable httpd 
sudo systemctl start httpd
這些發(fā)行版的較新版本使用 dnf而不是yum. 有關(guān)特定于平臺(tái)的說(shuō)明,請(qǐng)參閱Fedora 項(xiàng)目的文檔。
在 Ubuntu/Debian 上安裝
sudo apt install apache2 
sudo service apache2 start
有關(guān)特定于平臺(tái)的說(shuō)明,請(qǐng)參閱Ubuntu 的文檔。
從源安裝
下載http://httpd.apache.org/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
測(cè)試PREFIX/bin/apachectl -k start

NN必須替換為當(dāng)前版本號(hào),并且PREFIX必須替換為服務(wù)器安裝所在的文件系統(tǒng)路徑。如果 未指定PREFIX,則默認(rèn)為 /usr/local/apache2。

下面更詳細(xì)地描述編譯安裝過(guò)程的每個(gè)部分,從編譯安裝Apache httpd的要求開始。

要求

構(gòu)建 Apache httpd 存在以下要求:

APR 和 APR-Util
確保您的系統(tǒng)上已經(jīng)安裝了 APR 和 APR-Util。如果您不這樣做,或者不想使用系統(tǒng)提供的版本,請(qǐng)從Apache APR下載 APR 和 APR-Util 的最新版本,將它們解壓到/httpd_source_tree_root/srclib/apr/httpd_source_tree_root/srclib/apr-util (確保目錄名稱沒(méi)有版本號(hào);例如,APR 發(fā)行版必須在 /httpd_source_tree_root/srclib/apr/) 下并使用 ./configure's--with-included-apr 選項(xiàng)。在某些平臺(tái)上,您可能必須安裝相應(yīng)的-dev軟件包才能允許 httpd 針對(duì)您安裝的 APR 和 APR-Util 副本進(jìn)行構(gòu)建。
Perl 兼容的正則表達(dá)式庫(kù) (PCRE)
這個(gè)庫(kù)是必需的,但不再與 httpd 捆綁在一起。從http://www.pcre.org下載源代碼,或安裝 Port 或 Package。如果您的構(gòu)建系統(tǒng)找不到 PCRE 構(gòu)建安裝的 pcre-config 腳本,請(qǐng)使用--with-pcre參數(shù)指向它。在某些平臺(tái)上,您可能必須安裝相應(yīng)的-dev 軟件包才能允許 httpd 針對(duì)您安裝的 PCRE 副本進(jìn)行構(gòu)建。
磁盤空間
確保您至少有 50 MB 的可用臨時(shí)可用磁盤空間。安裝后,服務(wù)器占用大約 10 MB 的磁盤空間。根據(jù)您選擇的配置選項(xiàng)、任何第三方模塊,當(dāng)然還有您在服務(wù)器上擁有的一個(gè)或多個(gè)網(wǎng)站的大小,實(shí)際的磁盤空間要求會(huì)有很大差異。
ANSI-C 編譯器和構(gòu)建系統(tǒng)
確保安裝了 ANSI-C 編譯器。如果您沒(méi)有 GCC,那么至少要確保您的供應(yīng)商的編譯器符合 ANSI。此外,您PATH必須包含基本的構(gòu)建工具,例如make.
準(zhǔn)確計(jì)時(shí)
HTTP 協(xié)議的元素表示為一天中的時(shí)間。因此,是時(shí)候研究在您的系統(tǒng)上設(shè)置一些時(shí)間同步工具了。通常 基于網(wǎng)絡(luò)時(shí)間協(xié)議 (NTP) 的程序ntpdatexntpd程序用于此目的。有關(guān) NTP 軟件和公共時(shí)間服務(wù)器的更多詳細(xì)信息,請(qǐng)參閱NTP 主頁(yè)。
Perl 5 [可選]
對(duì)于某些支持腳本,例如apxsdbmmanage(用 Perl 編寫的),需要 Perl 5 解釋器(版本 5.003 或更新版本就足夠了)。如果configure腳本未找到 Perl 5 解釋器 ,您將無(wú)法使用受影響的支持腳本。當(dāng)然,您仍然可以構(gòu)建和使用 Apache httpd。


下載

Apache HTTP Server 可以從Apache HTTP Server 下載站點(diǎn) 下載,其中列出了幾個(gè)鏡像。大多數(shù)在類 Unix 系統(tǒng)上使用 Apache 的用戶最好下載和編譯源版本。構(gòu)建過(guò)程(如下所述)很簡(jiǎn)單,它允許您自定義服務(wù)器以滿足您的需求。此外,二進(jìn)制版本通常不是最新的源版本。如果您確實(shí)下載了二進(jìn)制文件,請(qǐng)按照INSTALL.bindist發(fā)行版內(nèi)文件中的說(shuō)明進(jìn)行操作。

下載后,請(qǐng)務(wù)必確認(rèn)您擁有完整且未經(jīng)修改的 Apache HTTP Server 版本。這可以通過(guò)針對(duì) PGP 簽名測(cè)試下載的 tarball 來(lái)完成。下載頁(yè)面上提供了有關(guān)如何執(zhí)行此操作的詳細(xì)信息,并提供了描述PGP 使用的擴(kuò)展示例。

解壓縮

從 Apache HTTP Server tarball 中提取源代碼很簡(jiǎn)單,只需解壓縮,然后解壓:

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

這將在包含分發(fā)源代碼的當(dāng)前目錄下創(chuàng)建一個(gè)新目錄。在繼續(xù)編譯服務(wù)器之前,您應(yīng)該 使用cd進(jìn)入該目錄。

配置源樹

下一步是為您的特定平臺(tái)和個(gè)人需求配置 Apache 源代碼樹。這是使用configure包含在發(fā)行版根目錄中的腳本完成的。(開發(fā)者下載Apache源代碼樹的未發(fā)行的版本將需要有 autoconf和libtool安裝將需要運(yùn)行buildconf下一個(gè)步驟之前,這是沒(méi)有必要的官方版本。)

要使用所有默認(rèn)選項(xiàng)配置源樹,只需鍵入./configure. 要更改默認(rèn)選項(xiàng),configure接受各種變量和命令行選項(xiàng)。

最重要的選項(xiàng)是--prefix 稍后安裝 Apache的位置,因?yàn)楸仨毰渲?Apache 才能使該位置正常工作。使用附加配置選項(xiàng)可以對(duì)文件位置進(jìn)行更精細(xì)的控制。

此時(shí),您還可以通過(guò)啟用和禁用模塊來(lái)指定要包含在 Apache 中的功能。默認(rèn)情況下,Apache 附帶了廣泛的模塊。它們將被編譯為 可在運(yùn)行時(shí)加載或卸載的共享對(duì)象 (DSO)。您還可以選擇使用選項(xiàng)靜態(tài)編譯模塊 。--enable-module=static

使用該選項(xiàng)啟用其他模塊 ,其中 模塊是刪除字符串并將任何下劃線轉(zhuǎn)換為破折號(hào)的模塊的名稱 。同樣,您可以使用該選項(xiàng)禁用模塊 。使用這些選項(xiàng)時(shí)要小心,因?yàn)槿绻付ǖ哪K不存在,則無(wú)法警告您;它會(huì)簡(jiǎn)單地忽略該選項(xiàng)。--enable-modulemod_--disable-moduleconfigure

此外,有時(shí)需要為 configure腳本提供有關(guān)編譯器、庫(kù)或頭文件位置的額外信息。這是通過(guò)將環(huán)境變量或命令行選項(xiàng)傳遞給configure. 有關(guān)更多信息,請(qǐng)參閱 configure手冊(cè)頁(yè)。或者configure使用--help選項(xiàng)調(diào)用 。

為了簡(jiǎn)要了解您擁有的可能性,這里是一個(gè)典型示例,它/sw/pkg/apache使用特定的編譯器和標(biāo)志以及兩個(gè)附加模塊為安裝樹編譯 Apachemod_ldap和 mod_lua

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

當(dāng)configure運(yùn)行它需要幾分鐘的時(shí)間,用于測(cè)試稍后將用于編譯服務(wù)器系統(tǒng),并構(gòu)建Makefile文件對(duì)功能的可用性。

手冊(cè)頁(yè)configure上提供了所有不同選項(xiàng)的詳細(xì)信息configure。

編譯

現(xiàn)在,您只需運(yùn)行以下命令即可構(gòu)建構(gòu)成 Apache 包的各個(gè)部分:

?$ make?

請(qǐng)耐心等待,因?yàn)榛九渲眯枰獛追昼姷臅r(shí)間來(lái)編譯,而且時(shí)間會(huì)因您的硬件和啟用的模塊數(shù)量而有很大差異。

安裝

現(xiàn)在是時(shí)候通過(guò)運(yùn)行在配置的安裝PREFIX(見(jiàn)--prefix上面的選項(xiàng))下安裝包:

?$ make install?

此步驟通常需要 root 權(quán)限,因?yàn)?nbsp;PREFIX通常是具有受限寫入權(quán)限的目錄。

如果您正在升級(jí),安裝不會(huì)覆蓋您的配置文件或文檔。

定制

接下來(lái),您可以通過(guò)編輯自定義您的Apache HTTP服務(wù)器的配置文件下 PREFIX/conf/。

$ vi PREFIX/conf/httpd.conf

查看 Apache 手冊(cè) PREFIX/docs/manual/或查閱http://httpd.apache.org/docs/2.4/以獲得本手冊(cè)的最新版本和可用配置指令的完整參考。

測(cè)試

現(xiàn)在您可以通過(guò)運(yùn)行下面代碼來(lái)啟動(dòng)您的 Apache HTTP 服務(wù)器:

?$ PREFIX/bin/apachectl -k start?

然后您應(yīng)該能夠通過(guò) URL 請(qǐng)求您的第一個(gè)文檔http://localhost/。您看到的網(wǎng)頁(yè)位于?DocumentRoot?下,通常是?PREFIX/htdocs/?。然后通過(guò)運(yùn)行下面代碼可以停止服務(wù)器:

?$ PREFIX/bin/apachectl -k stop?

升級(jí)

升級(jí)的第一步是閱讀發(fā)布公告和CHANGES源代碼分發(fā)中的文件,以查找可能影響您站點(diǎn)的任何更改。在主要版本之間進(jìn)行更改時(shí)(例如,從 2.0 到 2.2 或從 2.2 到 2.4),編譯時(shí)和運(yùn)行時(shí)配置可能存在重大差異,需要手動(dòng)調(diào)整。所有模塊也需要升級(jí)以適應(yīng)模塊 API 的變化。

從一個(gè)次要版本升級(jí)到下一個(gè)(例如,從 2.2.55 到 2.2.57)更容易。該make install 過(guò)程不會(huì)覆蓋您現(xiàn)有的任何文檔、日志文件或配置文件。此外,開發(fā)人員會(huì)盡一切努力避免configure次要版本之間的選項(xiàng)、運(yùn)行時(shí)配置或模塊 API 的不兼容更改 。在大多數(shù)情況下,您應(yīng)該能夠使用相同的configure命令行、相同的配置文件,并且您的所有模塊都應(yīng)該繼續(xù)工作。

要跨次要版本進(jìn)行升級(jí),請(qǐng)首先config.nice在build已安裝服務(wù)器的目錄中或在舊安裝的源代碼樹的根目錄中查找該文件 。這將包含configure您用于配置源樹的確切 命令行。然后要從一個(gè)版本升級(jí)到下一個(gè)版本,您只需config.nice要將文件復(fù)制到新版本的源代碼樹中,對(duì)其進(jìn)行編輯以進(jìn)行所需的更改,然后運(yùn)行:

$ ./config.nice
$ make
$ make install
$ PREFIX/bin/apachectl -k graceful-stop
$ PREFIX/bin/apachectl -k start

在將其投入生產(chǎn)之前,您應(yīng)該始終在您的環(huán)境中測(cè)試任何新版本。例如,您可以通過(guò)使用--prefix不同的端口(通過(guò)調(diào)整Listen指令)在舊版本旁邊安裝和運(yùn)行新版本,以在進(jìn)行最終升級(jí)之前測(cè)試任何不兼容性。

您可以將其他參數(shù)傳遞給config.nice,這些參數(shù)將附加到您的原始configure 選項(xiàng)中:

?$ ./config.nice --prefix=/home/test/apache --with-port=90?

第三方包

大量第三方提供了他們自己的 Apache HTTP Server 打包發(fā)行版,用于安裝在特定平臺(tái)上。這包括各種 Linux 發(fā)行版、各種第三方 Windows 軟件包、Mac OS X、Solaris 等等。

我們的軟件許可證不僅允許而且鼓勵(lì)這種再分發(fā)。但是,它確實(shí)會(huì)導(dǎo)致服務(wù)器安裝的配置布局和默認(rèn)值可能與文檔中所述的不同。雖然很不幸,但這種情況不太可能很快改變。

一個(gè)這些第三方分布的描述保持在HTTP服務(wù)器維基,并應(yīng)反映這些第三方發(fā)行的當(dāng)前狀態(tài)。但是,您需要熟悉特定平臺(tái)的包管理和安裝過(guò)程。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)