apache web伺服器的安裝和運行

來源:互聯網
上載者:User

1 安裝

通過yum或apt-get的方式不在此說明,下面說明原始碼安裝的問題。

Linux下源碼安裝比較常規,最一般的即./configure;make;make install. 但由於不同版本對系統依賴的包不同,在安裝過程中如果遇到依賴的情況需要安裝相應的依賴。

1.1 安裝路徑

安裝apache的httpd需要注意的問題是安裝路徑問題,由於Linux系統分支眾多,安裝過程中會將檔案安裝到不同的路徑下。為此apache在安裝時可以配置這些路徑參數,具體通過configure的參數實現。

--prefix  指定安裝的根目錄,預設為/usr/local/apache2,使用者可以自己指定,make install時會將bin lib等安裝到此目錄下,更詳細的還可以設定如下幾個比較重要的參數。

 --bindir=DIR             user executables [EPREFIX/bin]
 --sbindir=DIR           system admin executables [EPREFIX/sbin]
 --libexecdir=DIR      program executables [EPREFIX/libexec]
 --sysconfdir=DIR     read-only single-machine data [PREFIX/etc]
 --libdir=DIR              object code libraries [EPREFIX/lib]

為了簡化配置過程,源碼包提供了config.layout,使用者可以在修改其中定義的模板,並在configure時通過--enable-layout='name'來定義自己的目錄路徑方式。

config.layout中定義了眾多的模板,基本上針對每種類型的系統都有定義,如Debian、MAC OS、AIX、等等等,下面可以看一個apache自己預設的定義

<Layout RedHat>    prefix:        /usr    exec_prefix:   ${prefix}    bindir:        ${prefix}/bin    sbindir:       ${prefix}/sbin    libdir:        ${prefix}/lib    libexecdir:    ${prefix}/lib/apache    mandir:        ${prefix}/man    sysconfdir:    /etc/httpd/conf    datadir:       /var/www    installbuilddir: ${datadir}/build    errordir:      ${datadir}/error    iconsdir:      ${datadir}/icons    htdocsdir:     ${datadir}/html    manualdir:     ${datadir}/manual    cgidir:        ${datadir}/cgi-bin    includedir:    ${prefix}/include/apache    localstatedir: /var    runtimedir:    ${localstatedir}/run    logfiledir:    ${localstatedir}/log/httpd    proxycachedir: ${localstatedir}/cache/httpd</Layout>

當我們在redhat/centos/fedora系統下yum安裝httpd,實際按layout中定義的redhat的布局進行存放。

1.2 安裝時特性配置

apache本身是模組化的,在配置時我們可以選擇apache支援的模組以及對模組的支援方式,如so或是靜態方式。

--enable-modules=mod-list  可以用all或most代替,表示靜態編譯的模組

--enable-mods-shared=mod-list 同上 ,表示編譯為動態載入的共用模組

具體參考第3節

通常模組功能較大,模組具有比較多的特性,特性也可以通過配置來開啟和關閉,具體可以通過configure --help 查看,如

--enable-charset-lite  支援字元轉換

--enable-deflate  支援壓縮

--enable-ldap      支援ldap

--enable-usertrack 支援使用者會話跟蹤

這裡要重點說下MPM功能支援,此模組用於控制進程使用模型,在配置時可以指定將哪種進程模型編譯為靜態模組,不同的系統下有不同的預設MPM

--with-mpm = {beos|event|worker|prefork|mpmt_os2|winnt}  Unix下支援prefork/worker/event  Winnt下支援winnt

在2.4版本中mpm支援以動態方式編譯,可以通過 --enable-mpms-shared方式說明,然後在LoadModule中載入不同的MPM模組,

具體可參考官方文檔:http://httpd.apache.org/docs/2.4/mpm.html

1.3 編譯和安裝

在確認配置參數後,如前所述執行configure會產生Makefile

然後即可執行make和make install

這樣到layout指定的目錄下即可看到安裝好的檔案。

2 httpd的運行控制和狀態監控

2.1  httpd的進程式控制制

