nginx+php+mysql性能优化配置

时间: 2010-06-03 / 分类: linux 技术, 系统运维 / 浏览次数: 1,194 views / 1个评论 发表评论

自己调试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下吧!

1个评论

  1. rambojones
    2010/10/30 于 02:04:44

    Hey, something is wrong with your site in Opera, you should check into it.

发表评论

您的昵称 *

您的邮箱 *

您的网站