部署Apache服务器
一、安裝依賴
安裝依賴
?yum install -y pcre-devel libxml2 expat-devel?
二、 apr介紹及安裝
APR(Apache portable Run-time libraries,Apache可移植運行庫)的目的如其名稱一樣,主要為上層的應用程序提供一個可以跨越多操作系統平臺使用的底層支持接口庫。在早期 的Apache版本中,應用程序本身必須能夠處理各種具體操作系統平臺的細節,并針對不同的平臺調用不同的處理函數。
[root@apache_251 ~]# wget https://www.apache.org/dist/apr/apr-1.7.0.tar.bz2 [root@apache_251 ~]# tar xf apr-1.7.0.tar.bz2 [root@apache_251 ~]# cd apr-1.7.0 [root@apache_251 apr-1.7.0]# ./configure —prefix=/usr/local/apr [root@apache_251 apr-1.7.0]# make [root@apache_251 apr-1.7.0]# make install三、APR-util介紹及安裝
apr-util該目錄中也是包含了一些常用的開發組件。這些組件與apr目錄下的相比,它們與apache的關系更加密切一些。比如存儲段和存儲段組,加密等等。
wget https://www.apache.org/dist/apr/apr-util-1.6.1.tar.bz2 tar xf apr-util-1.6.1.tar.bz2 cd apr-util-1.6.1 yum install -y expat-devel ./configure —prefix=/usr/local/apr-util —with-apr=/usr/local/apr/ make make install四、apr-iconv介紹及安裝
apr-iconv包中的文件主要用于實現iconv編碼。目前的大部分編碼轉換過程都是與本地編碼相關的。在進行轉換之前必須能夠正確地設置本地編碼。因此假如兩個非本地編碼A和B需要轉換,則轉換過程大致為A->Local以及Local->B或者B->Local以及Local->A。
[root@apache_251 ~]# wget https://www.apache.org/dist/apr/apr-iconv-1.2.2.tar.bz2 [root@apache_251 ~]# tar xf apr-iconv-1.2.2.tar.bz2 [root@apache_251 ~]# cd apr-iconv-1.2.2 [root@apache_251 apr-iconv-1.2.2]# ./configure —prefix=/usr/local/apr-iconv —with-apr=/usr/local/apr [root@apache_251 apr-iconv-1.2.2]# make [root@apache_251 apr-iconv-1.2.2]# make install五、apache安裝
[root@apache_251 ~]# wget https://www.apache.org/dist/httpd/httpd-2.4.39.tar.gz [root@apache_251 ~]# tar xf httpd-2.4.39.tar.gz [root@apache_251 ~]# cd httpd-2.4.39 [root@apache_251 httpd-2.4.39]# ./configure —prefix=/usr/local/apache —enable-mpms-shared=all —with-mpm=event —with-apr=/usr/local/apr —with-apr-util=/usr/local/apr-util —enable-so —enable-remoteip —enable-proxy —enable-proxy-fcgi —enable-proxy-uwsgi —enable-deflate=shared —enable-expires=shared —enable-rewrite=shared —enable-cache —enable-file-cache —enable-mem-cache —enable-disk-cache —enable-static-support —enable-static-ab —disable-userdir —enable-nonportable-atomics —disable-ipv6 —with-sendfile --prefix=/usr/local/apache 指定安裝目錄 --enable-mpms-shared=all --with-mpm=event 開啟動態MPM切換 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util 指定依賴包apr apr-util安裝路徑 --enable-so 打開 so 模塊,so 模塊是用來提 dso 支持的 apache 核心模塊 --enable-remoteip 支持基于客戶端IP做訪問控制 --enable-proxy --enable-proxy-fcgi --enable-proxy-uwsgi 啟用代理支持PHP Python網站 --enable-deflate=shared 開啟壓縮 --enable-expires=shared 開啟客戶端緩存 --enable-rewrite=shared 開啟URL重寫 --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache 開啟服務器緩存 --enable-static-support 支持靜態連接 --enable-static-ab 使用靜態連接編譯 ab - apache http 服務器性能測試工具 --disable-userdir 禁用用戶主目錄提供頁面訪問 --enable-nonportable-atomics 對新式CPU支持,支持原子的比較交換(compare-and -swap, CAS)操作指令 --disable-ipv6 禁用IPV6 --with-sendfile 開啟sendfile 0復制機制 [root@apache_251 httpd-2.4.39]# make [root@apache_251 httpd-2.4.39]# make install ##相關目錄 [root@apache_251 apache]# tree -L 1 . ├── bin 二進制命令 ├── build ├── cgi-bin cgi腳本目錄 ├── conf 配置文件目錄 ├── error 錯誤記錄 ├── htdocs 默認網站根目錄 ├── icons 小圖標 ├── include 一些C語言文件 ├── logs 日志目錄 ├── man 幫助手冊 ├── manual 在線手冊 └── modules 存放apache運行需要的模塊六、apache啟動
[root@apache_251 ~]# /usr/local/apache/bin/httpd
七、apache狀態測試
[root@apache_251 ~]# elinks?http://192.168.11.251?-dump
It works!
八、MPM多處理模塊
Apache HTTP 服務器被設計為一個功能強大,并且靈活的 web 服務器, 可以在很多平臺與環境中工作。不同平臺和不同的環境往往需要不同 的特性,或可能以不同的方式實現相同的特性最有效率。Apache httpd 通過模塊化的設計來適應各種環境。這種設計允許網站管理員通過在 編譯時或運行時,選擇哪些模塊將會加載在服務器中,來選擇服務器特性。
Apache HTTP 服務器 2.0 擴展此模塊化設計到最基本的 web 服務器功能。 它提供了可以選擇的多處理模塊(MPM),用來綁定到網絡端口上,接受請求, 以及調度子進程處理請求。
擴展到這一級別的服務器模塊化設計,帶來兩個重要的好處:
Apache httpd 能更優雅,更高效率的支持不同的平臺。尤其是 Apache httpd 的 Windows 版本現在更有效率了,因為 mpm_winnt 能使用原生網絡特性取代在 Apache httpd 1.3 中使用的 POSIX 層。它也可以擴展到其它平臺 來使用專用的 MPM。
Apache httpd 能更好的為有特殊要求的站點定制。例如,要求 更高伸縮性的站點可以選擇使用線程的 MPM,即 worker 或 event; 需要可靠性或者與舊軟件兼容的站點可以使用 prefork。
在用戶看來,MPM 很像其它 Apache httpd 模塊。主要是區別是,在任何時間, 必須有一個,而且只有一個 MPM 加載到服務器中。可用的 MPM 列表位于 模塊索引頁面。
默認MPM
下表列出了不同系統的默認 MPM。如果你不在編譯時選擇,那么它就是你將要使用的 MPM。
- Netware mpm_netware
- OS/2 mpmt_os2
- Unix prefork,worker 或 event,取決于平臺特性
- Windows mpm_winnt
構建 MPM 為靜態模塊
在全部平臺中,MPM 都可以構建為靜態模塊。在構建時選擇一種 MPM,鏈接到服務器中。如果要改變 MPM,必須重新構建。
為了使用指定的 MPM,請在執行 configure 腳本 時,使用參數 —with-mpm=NAME。NAME 是指定的 MPM 名稱。
編譯完成后,可以使用 ./httpd -l 來確定選擇的 MPM。 此命令會列出編譯到服務器程序中的所有模塊,包括 MPM。
構建 MPM 為動態模塊
在 Unix 或類似平臺中,MPM 可以構建為動態模塊,與其它動態模塊一樣在運行時加載。 構建 MPM 為動態模塊允許通過修改 LoadModule 指令內容來改變 MPM,而不用重新構建服務器程序。
在執行 configure 腳本時,使用 —enable-mpms-shared 選項可以啟用此特性。 當給出的參數為 all 時,所有此平臺支持的 MPM 模塊都會被安裝。還可以在參數中給出模塊列表。
默認 MPM,可以自動選擇或者在執行 configure 腳本時通過 —with-mpm 選項來指定,然后出現在生成的服務器配置文件中。 編輯 LoadModule 指令內容可以選擇不同的 MPM。
—enable-mpms-shared=all —with-mpm=event
Apache三種MPM介紹
Prefork MPM?: 這個多路處理模塊(MPM)實現了一個非線程型的、預派生的web服務器,它的工作方式類似于Apache 1.3。它適合于沒有線程安全庫,需要避免線程兼容性問題的系統。它是要求將每個請求相互獨立的情況下最好的MPM,這樣若一個請求出現問題就不會影響到其他請求。
這個MPM具有很強的自我調節能力,只需要很少的配置指令調整。最重要的是將MaxClients設置為一個足夠大的數值以處理潛在的請求高峰,同時又不能太大,以致需要使用的內存超出物理內存的大小。
Worker MPM?: 此多路處理模塊(MPM)使網絡服務器支持混合的多線程多進程。由于使用線程來處理請求,所以可以處理海量請求,而系統資源的開銷小于基于進程的MPM。但是,它也使用了多進程,每個進程又有多個線程,以獲得基于進程的MPM的穩定性。
每個進程可以擁有的線程數量是固定的。服務器會根據負載情況增加或減少進程數量。一個單獨的控制進程(父進程)負責子進程的建立。每個子進程可以建立ThreadsPerChild數量的服務線程和一個監聽線程,該監聽線程監聽接入請求并將其傳遞給服務線程處理和應答。
不管是Worker模式或是Prefork 模式,Apache總是試圖保持一些備用的(spare)或者是空閑的子進程(空閑的服務線程池)用于迎接即將到來的請求。這樣客戶端就不需要在得到服務前等候子進程的產生。
Event MPM:以上兩種穩定的MPM方式在非常繁忙的服務器應用下都有些不足。盡管HTTP的Keepalive方式能減少TCP連接數量和網絡負載,但是 Keepalive需要和服務進程或者線程綁定,這就導致一個繁忙的服務器會耗光所有的線程。 Event MPM是解決這個問題的一種新模型,它把服務進程從連接中分離出來。在服務器處理速度很快,同時具有非常高的點擊率時,可用的線程數量就是關鍵的資源限制,此時Event MPM方式是最有效的。一個以Worker MPM方式工作的繁忙服務器能夠承受每秒好幾萬次的訪問量(例如在大型新聞服務站點的高峰時),而Event MPM可以用來處理更高負載。在event工作模式中,會有一些專門的線程用來管理這些keep-alive類型的線程,當有真實請求過來的時候,將請求傳遞給服務器的線程,執行完畢后,又允許它釋放。這增強了在高并發場景下的請求處理
總結
以上是生活随笔為你收集整理的部署Apache服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web服务器-Apache
- 下一篇: apache默认网站