CentOS Apache數據庫處理盡可能的加快PHP的執行速度
CentOS Apache對于電腦使用的玩家的常用軟件,然后我就學習及深入的研究CentOS Apache,在這里和大家一起探討CentOS Apache的使用方法,希望對大家有用。試了一段時間的Lighttpd,表現的確不錯,原先用CentOS Apache只能跑到6K/S,改用Lighttpd后性能提升了將近一倍.
只是跑PHP似乎很不穩定,數據庫處理時間長一點就會到導致Lighttpd出現500的錯誤,也就是說要想使Lighttpd發揮更好的性能,除了優化程序還是優化程序,盡可能的加快PHP的執行速度,另外加上eAccelerator性能會有更大的提高。
說了這么多優點,再來說說公司最近所嘗試的一些經驗,PHP程序已被優化的不能再優化了,但是有時候操作一下數據庫(比如執行mysqldump)就會出現500錯誤,并發量非常大的時候很容易出現.
在這點上Lighttpd的表現就沒有CentOS Apache穩定了,所以想了一個折中的辦法,讓CentOS Apache來處理PHP程序,其他的靜態頁面(包括圖片、軟件等等)全都交給Lighttpd來處理。而實現方法就是通過mod_proxy來實現,CentOS Apache做前端處理或Lighttpd做前端處理都行,反正這2種都有個mod_proxy模塊,基本上一樣。
下面就以CentOS 4.4系統下使用CentOS Apache(80端口)和Lighttpd(81端口)實現動態頁面和靜態頁面的分離。CentOS Apache采用系統默認安裝(yum install apache)的即可,網上的安裝文檔也很多,偶就不再介紹了。
安裝Lighttpd v1.4.13
- # yum install pcre-devel
- # cd /usr/local/src
- # wget http://www.lighttpd.net/download/lighttpd-1.4.13.tar.gz
- # tar -zxvf lighttpd-1.4.13.tar.gz
- # cd lighttpd-1.4.13
- # ./configure --with-pcre
- # make
- # make install
- # cd doc
- # cp sysconfig.lighttpd /etc/sysconfig/lighttpd
- # cp rc.lighttpd.redhat /etc/init.d/lighttpd
- # chkconfig lighttpd on
- # mkdir -p /etc/lighttpd
- # cp lighttpd.conf /etc/lighttpd/
- # mkdir /var/log/lighttpd
- # touch /var/log/lighttpd/access.log
- # touch /var/log/lighttpd/error.log
- # chown -R apache:apache /var/log/lighttpd
- # vi /etc/init.d/lighttpd
- 將lighttpd=”/usr/sbin/lighttpd”改為lighttpd=”/usr/local/sbin/lighttpd”
編輯Lighttpd的配置文件lighttpd.conf,大致修改如下:
- server.modules = ("mod_access", "mod_simple_vhost", "mod_accesslog" )
- server.document-root = "/var/www/html"
- server.errorlog = "/var/log/lighttpd/error.log"
- accesslog.filename = "/var/log/lighttpd/access.log"
- server.port = 81
- server.bind = “localhost”
- simple-vhost.server-root = “/var/www/html/”
- simple-vhost.default-host = “”
- simple-vhost.document-root = “/”
- server.username = “apache”
- server.groupname = “apache”
至此Lighttpd基本上已經配置完成了,執行/etc/init.d/lighttpd start就開始監聽81端口了。接下來就配置CentOS Apache,所要做的就是開啟mod_rewrite和mod_proxy模塊,大致修改如下:
- LoadModule rewrite_module modules/mod_rewrite.so
- LoadModule proxy_module modules/mod_proxy.so
- LoadModule proxy_http_module modules/mod_proxy_http.so
- LoadModule proxy_connect_module modules/mod_proxy_connect.so
- <VirtualHost *:80>
- ServerAdmin <a href="mailto:webmaster@sofee.cn">webmaster@sofee.cn</a>
- DocumentRoot /var/www/html/test.sofee.cn
- ServerName test.sofee.cn
- <IfModule mod_rewrite.c>
- RewriteEngine On
- # RewriteLog logs/rewrite_log
- # RewriteLogLevel 1
- RewriteRule "^/((.*).(js|css|htm|html|swf|gif|jpg|png|ico|exe|zip|rar))$" "http://0.0.0.0:81/$1" [P,QSA,L]
- RewriteRule "^/(.*)" "$0" [L]
- </IfModule>
- <IfModule mod_proxy.c>
- ProxyRequests Off
- ProxyPreserveHost On
- ProxyReceiveBufferSize 16384
- ProxyTimeout 300
- ProxyPassReverse / http://0.0.0.0:81/
- </IfModule>
- </VirtualHost>
至此,CentOS Apache也已配置完成,執行/etc/init.d/httpd start開始監聽80端口。為了使mod_proxy能夠發揮更好的性能,還可以加 入mod_cache模塊:
- LoadModule cache_module modules/mod_cache.so
- LoadModule disk_cache_module modules/mod_disk_cache.so
- LoadModule mem_cache_module modules/mod_mem_cache.so
- <IfModule mod_cache.c>
- <IfModule mod_mem_cache.c>
- CacheEnable mem /
- MCacheSize 10240
- MCacheMaxObjectCount 100
- MCacheMinObjectSize 1
- MCacheMaxObjectSize 2048
- </IfModule>
- <IfModule mod_disk_cache.c>
- CacheRoot /var/cache/mod_proxy
- CacheEnable disk /
- CacheDirLevels 5
- CacheDirLength 3
- </IfModule>
- </IfModule>
【編輯推薦】