系统环境:Centos6.2

软件环境:Nginx1.1.9 + Mysql5.5.18 + PHP5.3.10

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

2、安装php扩展包

   tar zxvf libiconv-1.13.1.tar.gz 
   cd libiconv-1.13.1
    ./configure –prefix=/usr/local
   make
   make install

   tar zxvf libmcrypt-2.5.8.tar.gz 
   cd libmcrypt-2.5.8
    ./configure 
   make install
   /sbin/ldconfig 
   cd libltdl/
   ./configure –enable-ltdl-install
   make
   make install
   ln -sv /usr/local/lib/libmcrypt.* /usr/lib/
   ln -sv /usr/local/bin/libmcrypt-config /usr/bin/

   tar zxvf mhash-0.9.9.9.tar.gz 
   cd mhash-0.9.9.9
  ./configure 
   make;make install
   ln -sv /usr/local/lib/libmhash.* /usr/lib/

   tar zxvf mcrypt-2.6.8.tar.gz 
   cd mcrypt-2.6.8
   ldconfig 
   ./configure
   make;make install

3、安装Mysql

tar zxvf cmake-2.8.6.tar.gz
cd cmake-2.8.6
 ./bootstrap 
gamke;make install

 tar zxvf mysql-5.5.18.tar.gz 
 cd mysql-5.5.18
 groupadd mysql
 useradd -g mysql -s /sbin/nologin mysql
 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci  -DEXTRA_CHARSETS=all -DMYSQL_TCP_PORT=3306 -DWITH_DEBUG=OFF -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock
 make;make install
 ln -sv /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/
 ln -sv /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
不需要mysql的话以下步骤请无视之:
 mv /etc/my.cnf  /etc/my.cnf.bak
 cp my.cnf  /etc/
 chmod 755 mysql-5.5.18/scripts/mysql_install_db
  ./mysql-5.5.18/scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/data/mysql
 cp mysql-5.5.18/support-files/mysql.server /etc/init.d/mysql
 chmod 755 /etc/init.d/mysql 
 chkconfig mysql on
 service mysql restart
 /usr/local/mysql/bin/mysqladmin -uroot password www.wisp888.com

4、安装PHP

tar jxvf php-5.3.10.tar.bz2
cd php-5.3.10
./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc –with-mysql=/usr/local/mysql –with-mysqli=/usr/local/mysql/bin/mysql_config –with-iconv-dir=/usr/local –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –disable-rpath –enable-safe-mode –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curl –with-curlwrappers –enable-mbregex –enable-fpm –enable-mbstring –with-mcrypt –with-gd –enable-gd-native-ttf –with-openssl –with-mhash –enable-pcntl –enable-sockets –with-ldap –with-ldap-sasl –with-xmlrpc –enable-zip –enable-soap

其中编译出错如下:
configure: error: Cannot find ldap libraries in /usr/lib.
解决办法:
ln -sv /usr/lib64/libldap* /usr/lib/

接着安装php
make ZEND_EXTRA_LIBS=’-liconv’
make install
cp php.ini-production /usr/local/php/etc/php.ini
sed -i ‘s@; output_buffering@output_buffering=on@’ /usr/local/php/etc/php.ini
sed -i ‘s@;cgi.fix_pathinfo=1@cgi.fix_pathinfo=0@’ /usr/local/php/etc/php.ini
 sed -i ‘s@; extension_dir = “./”@extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626″@’ /usr/local/php/etc/php.ini
cd ..
cp php-fpm.conf /usr/local/php/etc/php-fpm.conf
echo “/usr/local/php/sbin/php-fpm” >> /etc/rc.local

5、安装php扩展模块

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
sed -i ’810aextension = “memcache.so”‘ /usr/local/php/etc/php.ini

tar xvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
/usr/local/php/bin/phpize
./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config
make;make install
mkdir -p /usr/local/eaccelerator_cache
sed -i ’810aextension = “pdo_mysql.so”‘ /usr/local/php/etc/php.ini
cat >> /usr/local/php/etc/php.ini << “EOF”
[eaccelerator]
zend_extension=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so”
eaccelerator.shm_size=”64″
eaccelerator.cache_dir=”/usr/local/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″
EOF

tar xvf 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
 sed -i ’810aextension = “imagick.so”‘ /usr/local/php/etc/php.ini

tar xvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure
make
make install

其中make的时候会报错:
BEGIN failed–compilation aborted at Makefile.PL line 24.
make[1]: *** [PerlMagick/Makefile] Error 2
make[1]: Leaving directory `/root/ImageMagick-6.4.9-10′
make: *** [all] Error 2
解决办法:
yum -y install perl-CPAN

tar xvf imagick-2.3.0.tgz
cd imagick-2.3.0
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make;make install

6、安装nginx

unzip pcre-8.20.zip
cd pcre-8.20
./configure
make;make install
cd ..
tar xvf nginx-1.1.8.tar.gz
cd nginx-1.1.8
mkdir -p /data/www/logs
groupadd www
useradd -m www -g www -s /sbin/nologin -d /usr/local/nginx
chown -R www:www /data/www
./configure  –prefix=/usr/local/nginx  –with-http_stub_status_module –with-http_ssl_module –user=www –group=www –with-http_realip_module –with-http_flv_module –with-http_gzip_static_module
make;make install
mv /usr/local/nginx/conf/nginx.conf{,.bak}
cd ..
cp nginx.conf /usr/local/nginx/conf/nginx.conf
cat > /usr/local/nginx/conf/fcgi.conf << “EOF”
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

fastcgi_param  REDIRECT_STATUS    200;
EOF

echo “ulimit -SHn 65535″ >> /etc/rc.local
echo “/usr/local/nginx/sbin/nginx” >> /etc/rc.local

7、安装memcached内存缓存工具

tar xvf libevent-2.0.11-stable.tar.gz
cd libevent-2.0.11-stable
./configure 
 make;make install
ln -sv /usr/local/lib/libevent-2.0.so.5 /usr/lib/
ln -sv /usr/local/lib/libevent-2.0.so.5 /usr/lib64/

tar xvf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure –prefix=/usr/local/memcached –with-libevent=/usr
make;make install
echo “/usr/local/memcached/bin/memcached -d -m 256 -p 11211 -u www 127.0.0.1″ >> /etc/rc.local

8、优化内核参数

cat > /etc/sysctl.conf << “EOF”
# Add
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog =  32768
net.core.somaxconn = 32768

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800

#net.ipv4.tcp_fin_timeout = 30
#net.ipv4.tcp_keepalive_time = 120
net.ipv4.ip_local_port_range = 1024  65535
kernel.shmmax = 128000000
EOF

/sbin/sysctl -p

9、启动服务

/usr/local/php/sbin/php-fpm
/usr/local/nginx/sbin/nginx
/usr/local/memcached/bin/memcached -d -m 256 -p 11211 -u www 127.0.0.1