Hi 你們好,我是鍾義林,今天安裝一個apache2.4.9,你能夠從httpd.apache.org直接下載。c++
下面我參考一下官方文檔,簡單翻譯了一下,見笑,我寫了個安裝筆記,那麼開始吧。正則表達式
編譯Apache httpd:
apache
要求服務器
APR和APR-使用率網絡
請確保您已APR和APR-使用率已經安裝在系統上。less
若是你不這樣作,或者寧願不使用系統提供的版本,從同時下載APR和APR-使用率的最新版本的Apache APR,ide
解開他們進入./ srclib /apr和./srclib/apr-util (是確保目錄名稱不具備版本號,例如,APR分配必須在./srclib/apr)並使用。工具
./configure's --with-included-apr 選項。在某些平臺上,可能須要安裝相應的-dev包,讓httpd的創建對你的安裝APR和APR-Util.佈局
Perl兼容的正則表達式庫(PCRE)測試
須要這個庫,但再也不捆綁的httpd。從下載的源代碼http://www.pcre.org, 或安裝一個端口或包裝。
若是你的編譯系統沒法找到使用的PCRE安裝了PCRE-config腳本創建,指向它的- with-pcre的參數。
在某些平臺上,可能須要安裝相應的-dev 包,容許httpd對你建立安裝PCRE副本。
磁盤空間
請確保您有可在至少50 MB 臨時可用磁盤空間。安裝後,服務器佔用大約10 MB的磁盤空間。
實際的磁盤空間要求不一樣,根據您選擇的配置選項,任何第三方模塊,而且,固然,該網站或網站,你必須在服務器上的大小。
ANSI-C 編譯器和構建系統
請確保您有裝有ANSI-C編譯器。在GNU C編譯器(GCC)的自由軟件基金會(FSF) 的建議。若是你沒有GCC,那麼要確保你的供應商的編譯器符合ANSI標準。
此外,你的PATH中必須包含指向基本編譯工具
精確的計時
HTTP協議的元素被表示爲一天中的時間。所以,它的時間來調查你的系統上設置一些時間同步設備。
一般狀況下, 用ntpdate或xntpd中的程序用於此目的是基於網絡時間協議(NTP)。
請參見NTP主頁關於NTP的軟件和公共時間服務器的詳細信息。
Perl 5 [可選]
對於一些像支持腳本的apxs或dbmmanage(這是用Perl寫的)Perl的解釋器5是必需的(版本5.003或更高版本就足夠了)
。若是您有多個Perl解釋器(例如,一個系統範圍的安裝Perl 4,和你本身安裝的Perl 5中),
建議您使用 了- with-perl的選項(見下文),以確保正確的使用經過配置。若是沒有的Perl 5解釋是由發現 的configure腳本,
您將沒法使用受影響的支持腳本。固然,你仍然能夠創建並使用Apache httpd的。
配置源代碼樹
下一步是配置Apache源代碼樹爲你的特定平臺和我的需求。這是經過使用腳本配置包含在發佈的根目錄。
(開發人員下載Apache源代碼樹的未發行的版本將須要有 autoconf的和libtool的安裝將須要運行buildconf便可進行下一個步驟以前,這是沒有必要的官方版本。)
要使用全部默認選項配置源代碼樹,只需鍵入。/ configure的。要更改默認的選項,配置接受各類變量和命令行選項。
最重要的選項是位置-前綴 ,其中Apache是稍後安裝,由於Apache必須配置這個位置才能正常工做。文件的位置的更多微調控制是可能的額外配置選項。
此外,在這一點上,您能夠指定哪些功能要包含在Apache中啓用和禁用模塊。阿帕奇配備了一個普遍的模塊默認包含的。
他們將被編譯爲 共享對象(DSO)是它能夠在運行時加載或卸載。您也能夠選擇經過選項靜態編譯的模塊 --enable- module =static .
附加模塊使用已啓用 啓用--enable-module,其中 模塊與模塊的名稱 mod_個字符串,刪除和轉換爲破折號任何下劃線。一樣,你能夠禁用模塊與 -禁用- 模塊選項。
使用這些選項時,由於要當心配置不能警告你,若是你指定的模塊不存在,它會簡單地忽略這個選項。
此外,有時須要提供 的configure腳本關於編譯器的位置,庫或頭文件的額外信息。
這是經過任一環境變量或命令行選項來進行配置。欲瞭解更多信息,請參見 配置手冊頁。或調用 配置使用幫助-選項。./configure --help
爲了讓你對什麼有一個簡單的印象,這裏是一個典型的例子,它編譯爲Apache的安裝 /sw/pkg/apache 的一個特定的編譯器和標誌加上兩個額外的模塊 mod_ldap模塊和 mod_lua:
$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-ldap=shared \
--enable-lua=shared
當配置運行會須要幾分鐘來測試的功能系統上的可用性,並創建Makefile文件稍後將被用來編譯服務器。
在全部不一樣的細節配置可用的選項上配置手冊頁。
如今,你能夠創建它只需運行命令造成的Apache包的各個部分:
建立 編譯
$ make
安裝
如今,是時候下的安裝配置安裝包前綴(參見-前綴上面的選項)運行:
$ make install
這一步一般須要root權限,由於 前綴一般是受限制的寫權限的目錄。
若是是升級,安裝不會覆蓋你的配置文件或文檔。
定製
接下來,您能夠經過編輯自定義您的Apache HTTP服務器的配置文件下 PREFIX/conf/.
vi PREFIX/conf/httpd.conf
看看Apache的手動下 PREFIX /文檔/手動/或諮詢http://httpd.apache.org/docs/2.4/
爲最新版本的手冊,並提供完整的參考配置指令。
測試
如今你能夠開始經過當即運行你的Apache HTTP服務器:
$ PREFIX/bin/apachectl -k start
那麼你應該可以經過URL來請求你的第一個文檔 http://localhost/.
您所看到的網頁是位於下的 DocumentRoot,這一般是PREFIX/htdocs/.而後中止經過再次運行服務器:
$ PREFIX/bin/apachectl -k stop
升級
在升級的第一步是閱讀發行公告及文件變動源分佈地發現,可能會影響你的網站的任何更改。當主版本號的變化(例如,從2.0到2.2或2.2~2.4),
有可能會在編譯時的主要差別和運行時配置,將須要手動調整。全部的模塊也須要升級,以適應變化的模塊API中。
從一個小版本升級到下一個(例如,從2.2.55到57年2月2日)更容易。在make install的 過程不會覆蓋任何現有文件,日誌文件,或配置文件。
此外,開發人員盡一切努力,以免不兼容的改變 配置選項,運行時配置,或次要版本的模塊API。在大多數狀況下,你應該可以使用相同的配置命令行,相同的配置文件,全部的模塊應能繼續工做。
跨小版本升級,經過查找文件開始 的config.nice在構建你 的服務器安裝的目錄,或者在源代碼樹的根目錄爲你的舊安裝。
這將包含具體 配置您用來配置源代碼樹的命令行。而後從一個版本升級到下一個,你只須要複製的config.nice文件的新版本的源代碼樹,編輯進行任何所需的更改,而後運行:
$ ./config.nice
$ make
$ make install
$ PREFIX/bin/apachectl -k graceful-stop
$ PREFIX/bin/apachectl -k start
########################################################################
你應該老是把它投入生產以前測試新版本在您的環境。
例如,您能夠經過使用不一樣的安裝和運行新版本的旁邊舊的前綴-和不一樣的端口
(經過調整聽指令)作最後的升級前測試任何不兼容性。
#############################################################################
$ ./config.nice --prefix=/home/test/apache --with-port=90
第三方軟件包
大量第三方提供的Apache HTTP服務器上的特定平臺上安裝本身的打包發行。這包括各類Linux發行版,各類第三方Windows軟件包的Mac OS X,Solaris和許多更多。
咱們的軟件許可證,不只容許,並且鼓勵,這種再分配。可是,它致使一種狀況,在您安裝的服務器的配置佈局和默認值可能會有所不一樣從什麼是文件中所述。
雖然不幸,這種狀況不太可能很快改變。
一個這些第三方distrubutions的描述保持在HTTP服務器的wiki,並應反映這些第三方發行的當前狀態。不過,你須要熟悉一下您的特定平臺的軟件包管理和安裝程序。
Apache如何開始
若是聽 的配置文件中指定爲默認的80(或1024如下的任何其餘端口),那麼就必須有root權限才能啓動Apache,以便它能夠綁定到這個特權端口。一旦服務器啓動,並進行了一些初步的活動,如打開它的日誌文件,將推出幾個 孩子裏面作的監聽和來自客戶端的請求應答的工做流程。主要的httpd 進程繼續做爲root用戶運行,但子進程運行做爲一個弱勢的用戶。這是由選定的控制的 多處理模塊。
調用的推薦方法的httpd 可執行文件是使用的apachectl控制腳本。此腳本設置一些環境變量所必需的 httpd的,以在某些操做系統中正常工做,而後調用httpd的二進制文件。 的apachectl將經過任何命令行參數,因此任何httpd的選項也可能與使用 的apachectl。您也能夠直接編輯 的apachectl經過改變腳本的HTTPD 變量接近頂部到指定的正確位置 的httpd二進制文件和你想成爲的任何命令行參數老是存在。
第一件事httpd的不被調用時,它是定位和讀取配置文件 httpd.conf中。此文件的位置設置在編譯時間,但有可能使用在運行時指定它的位置 -F命令行選項,如
/ usr/local/apache2/bin/apachectl -F / usr/local/apache2/conf/httpd.conf
如今開始安裝apache
首先下載 apache的安裝包
wget http://httpd.apache.org/[preferred]/httpd/httpd-2.4.9.tar.gz
wget http://mirror.bit.edu.cn/apache//apr/apr-1.5.0.tar.gz
wget http://apache.fayea.com/apache-mirror//apr/apr-util-1.5.3.tar.gz
解壓縮前安裝 apache所須要的服務包 這裏用yum來安裝就好 yum install gcc gcc-c++ pcre-devel -y (若是你沒有安裝ntpdate隨便也裝上)
安裝apr
tar zxvf apr-1.5.0.tar.gz && tar zxvf apr-util-1.5.3.tar.gz
cd apr-1.5.0 /configure && make make install cd ../apr-util-1.5.3 && ./configure --with-apr=/usr/local/apr/ &&make && make install && cd ..
tar zxvf httpd-2.4.9.tar.gz && cd httpd-2.4.9
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-tui=/usr/local/apr --with-port=80 \
--with-ssl=/usr/bin/openssl --with-libxml2=/usr/include/libxml2
=========================================================================================================================
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-included-apr Use bundled copies of APR/APR-Util
--with-apr=PATH prefix for installed APR or the full path to
apr-config
--with-apr-util=PATH prefix for installed APU or the full path to
apu-config
--with-pcre=PATH Use external PCRE library
--with-port=PORT Port on which to listen (default is 80)
--with-sslport=SSLPORT Port on which to securelisten (default is 443)
--with-distcache=PATH Distcache installation directory
--with-z=PATH use a specific zlib library
--with-libxml2=PATH location for libxml2
--with-lua=PATH Path to the Lua 5.1 prefix
--with-ssl=PATH OpenSSL installation directory
--with-mpm=MPM Choose the process model for Apache to use by
default. MPM={event|worker|prefork|winnt} This will
be statically linked as the only available MPM
unless --enable-mpms-shared is also specified.
--with-module=module-type:module-file
Enable module-file in the modules/<module-type>
directory.
--with-program-name alternate executable name
--with-suexec-bin Path to suexec binary
--with-suexec-caller User allowed to call SuExec
--with-suexec-userdir User subdirectory
--with-suexec-docroot SuExec root directory
--with-suexec-uidmin Minimal allowed UID
--with-suexec-gidmin Minimal allowed GID
--with-suexec-logfile Set the logfile
--with-suexec-safepath Set the safepath
--with-suexec-umask umask for suexec'd process
======================================================================================================================
make && make install
/usr/local/apache/bin/apachectl -k start (開啓)
lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 54324 root 4u IPv6 80431 0t0 TCP *:http (LISTEN)
httpd 54325 daemon 4u IPv6 80431 0t0 TCP *:http (LISTEN)
httpd 54326 daemon 4u IPv6 80431 0t0 TCP *:http (LISTEN)
httpd 54327 daemon 4u IPv6 80431 0t0 TCP *:http (LISTEN)
/usr/local/apache/bin/apachectl -k stop (關閉)
/usr/local/apache/bin/apachectl -F /usr/local/apache/conf/httpd.conf
httpd: illegal option -- F
Usage: /usr/local/apache/bin/httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
-D name : define a name for use in <IfDefine name> directives
-d directory : specify an alternate initial ServerRoot
-f file : specify an alternate ServerConfigFile
-C "directive" : process directive before reading config files
-c "directive" : process directive after reading config files
-e level : show startup errors of level (see LogLevel)
-E file : log startup errors to file
-v : show version number
-V : show compile settings
-h : list available command line options (this page)
-l : list compiled in modules
-L : list available configuration directives
-t -D DUMP_VHOSTS : show parsed vhost settings
-t -D DUMP_RUN_CFG : show parsed run settings
-S : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG
-t -D DUMP_MODULES : show all loaded modules
-M : a synonym for -t -D DUMP_MODULES
-t : run syntax check for config files
-T : start without DocumentRoot(s) check
-X : debug mode (only one worker, do not detach)