Nginx、MySQL 和 PHP-FPM 优化

另:

http://www.yangjia.org/?p=765

Nginx与PHP-FPM优化

通过socket连接nginx php-fpm 性能优化 转

http://home.hhzx.com.cn/home.php?mod=space&uid=3&do=blog&id=1012

Nginx、MySQL 和 PHP-FPM 优化

前面提及了 VPS 优化最基础的部分 -选择合适的 Linux 发行版,在安装好系统后,接下来就要部署 web 服务环境了,选择什么 web 服务器软件是 VPS 最好的选择呢?我建议 Nginx 或 Lighttpd,两者都是轻量级的 web 服务器软件,和 Apache 相比占用资源更少,但是并发性能更好。这里以 Nginx 为例。

安装 Nginx + PHP + MySQL

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

MySQL 优化

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 缓存可以很大程度上改善性能。

Nginx 优化

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

PHP-FPM 优化

下列参数针对 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/


你可能感兴趣的:(nginx,mysql,PHP,优化,buffer,服务器软件)