http://www.yangjia.org/?p=765
前面提及了 VPS 优化最基础的部分 -选择合适的 Linux 发行版,在安装好系统后,接下来就要部署 web 服务环境了,选择什么 web 服务器软件是 VPS 最好的选择呢?我建议 Nginx 或 Lighttpd,两者都是轻量级的 web 服务器软件,和 Apache 相比占用资源更少,但是并发性能更好。这里以 Nginx 为例。
1、编辑 sources.list,添加源
vi /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ squeeze main deb-src http://ftp.us.debian.org/debian/ squeeze main deb http://security.debian.org/ squeeze/updates main deb-src http://security.debian.org/ squeeze/updates main deb http://ftp.us.debian.org/debian/ squeeze-updates main deb-src http://ftp.us.debian.org/debian/ squeeze-updates main deb http://packages.dotdeb.org squeeze all deb-src http://packages.dotdeb.org squeeze all
2、下载并导入证书
curl -O http://www.dotdeb.org/dotdeb.gpg cat dotdeb.gpg | sudo apt-key add -
3、同步 package 索引清单
apt-get update
4、安装 Nginx + PHP + MySQL
Nginx 下 PHP 的运行模式为 FastCGI,PHP-FPM 全称为 PHP FastCGI Process Manager,意为 PHP 进程管理器,相比 PHP 自带的进程管理,提供了很多优秀的特性,比如平滑启动。
apt-get install mysql-server mysql-client php5-cgi php5-cli php5-curl php5-mcrypt php5-gd php5-mysql php5-fpm nginx
vi /etc/mysql/my.cnf
[mysqld] ## 针对小站点优化 key_buffer_size = 16K max_allowed_packet = 1M table_open_cache = 4 sort_buffer_size = 64K read_buffer_size = 256K read_rnd_buffer_size = 256K net_buffer_length = 2K thread_stack = 64K ## 启用 query 缓存 query_cache_limit = 256K query_cache_size = 4M ## MySQL 5.5默认的存储引擎为 innodb,虽然性能得到了提升,但是耗费内存也增大了不少 ## 一般的站点采用 MyISAM 足矣 default-storage-engine = MyISAM skip-innodb
如果您的站点很多页面的 query 操作的结果在一段时间都是固定的,那么启用 query 缓存可以很大程度上改善性能。
1、编辑 Nginx 全局设置文件
vi /etc/nginx/nginx.conf
## 一般是 CPU 个数或者核数的1-2倍 worker_processes 2; events { worker_connections 1024; } http { sendfile on; tcp_nopush on; tcp_nodelay on; client_body_timeout 10; client_header_timeout 10; keepalive_timeout 15; send_timeout 10; server_tokens off; client_max_body_size 20m; client_body_buffer_size 8K; client_header_buffer_size 1k; large_client_header_buffers 2 1k; server_names_hash_bucket_size 128; ## 开启 Gzip 压缩 gzip on; gzip_disable "MSIE [1-6]\."; gzip_vary on; gzip_min_length 1000; gzip_proxied expired no-cache no-store private auth; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; }
2、编辑站点设置文件
vi /etc/nginx/sites-available/9elite
server { server_name 9elite.com; ## 重定向 9elite.com 到 www.9elite.com return 301 $scheme://www.9elite.com$request_uri; } server { server_name www.9elite.com; root /var/www/9elite.com; index index.php; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\. { deny all; access_log off; log_not_found off; } location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~* \.(png|jpg|jpeg|gif|ico)$ { ## 设置图片的过期时间为30天 expires 30d; access_log off; log_not_found off; } location ~* \.(css|js)(\?ver=.*)?$ { ## 设置 css、js 的过期时间为6小时 expires 6h; log_not_found off; } }
3、建立软链接,使站点设置文件生效
ln -s /etc/nginx/sites-available/9elite /etc/nginx/sites-enable/9elite
下列参数针对 512M vps 设定,一个 PHP5-FPM 进程占用内存约为20-35M,除去系统必须的内存占用,最大子进程数目可以自己计算。
vi /etc/php5/fpm/pool.d/www.conf
listen = /var/run/php5-fpm.sock pm = dynamic ;最大子进程数目 pm.max_children = 12 ;初始创建的子进程数目 pm.start_servers = 5 ;闲置的最小子进程数目 pm.min_spare_servers = 3 ;闲置的最大子进程数目 pm.max_spare_servers = 8
http://www.9elite.com/vps-optimize-nginx-mysql-php-fpm-optimize/