nginx+php+mysql性能优化配置
自己调试nginx 服务器已经运行几个月了,总体还是感觉不错,一直没有时间给写下来,今天难的有些时间,就把安装教材写了下
一, 所需软件包安装
1 | yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers automake |
二,编译安装Mysql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.44.tar.gz useradd -s /sbin/nologin mysql ./configure \ --prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static \ --with-client-ldflags=-all-static \ --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \ --with-charset=utf8 \ --with-collation=utf8_general_ci \ --with-plugins=innobase \ --with-extra-charsets=all make && make install cp support-files/my-medium.cnf /etc/my.cnf #加载mysql路径 export PATH=$PATH:/usr/local/mysql/bin/ mysql_install_db --user=mysql chown –R mysql /usr/local/mysql mysqld_safe --user=mysql & cp share/mysql/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld chkconfig -–add mysqld /etc/init.d/mysqld restart |
四, 编译php
1 2 3 4 5 6 7 | #不编译, php的liconv编译方式将会报错,已经有更新版本. wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz tar zxvf libiconv-1.13.tar.gz cd libiconv-1.13/ ./configure make make install |
1 2 3 4 5 6 7 8 9 10 11 12 13 | wget http://cn.php.net/distributions/php-5.2.12.tar.bz2
tar zxf php-5.2.12.tar.bz2
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=/usr/local/mysql/bin/mysql_config --with-zlib --with-gd --enable-shmop --enable-sockets --enable-sysvsem --enable-fastcgi --enable-sysvshm --enable-magic-quotes --enable-mbstring --with-iconv --enable-bcmath --with-openssl --with-curl --with-mhash --with-mcrypt --with-jpeg-dir=/usr --with-png-dir=/usr --with-xmlrpc --with-mysql=/usr/local/mysql --with-libdir=lib 64的系统为lib64
make ZEND_EXTRA_LIBS='-liconv'
make install
如提示错误:
# error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
1,如果是64为的系统, 将会error 将/usr/local/lib/libi* 拷到/usr/lib64下
2,在/etc/ld.so.conf中加一行/usr/local/lib,
然后运行/sbin/ldconfig
在重新执行make make ZEND_EXTRA_LIBS='-liconv' && make install
cp php.ini-dist /usr/local/webserver/php/etc/php.ini |
五, 编译安装 PHP5扩展模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | wget <a href="http://pecl.php.net/get/memcache-2.2.5.tgz" target="_blank">http://pecl.php.net/get/memcache-2.2.5.tgz</a> tar zxvf memcache-2.2.5.tgz cd memcache-2.2.5/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make make install cd ../ #eaccelerator 已有更新版本,可以更新到0.9.6.1 , 注意打open_basedir 补丁 wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2 tar jxvf eaccelerator-0.9.5.3.tar.bz2 cd eaccelerator-0.9.5.3/ /usr/local/php/bin/phpize ./configure --enable-eaccelerator=shared --with-php-config=/usr/local /php/bin/php-config make make install cd ../ wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz tar zxvf PDO_MYSQL-1.0.2.tgz cd PDO_MYSQL-1.0.2/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql make make install cd ../ 也可以rpm安装 wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz tar zxvf ImageMagick.tar.gz cd ImageMagick-6.5.1-2/ ./configure make make install cd ../ wget http://pecl.php.net/get/imagick-2.3.0.tgz 检查最新版本 tar zxvf imagick-2.2.2.tgz cd imagick-2.2.2/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make make install cd ../ 修改php.ini文件 <strong>手工修改:</strong>查 找/usr/local/webserver/php/etc/php.ini中的extension_dir = "./" 修改为 extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/" 并在此行后增加以下几行,然后保存: extension = "memcache.so" extension = "pdo_mysql.so" extension = "imagick.so" 再查找 output_buffering = Off 修改为output_buffering = On 六,配置eAccelerator加速 PHP [eaccelerator] zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so" eaccelerator.shm_size="128" eaccelerator.cache_dir="/tmp/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="300" eaccelerator.shm_prune_period="120" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9" |
安装 fastcgi yum源 先确定系统位数
getconf LONG_BIT
如果是64则:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm #centos 6.0
如何是32则
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
yum 安装
yum install spawn-fcgi pcre pcre-devel # pcre 为nginx 依赖包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | vi /etc/init.d/fastcgi
#!/bin/sh
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="spawn-fcgi daemon"
NAME=spawn-fcgi
DAEMON=/usr/bin/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
d_start() {
$DAEMON -a 127.0.0.1 -p 9000 -C 10 -u www -g www -f /usr/local/php/bin/php-cgi > /dev/null 2>&1 || echo -n " already running"
}
d_stop() {
/usr/bin/killall -9 php-cgi > /dev/null 2>&1 || echo -n " not running"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 3
;;
esac
exit 0
#启动php
/etc/init.d/fastcgi restart |
七, 编译安装nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 到官网下载吧
先要创建用户
useradd -s /sbin/nologin www
tar zxvf nginx-0.7.51.tar.gz
cd nginx-0.7.51/
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
cd ../
chown -R www:www /usr/local/nginx/logs
修改配置文件 nginx.conf /常用配置/
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
server_name_in_redirect off;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#开启gzip 加速
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary 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;
open_file_cache max=204800 inactive=20s;
open_file_cache_min_uses 1;
open_file_cache_valid 30s;
fastcgi_cache_path /cache/proxy_cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=5g; #开启nginx cache, 100m 代表需消耗100的内存, 注意创建cache目录
fastcgi_temp_path /cache/proxy_temp;
在fastcgi_param文件中添加
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
开机启动
1 2 3 | ulimit -SHn 51200 /usr/local/nginx/sbin/nginx /etc/init.d/fastcgi start |
如果是有专门的magento的服务器,可能你还得把magento的缓存给做下,我做了,好像效果不是很大,就不写了,大家要做了,在google下吧!

2010/10/30 于 02:04:44
Hey, something is wrong with your site in Opera, you should check into it.