注意:部分文章发布时间较长,可能存在未知因素,购买时建议在本站搜索商家名称,先充分了解商家动态。
交流:唯一投稿邮箱:hostvps@88.com。
  	对其用户和应用程序来讲,每一个VPS平台的运行和管理都与一台独立主机完全相同,因为每一个VPS均可独立进行重启并拥有自己的root访问权限、用户、IP地址、内存、过程、文件、应用程序、系统函数库以及配置文件。
  	VPS服务器最重要的指标就是内存大小,多个VPS服务器可以共享一颗CPU,但不能共享同一块内存。内存越大,价格越贵。
  	  下面,以我的博客所在的VPS为例,介绍在128M内存下对 Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 的优化。
  	  至于 Nginx + PHP + MySQL 的安装配置,可参见:《Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建胜过Apache十倍的Web服务器(第4版) 》
  	——————————————————————————–
  	  优化后的效果:
  	  提供HTTP服务的1个Nginx进程占用11M物理内存,5个php-cgi进程每个占用8M左右物理内存,1个MySQL服务器占用7M物理内存,加上两个占用内存不大的Nginx和php-cgi父进程,Nginx + PHP + MySQL 系列总共只占用47.7%的物理内存,即62M物理内存(128M * 47.7% ≈ 62M)。
  	    贝壳主机网、bkvps.com
贝壳主机网、bkvps.com
  	  另外,VPS服务器系统自身和其它程序也会使用一些内存,但128M内存的VPS已经够用。总体而言,经过优化后,128M内存的VPS跑 Nginx + PHP + MySQL 效果不错。当然,如果有Money购买更大内存的VPS,就更好了。
  	优化项如下: 
  	  一、增加256M的swap交换文件
  	  1、创建并激活swap交换文件
  	cd /var/
  	dd if=/dev/zero of=swapfile bs=1024 count=262144
  	/sbin/mkswap swapfile
  	/sbin/swapon swapfile
  	  2、加到fstab文件中让系统引导时自动启动
  	vi /etc/fstab
  	在末尾增加以下内容:
  	引用
  	/var/swapfile swap swap defaults 0 0
  	详见:
  	——————————————————————————–
  	二、Nginx 0.7.19 的主配置文件(nginx.conf)优化
复制代码 代码如下:
  	user www www;
  	#Nginx每个进程耗费10M~12M内存,这里只开启一个Nginx进程,节省内存。
  	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;
  	#对网页文件、CSS、JS、XML等启动gzip压缩,减少数据传输量,提高访问速度。
  	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;
  	#针对Bo-Blog系统的Rewrite静态化
  	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在高并发访问下比Unix Socket稳定,但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在高并发访问下比Unix Socket稳定,但Unix Socket速度要比TCP快。
  	fastcgi_pass unix:/tmp/php-cgi.sock;
  	#fastcgi_pass 127.0.0.1:9000;
  	fastcgi_index index.php;
  	include fcgi.conf;
  	}
  	#博客的图片较多,更改较少,将它们在浏览器本地缓存15天,可以提高下次打开我博客的页面加载速度。
  	location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
  	{
  	expires 15d;
  	}
  	#博客会加载很多JavaScript、CSS,将它们在浏览器本地缓存1天,访问者在看完一篇文章或一页后,再看另一篇文件或另一页的内容,无需从服务器再次下载相同的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;
  	}
  	}
  	三、PHP 5.2.6(FastCGI)的配置优化
  	  1、php.ini 配置文件中关于eAcelerator的优化。只使用1M共享内存,删除所有在最后3600秒内无法存取的脚本缓存,用磁盘辅助进行缓存。
复制代码 代码如下:
  	[eaccelerator]
  	zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
  	eaccelerator.shm_size="1"
  	eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache"
  	eaccelerator.enable="1"
  	eaccelerator.optimizer="1"
  	eaccelerator.check_mtime="1"
  	eaccelerator.debug="0"
  	eaccelerator.filter=""
  	eaccelerator.shm_max="0"
  	eaccelerator.shm_ttl="3600"
  	eaccelerator.shm_prune_period="3600"
  	eaccelerator.shm_only="0"
  	eaccelerator.compress="1"
  	eaccelerator.compress_level="9"
  	eaccelerator.keys = "disk_only"
  	eaccelerator.sessions = "disk_only"
  	eaccelerator.content = "disk_only"
  	2、php-fpm.conf 的配置优化
  	  修改两项,一是修改以下一行,将启动的php-cgi进程数由原来的128个改为5个:
  	引用
  	<value name="max_children">5</value>
  	  二是修改以下一行,将TCP模式改为Unix Socket模式:
  	引用
  	<value name="listen_address">/tmp/php-cgi.sock</value>
  	——————————————————————————–
  	  四、MySQL 5.1.26 配置优化
  	  1、使用以下参数编译安装的 MySQL 5.1 默认支持4种存储引擎:CSV、MRG_MYISAM、MEMORY、MyISAM,不支持InnoDB存储引擎。由于内存有限,而InnoDB耗费的内存较大,这里推荐使用MyISAM存储引擎。
  	./configure –prefix=/usr/local/webserver/mysql/ –enable-assembler –with-extra-charsets=complex –enable-thread-safe-client –with-big-tables –with-readline –with-ssl –with-embedded-server –enable-local-infile
  	make && make install
  	  2、MySQL 5.1 配置文件(my.cnf)优化
复制代码 代码如下:
  	[client]
  	port = 3306
  	socket = /tmp/mysql.sock
  	[mysql]
  	prompt="(u:s135:)[d]> "
  	no-auto-rehash
  	[mysqld]
  	user = mysql
  	port = 3306
  	socket = /tmp/mysql.sock
  	basedir = /usr/local/webserver/mysql
  	datadir = /usr/local/webserver/mysql/data
  	open_files_limit = 600
  	back_log = 20
  	max_connections = 100
  	max_connect_errors = 200
  	table_cache = 60
  	external-locking = FALSE
  	max_allowed_packet = 16M
  	sort_buffer_size = 128K
  	join_buffer_size = 128K
  	thread_cache_size = 10
  	thread_concurrency = 8
  	query_cache_size = 0M
  	query_cache_limit = 2M
  	query_cache_min_res_unit = 2k
  	default_table_type = MyISAM
  	thread_stack = 192K
  	transaction_isolation = READ-UNCOMMITTED
  	tmp_table_size = 512K
  	max_heap_table_size = 32M
  	/usr/local/webserver/mysql/data/slow.log
  	/usr/local/webserver/mysql/data/error.log
  	long_query_time = 1
  	log_long_format
  	server-id = 1
  	#log-bin = /usr/local/mysql/data/binlog
  	binlog_cache_size = 2M
  	max_binlog_cache_size = 4M
  	max_binlog_size = 512M
  	expire_logs_days = 7
  	key_buffer_size = 4M
  	read_buffer_size = 1M
  	read_rnd_buffer_size = 2M
  	bulk_insert_buffer_size = 2M
  	myisam_sort_buffer_size = 4M
  	myisam_max_sort_file_size = 10G
  	myisam_max_extra_sort_file_size = 10G
  	myisam_repair_threads = 1
  	myisam_recover
  	[mysqldump]
  	quick
  	max_allowed_packet = 16M
 贝壳主机网
贝壳主机网








