更換apache到nginx的操作過(guò)程
客戶有一個(gè)跑了3年多的組裝pc服務(wù)器, 1.5G內(nèi)存,p4 2.8G cpu,apache2.28+mod_php+mysql。95%的頁(yè)面是靜態(tài)頁(yè),每天大約有各類http請(qǐng)求500-1000萬(wàn)個(gè)(包括 html,js,css,jpg,gif,php等)啟用了gzip壓縮,大部分時(shí)間負(fù)載在1.0以下,但是偶爾會(huì)暴漲,導(dǎo)致死機(jī),嚴(yán)重情況一天down機(jī)N次。一直沒(méi)找到原因,可能是服務(wù)器不行了。正好想測(cè)試一下nginx + php-fastcgi 性能,也許能行。 說(shuō)干就干,看了一些nginx文檔,開(kāi)始實(shí)施了。過(guò)程如下:
安裝php最新版,直接用自帶的fastcgi模式:
./configure --prefix=/usr/local/php526cgi --with-mysql=/usr/local/mysql --with-zlib=/usr/local/src/zlib --with-gd --with-freetype-dir=/usr/local/src/freetype --with-jpeg-dir=/usr/local/src/jpeg/lib --enable-gd-native-ttf --with-png-dir=/usr/local/src/libpng --enable-exif --enable-ftp --with-curl --enable-mbstring=all --enable-force-cgi-redirect --enable-zip --enable-zend-multibyte --enable-fastcgi
make
make install
由于已經(jīng)是有php環(huán)境了,zlib等組件早已安裝好。我只需要--enable-fastcgi就ok了。 php搞定!
mysql不動(dòng)它,繼續(xù)用。
執(zhí)行php-fastcgi:
我們可以利用Lighttpd的spawn-fcgi來(lái)控制cgi進(jìn)程的運(yùn)行。獲得spawn-fcgi的方法如下:
wget http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2 #獲取Lighttpd的源碼包
tar -xvjf lighttpd-1.4.18.tar.bz2
cd lighttpd-1.4.18
./configure --prefix=/usr/local/lighttpd
make
cp src/spawn-fcgi /usr/local/nginx/bin/spawn-fcgi #取出spawn-fcgi的程序
下面我們就可以使用 spawn-fcgi 來(lái)控制php-cgi的FastCGI進(jìn)程了
/usr/local/nginx/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 32 -u nobody -g nobody -f /usr/local/php526cgi/bin/php-cgi
好了,搞定。繼續(xù)。
安裝nginx:
./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module
make
make install
strip /usr/local/nginx/sbin/nginx 可以壓縮執(zhí)行文件,節(jié)約內(nèi)存
制作nginx啟動(dòng)腳本:
vi /usr/local/nginx/bin/mynginx
#!/bin/bash
case in
start)
/usr/local/nginx/sbin/nginx
stop)
killall -9 nginx
test)
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
restart)
ps auxww | grep nginx | grep master | awk '{print }' | xargs kill -HUP
show)
ps -aux|grep nginx
esac
用法一看就知道了。
設(shè)置nginx的配置文件,這個(gè)網(wǎng)上一大把,不重復(fù)了。有需要的可以上 http://nginx.myhbcms.cn/ 找找
將apache的httpd.conf里面的虛擬主機(jī)配置轉(zhuǎn)到nginx里去,由于有幾十個(gè)虛擬主機(jī),這個(gè)花了我好幾個(gè)小時(shí)的時(shí)間。
額外插曲:由于使用了apache的mod_vhosts虛擬主機(jī)模塊,nginx沒(méi)找到對(duì)應(yīng)的功能模塊,不得以,只好繼續(xù)在8081端口開(kāi)著apache,用nginx的proxy來(lái)反向代理。舉例:
server {
listen 80;
server_name *.hbcms.com *.myhbcms.cn;
location / {
proxy_pass http://127.0.0.1:8081/; // 這是apache運(yùn)行的端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
大致過(guò)程就是這樣了,希望對(duì)你有所幫助。 至于這個(gè)服務(wù)器性能會(huì)如何,運(yùn)行一段時(shí)間才知道。理論上來(lái)說(shuō)nginx應(yīng)該會(huì)比apache資源占用上小很多。
關(guān)鍵字:apache nginx 操作
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解