Apache HTTP服務器被設計為一個強大的、靈活的能夠在多種平台以及不同環境下工作的服務器。
不同的平台和不同的環境經常產生不同的需求,或是為了達到同樣的最佳效果而采用不同的方法。
Apache憑借它的模塊化設計很好的適應了大量不同的環境。
這一設計使得網站管理員能夠在編譯時和運行時憑借載入不同的模塊來決定服務器的不同附加功能。
Apache2.0將這種模塊化的設計延伸到了web服務器的基礎功能上。
這個版本帶有多路處理模塊(MPM)的選擇以處理網絡端口綁定、
接受請求並指派子進程來處理這些請求。
比如,需要更好伸縮性的可以選擇象worker或event這樣線程化的MPM,
而需要更好的穩定性和兼容性以適應一些舊的軟件可以用prefork 。
在Redhat Linux的主要版本as4上,apache版本為httpd-2.0.5x,
默認為prefork模式,主要是考慮到穩定性的原因。
要切換到worker模式,則需要登錄到linux上,進行如下操作:
進入/usr/sbin目錄
cd /usr/sbin
將當前的prefork模式啟動文件改名
mv httpd httpd.prefork
將worker模式的啟動文件改名
mv httpd.worker httpd
修改配置文件vi /etc/httpd/conf/httpd.conf
找到裡邊的如下一段,可適當修改負載等參數:
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
重新啟動服務
/etc/init.d/httpd restart
即可換成worker方式啟動apache2
注意這裡可能會遇到錯誤:
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. Pre-configuration failed!
解決方法是將/etc/httpd/conf.d/php.conf文件中的LoadModule開頭的那行代碼注釋掉。
--------------------------
注意:處於穩定性和安全性考慮,不建議更換apache2的運行方式,使用系統默認prefork即可
另外很多php模塊不能工作在worker模式下,例如redhat linux自帶的php也不能支持線程安全
所以最好不要切換工作模式。
=========================================
# /etc/init.d/httpd stop
[root@web ~]# which apachectl
/usr/sbin/apachectl
[root@web ~]# which httpd
/usr/sbin/httpd
[root@web ~]# cd /usr/sbin/
[root@web ~]# mv httpd httpd.prefork
# mv httpd.worker httpd
# httpd -k start