一、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,如需轉載請自行聯系原作者