


更換apache到nginx的操作過程
客戶有一個跑了3年多的組裝pc服務器, 1.5G內存,p4 2.8G cpu,apache2.28+mod_php+mysql。95%的頁面是靜態頁,每天大約有各類http請求500-1000萬個(包括 html,js,css,jpg,gif,php等)啟用了gzip壓縮,大部分時間負載在1.0以下,但是偶爾會暴漲,導致死機,嚴重情況一天down機N次。一直沒找到原因,可能是服務器不行了。正好想測試一下nginx + php-fastcgi 性能,也許能行。 說干就干,看了一些nginx文檔,開始實施了。過程如下:
安裝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
由于已經是有php環境了,zlib等組件早已安裝好。我只需要--enable-fastcgi就ok了。 php搞定!
mysql不動它,繼續用。
執行php-fastcgi:
我們可以利用Lighttpd的spawn-fcgi來控制cgi進程的運行。獲得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 來控制php-cgi的FastCGI進程了
/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
好了,搞定。繼續。
安裝nginx:
./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module
make
make install
strip /usr/local/nginx/sbin/nginx 可以壓縮執行文件,節約內存
制作nginx啟動腳本:
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
用法一看就知道了。
設置nginx的配置文件,這個網上一大把,不重復了。有需要的可以上 http://nginx.myhbcms.cn/ 找找
將apache的httpd.conf里面的虛擬主機配置轉到nginx里去,由于有幾十個虛擬主機,這個花了我好幾個小時的時間。
額外插曲:由于使用了apache的mod_vhosts虛擬主機模塊,nginx沒找到對應的功能模塊,不得以,只好繼續在8081端口開著apache,用nginx的proxy來反向代理。舉例:
server {
listen 80;
server_name *.hbcms.com *.myhbcms.cn;
location / {
proxy_pass http://127.0.0.1:8081/; // 這是apache運行的端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
大致過程就是這樣了,希望對你有所幫助。 至于這個服務器性能會如何,運行一段時間才知道。理論上來說nginx應該會比apache資源占用上小很多。
關鍵字:apache nginx 操作
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解