Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小內(nèi)存VPS服務(wù)器上的配置優(yōu)化第1/2頁
更新時(shí)間:2008年12月06日 21:29:47 作者:
VPS(全稱Virtual Private Server)是利用最新虛擬化技術(shù)在一臺(tái)物理服務(wù)器上創(chuàng)建多個(gè)相互隔離的虛擬私有主機(jī)。它們以最大化的效率共享硬件、軟件許可證以及管理資源。
對(duì)其用戶和應(yīng)用程序來講,每一個(gè)VPS平臺(tái)的運(yùn)行和管理都與一臺(tái)獨(dú)立主機(jī)完全相同,因?yàn)槊恳粋€(gè)VPS均可獨(dú)立進(jìn)行重啟并擁有自己的root訪問權(quán)限、用戶、IP地址、內(nèi)存、過程、文件、應(yīng)用程序、系統(tǒng)函數(shù)庫以及配置文件。
VPS服務(wù)器最重要的指標(biāo)就是內(nèi)存大小,多個(gè)VPS服務(wù)器可以共享一顆CPU,但不能共享同一塊內(nèi)存。內(nèi)存越大,價(jià)格越貴。
下面,以我的博客所在的VPS為例,介紹在128M內(nèi)存下對(duì) Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 的優(yōu)化。
至于 Nginx + PHP + MySQL 的安裝配置,可參見:《Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建勝過Apache十倍的Web服務(wù)器(第4版) 》
--------------------------------------------------------------------------------
優(yōu)化后的效果:
提供HTTP服務(wù)的1個(gè)Nginx進(jìn)程占用11M物理內(nèi)存,5個(gè)php-cgi進(jìn)程每個(gè)占用8M左右物理內(nèi)存,1個(gè)MySQL服務(wù)器占用7M物理內(nèi)存,加上兩個(gè)占用內(nèi)存不大的Nginx和php-cgi父進(jìn)程,Nginx + PHP + MySQL 系列總共只占用47.7%的物理內(nèi)存,即62M物理內(nèi)存(128M * 47.7% ≈ 62M)。

