本文檔僅涵蓋在 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í)部分。
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)目的文檔。
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 |
配置 | $ ./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 存在以下要求:
/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)建。--with-pcre
參數(shù)指向它。在某些平臺(tái)上,您可能必須安裝相應(yīng)的-dev
軟件包才能允許 httpd 針對(duì)您安裝的 PCRE 副本進(jìn)行構(gòu)建。PATH
必須包含基本的構(gòu)建工具,例如make
.ntpdate
或xntpd
程序用于此目的。有關(guān) NTP 軟件和公共時(shí)間服務(wù)器的更多詳細(xì)信息,請(qǐng)參閱NTP 主頁(yè)。apxs
或dbmmanage
(用 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è)的最新版本和可用配置指令的完整參考。
現(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í)的第一步是閱讀發(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ò)程。
更多建議: