天天看點

LAMP架構(apache安裝,apache工作原理介紹)

一、apache介紹。

apache是一個基金會的名字,httpd才是我們要安裝的軟體包,早起叫apache,從2.0版本開始叫apache。

下載下傳三個軟體

二、apache安裝

分别解壓三個軟體

tar zxvf apr-***.tar.gz

tar zxvf apr-util-***.tar.gz

tar zxvf httpd-***.tar.gz

先安裝apr

cd apr-***.tar.gz

./configure --prefix=/usr/local/apr

make && make install

在安裝apr-util-***.tar.gz

./configure --prefix=/usr/local/apr-util

--with-apr=/usr/local/apr                  (指定apr,依賴apr)

這裡可能會出現一個問題,提示缺少expat的開發庫,安裝一下就好

yum install expat-devel -y

最後安裝httpd-***.tar.gz

./configure --prefix=/usr/local/apr-util 

--with-apr=/usr/local/apr                      (指定apr,依賴apr)

--with-apr-util=/usr/local/apr-util               (指定apr-util,依賴apr-util)

--enable-so                                (支援動态加載子產品,例如php)

--enable-mods-shared=most                      (指定加載哪些子產品,most表示絕大多數)

這裡會提示缺少pcre,pcre是個Perl庫.包括perl相容的正規表達式庫

進入/usr/local/apache2.4中

bin下是可執行檔案

conf 是配置檔案所在目錄

htdocs 存放了一個通路頁,預設的通路網頁

logs 日志相關的目錄

man 幫助文檔

modules 存放了擴充子產品

/usr/local/apache2.4/bin/httpd -M    

/usr/local/apache2.4/bin/apachectl -M    都是檢視apache加載了哪些子產品

static 靜态子產品  和bin/httpd是綁定在一起的檔案

shared 動态子產品  是一個.so檔案,是在modules目錄下

/usr/local/apache2.4/bin/apachectl start  啟動apache

netstat -lntp                    檢視預設監聽80端口,mysql預設監聽3306端口,ssh預設監聽22端口

apache的三種工作模式:

(1)prefork:prefork模式算是很古老但是非常穩定的apache模式。apache在啟動之初,就先fork一些子程序,然後等待請求進來。之是以這樣做,是為了減少頻繁建立和銷毀程序的開銷。每個子程序隻有一個線程,在一個時間點内,隻能處理一個請求

優點:成熟穩定,相容所有新老子產品。同時,不需要擔心線程安全問題

缺點:一個程序相對占用更多的系統資源,消耗更多的記憶體。而且,他并不擅長處理高并發請求,在這種場景下,它會将請求放進隊列裡,一直等到有可用程序,請求才會被處理

(2)worker:和prefork模式相比,worker使用了多線程和多程序的混合模式,worker模式也同樣會先預派生一些子程序,然後每個子程序建立一些線程,同時包括一個監控線程,每個請求過來會被配置設定到一個線程來服務。線程比程序更輕量,因為線程是通過共享父程序的記憶體空間,是以,記憶體的占用會減少一些,在高并發的場景下會比prefork有更多可用的線程,表現更優秀些

優點:占用更少的記憶體,高并發下表現優秀

缺點:必須考慮線程安全的問題,因為多個子線程是共享父程序的記憶體位址的。如果使用keep-alive長連接配接的方式,某個線程會一直被占據,也許中間幾乎沒有請求,需要一直等待到逾時才會被釋放。如果太多的線程,被這樣占據,也會導緻在高并發場景下的無服務線程可用

(3)event:它和worker模式很像,不同的是它解決了keep-alive長連接配接的時候占用線程資源被浪費的問題,在event模式中,會有一些專門的線程來管理這些keep-alive類型的線程,當有真實請求過來的時候,将請求傳遞給伺服器的線程,執行完畢後,又允許它釋放,增強了在高并發場景下的請求處理

本文轉自 小新銳 51CTO部落格,原文連結:http://blog.51cto.com/13407306/2051401,如需轉載請自行聯系原作者