另外,VPS服務(wù)器系統(tǒng)自身和其它程序也會(huì)使用一些內(nèi)存,但128M內(nèi)存的VPS已經(jīng)夠用。總體而言,經(jīng)過優(yōu)化后,128M內(nèi)存的VPS跑 Nginx + PHP + MySQL 效果不錯(cuò)。當(dāng)然,如果有Money購買更大內(nèi)存的VPS,就更好了。
優(yōu)化項(xiàng)如下:
一、增加256M的swap交換文件
1、創(chuàng)建并激活swap交換文件
cd /var/
dd if=/dev/zero of=swapfile bs=1024 count=262144
/sbin/mkswap swapfile
/sbin/swapon swapfile
2、加到fstab文件中讓系統(tǒng)引導(dǎo)時(shí)自動(dòng)啟動(dòng)
vi /etc/fstab
在末尾增加以下內(nèi)容:
引用
/var/swapfile swap swap defaults 0 0
詳見:
--------------------------------------------------------------------------------
二、Nginx 0.7.19 的主配置文件(nginx.conf)優(yōu)化
user www www;
#Nginx每個(gè)進(jìn)程耗費(fèi)10M~12M內(nèi)存,這里只開啟一個(gè)Nginx進(jìn)程,節(jié)省內(nèi)存。
worker_processes 1;
error_log /data1/logs/nginx_error.log crit;
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
http
{
include mime.types;
default_type application/octet-stream;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#對(duì)網(wǎng)頁文件、CSS、JS、XML等啟動(dòng)gzip壓縮,減少數(shù)據(jù)傳輸量,提高訪問速度。
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
server
{
listen 80;
server_name blog.s135.com www.s135.com s135.com *.s135.com;
index index.html index.htm index.php;
root /data0/htdocs/blog;
#limit_conn crawler 20;
#針對(duì)Bo-Blog系統(tǒng)的Rewrite靜態(tài)化
rewrite ^/post/([0-9]+).htm$ /read.php?$1 last;
rewrite ^/post/([0-9]+)_([0-9]+).htm$ /read.php?$1&page=$2 last;
rewrite ^/post/([0-9]+)_([0-9]+)_([0-9]+).htm$ /read.php?$1&page=$2&part=$3 last;
rewrite ^/index_([0-9]+)_([0-9]+).htm$ /index.php?mode=$1&page=$2 last;
rewrite ^/star_([0-9]+)_([0-9]+).htm$ /star.php?mode=$1&page=$2 last;
rewrite ^/category_([0-9]+).htm$ /index.php?go=category_$1 last;
rewrite ^/category_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=category_$1&mode=$2&page=$3 last;
rewrite ^/archive_([0-9]+)_([0-9]+).htm$ /index.php?go=archive&cm=$1&cy=$2 last;
rewrite ^/archive_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=archive&cm=$1&cy=$2&mode=$3&page=$4 last;
rewrite ^/showday_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=showday_$1-$2-$3 last;
rewrite ^/showday_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=showday_$1-$2-$3&mode=$4&page=$5 last;
location ~ .*\.(php|php5)?$
{
#將Nginx與FastCGI的通信方式由TCP改為Unix Socket。TCP在高并發(fā)訪問下比Unix Socket穩(wěn)定,但Unix Socket速度要比TCP快。
fastcgi_pass unix:/tmp/php-cgi.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
location ~ /read.php
{
#將Nginx與FastCGI的通信方式由TCP改為Unix Socket。TCP在高并發(fā)訪問下比Unix Socket穩(wěn)定,但Unix Socket速度要比TCP快。
fastcgi_pass unix:/tmp/php-cgi.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
#博客的圖片較多,更改較少,將它們?cè)跒g覽器本地緩存15天,可以提高下次打開我博客的頁面加載速度。
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 15d;
}
#博客會(huì)加載很多JavaScript、CSS,將它們?cè)跒g覽器本地緩存1天,訪問者在看完一篇文章或一頁后,再看另一篇文件或另一頁的內(nèi)容,無需從服務(wù)器再次下載相同的JavaScript、CSS,提高了頁面顯示速度。
location ~ .*\.(js|css)?$
{
expires 1d;
}
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /data1/logs/access.log access;
}
}
VPS服務(wù)器最重要的指標(biāo)就是內(nèi)存大小,多個(gè)VPS服務(wù)器可以共享一顆CPU,但不能共享同一塊內(nèi)存。內(nèi)存越大,價(jià)格越貴。
下面,以我的博客所在的VPS為例,介紹在128M內(nèi)存下對(duì) Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 的優(yōu)化。
至于 Nginx + PHP + MySQL 的安裝配置,可參見:《Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建勝過Apache十倍的Web服務(wù)器(第4版) 》
--------------------------------------------------------------------------------
優(yōu)化后的效果:
提供HTTP服務(wù)的1個(gè)Nginx進(jìn)程占用11M物理內(nèi)存,5個(gè)php-cgi進(jìn)程每個(gè)占用8M左右物理內(nèi)存,1個(gè)MySQL服務(wù)器占用7M物理內(nèi)存,加上兩個(gè)占用內(nèi)存不大的Nginx和php-cgi父進(jìn)程,Nginx + PHP + MySQL 系列總共只占用47.7%的物理內(nèi)存,即62M物理內(nèi)存(128M * 47.7% ≈ 62M)。

另外,VPS服務(wù)器系統(tǒng)自身和其它程序也會(huì)使用一些內(nèi)存,但128M內(nèi)存的VPS已經(jīng)夠用。總體而言,經(jīng)過優(yōu)化后,128M內(nèi)存的VPS跑 Nginx + PHP + MySQL 效果不錯(cuò)。當(dāng)然,如果有Money購買更大內(nèi)存的VPS,就更好了。
優(yōu)化項(xiàng)如下:
一、增加256M的swap交換文件
1、創(chuàng)建并激活swap交換文件
cd /var/
dd if=/dev/zero of=swapfile bs=1024 count=262144
/sbin/mkswap swapfile
/sbin/swapon swapfile
2、加到fstab文件中讓系統(tǒng)引導(dǎo)時(shí)自動(dòng)啟動(dòng)
vi /etc/fstab
在末尾增加以下內(nèi)容:
引用
/var/swapfile swap swap defaults 0 0
詳見:
--------------------------------------------------------------------------------
二、Nginx 0.7.19 的主配置文件(nginx.conf)優(yōu)化
復(fù)制代碼 代碼如下:
user www www;
#Nginx每個(gè)進(jìn)程耗費(fèi)10M~12M內(nèi)存,這里只開啟一個(gè)Nginx進(jìn)程,節(jié)省內(nèi)存。
worker_processes 1;
error_log /data1/logs/nginx_error.log crit;
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
http
{
include mime.types;
default_type application/octet-stream;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#對(duì)網(wǎng)頁文件、CSS、JS、XML等啟動(dòng)gzip壓縮,減少數(shù)據(jù)傳輸量,提高訪問速度。
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
server
{
listen 80;
server_name blog.s135.com www.s135.com s135.com *.s135.com;
index index.html index.htm index.php;
root /data0/htdocs/blog;
#limit_conn crawler 20;
#針對(duì)Bo-Blog系統(tǒng)的Rewrite靜態(tài)化
rewrite ^/post/([0-9]+).htm$ /read.php?$1 last;
rewrite ^/post/([0-9]+)_([0-9]+).htm$ /read.php?$1&page=$2 last;
rewrite ^/post/([0-9]+)_([0-9]+)_([0-9]+).htm$ /read.php?$1&page=$2&part=$3 last;
rewrite ^/index_([0-9]+)_([0-9]+).htm$ /index.php?mode=$1&page=$2 last;
rewrite ^/star_([0-9]+)_([0-9]+).htm$ /star.php?mode=$1&page=$2 last;
rewrite ^/category_([0-9]+).htm$ /index.php?go=category_$1 last;
rewrite ^/category_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=category_$1&mode=$2&page=$3 last;
rewrite ^/archive_([0-9]+)_([0-9]+).htm$ /index.php?go=archive&cm=$1&cy=$2 last;
rewrite ^/archive_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=archive&cm=$1&cy=$2&mode=$3&page=$4 last;
rewrite ^/showday_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=showday_$1-$2-$3 last;
rewrite ^/showday_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=showday_$1-$2-$3&mode=$4&page=$5 last;
location ~ .*\.(php|php5)?$
{
#將Nginx與FastCGI的通信方式由TCP改為Unix Socket。TCP在高并發(fā)訪問下比Unix Socket穩(wěn)定,但Unix Socket速度要比TCP快。
fastcgi_pass unix:/tmp/php-cgi.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
location ~ /read.php
{
#將Nginx與FastCGI的通信方式由TCP改為Unix Socket。TCP在高并發(fā)訪問下比Unix Socket穩(wěn)定,但Unix Socket速度要比TCP快。
fastcgi_pass unix:/tmp/php-cgi.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
#博客的圖片較多,更改較少,將它們?cè)跒g覽器本地緩存15天,可以提高下次打開我博客的頁面加載速度。
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 15d;
}
#博客會(huì)加載很多JavaScript、CSS,將它們?cè)跒g覽器本地緩存1天,訪問者在看完一篇文章或一頁后,再看另一篇文件或另一頁的內(nèi)容,無需從服務(wù)器再次下載相同的JavaScript、CSS,提高了頁面顯示速度。
location ~ .*\.(js|css)?$
{
expires 1d;
}
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /data1/logs/access.log access;
}
}
相關(guān)文章
Linux XAMPP下啟用WordPress的自定義文件名(偽靜態(tài))功能
這篇文章主要介紹了Linux XAMPP下啟用WordPress的自定義文件名(偽靜態(tài))功能的相關(guān)資料,需要的朋友可以參考下2016-12-12在Ubuntu中使用NTP實(shí)現(xiàn)時(shí)間同步
這篇文章主要介紹了在Ubuntu中使用NTP實(shí)現(xiàn)時(shí)間同步,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09tr命令在統(tǒng)計(jì)英文單詞出現(xiàn)頻率中的妙用
今天小編就為大家分享一篇關(guān)于tr命令在統(tǒng)計(jì)英文單詞出現(xiàn)頻率中的妙用,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03關(guān)于CentOS 7下sqlite3找不到的問題解決
這篇文章主要給大家介紹了關(guān)于CentOS 7下sqlite3找不到問題的解決方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。2017-07-07