一種方式是直接操作httpd進程,可以直接運行命令加上合適的參數。終止用pkill或kill

一種方式是採用apachectl這個指令碼,這個指令碼實際只是對httpd進行了簡單的封裝,設定一些系統內容,最主要是設定檔案描述符開啟個數,並通過系統命令獲得進程狀態

啟動httpd後,開啟瀏覽器即可訪問。如果遇到提示檔案存取權限問題,則問題可能是三方面的:1 SELinux策略 2 Directory目錄許可權配置錯誤 3 ServerRoot及上級目錄許可權錯誤

2.2 httpd參數說明

-k start|restart|graceful|graceful-stop|stop 控制httpd進程的啟動和終止

-d   dir  指定ServerRoot路徑

-f  file  指定啟動時使用httpd.conf檔案路徑,通過指定不同的設定檔及連接埠,可以啟動多個apache進程

-l  列出編譯到apache中的模組

-L 列出當前配置指示

-M 列出當前載入的模組

-D 通過命令列設定宏,可以傳遞給設定檔中的<ifDefine name>... </ifDefine>,從而實現配置的選擇性載入

-t  檢查設定檔,但不啟動

-C/-c  向httpd傳遞配置指令,從而對靜態配置進行修改

2.3 apache運行狀態監控

2.3.1 內建模組支援

mod_status 與 mod_info分別提供了運行狀態和配置資訊的監控,如需啟用,需要在設定檔件開啟相應的配置

## Allow server status reports generated by mod_status,# with the URL of http://servername/server-status# Change the ".example.com" to match your domain to enable.#<Location /server-status>    SetHandler server-status    Order deny,allow    Deny from all    Allow from .example.com</Location>## Allow remote server configuration reports, with the URL of#  http://servername/server-info (requires that mod_info.c be loaded).# Change the ".example.com" to match your domain to enable.#<Location /server-info>    SetHandler server-info    Order deny,allow    Deny from all    Allow from .example.com</Location>

對以上配置進行修改,通過瀏覽器開啟http://usr/server-status即可

2.3.2 三方工具的監控

開源工具比較多,如zabbix和nagios,不在此說明

3 apache的模組管理和支援

3.1 模組的類型

apache模組分為三類:核心模組,標準模組和第三方模組。

核心模組:如core,mpm等,其為apache的基本 必須模組,無法刪除。

標準模組:由apache自身維護,並作為apache的一部分發布,可以載入和刪除,前提是需要靜態安裝了mod_so模組

三方模組:由第三方開發,與apache不在一起發布

3.2 模組的載入

模組可以通過靜態方式編譯到httpd中,從而提高執行速度,通過在配置時指定./configure --enable-modules=most

模組也可以動態方式載入,從而減小httpd的大小,通過在配置時指定./configure --enable-mods-shared=most,這樣我們可以在httpd.conf中來載入需要的模組。

LoadModule可以載入ServerRoot/modules/下的模組,格式為LoadModule xxx_module  modules/mod_xxx.so

LoadFile用來載入任意位置的模組,格式為LoadFile /usr/lib/modules/libphp5.so

值得注意的是,對於載入的模組,按照後進先出的方式進行去處理URL

3.3 增加新模組

增加新的模組有不同的方式,比較簡單的是下載相應的.so檔案,然後存放到指定的位置再通過LoadModule來載入

如果需要通過源碼編譯,則需要通過apxs進行,例如PHP在編譯時間,可以指定--with-apxs2=path即可調用相關指令碼將產生的.so檔案產生到對應位置

三方模組比較難以靜態方式編譯,如果模組支援以靜態方式編譯到apache中,則可以查看其編譯文檔。

參考文獻

MPM prefork工作原理:http://httpd.apache.org/docs/2.4/mod/prefork.html

MPM worker工作原理:http://httpd.apache.org/docs/2.4/mod/worker.html

MPM event工作原理:http://httpd.apache.org/docs/2.4/mod/event.html

Apache prefork與workers工作原理 http://blog.csdn.net/gulaizi/article/details/4005523

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.