1. 安装所需各种依赖包

yum –y install

gcc gcc-c++ autoconf automakebison flex freetype freetype-devel fontconfig-devel gettext-devel libjpeglibjpeg-devel libpng libpng-devel libxml2 libxml2-devel libtool libtool-ltdllibtool-ltdl-devel libtiff-devel libXpm-devel libicu libicu-devel libidn libidn-devellibxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-develkrb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldapopenldap-clients openldap-servers pcre pcre-devel pam-devel vim-enhanced mysql-devel php-devel libevent libevent-devel libjpeg-devel

2.准备lnmp其他的源代码包

wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.8.46.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.14.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.14-fpm-0.5.14.diff.gz
wget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.1.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz
wget http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-8.10.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
wget http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz
wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.3.0.tgz

3.安装php-5.3.28源代码包所需要的函数支持包

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

(libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换)

tar zxvf libmcrypt-2.5.8.tar.gz 
cd libmcrypt-2.5.8/
./configure --prefix=/usr/local

make
make install

/sbin/ldconfig

cd libltdl/
./configure --prefix=/usr/local --enable-ltdl-install
make
make install
cd ../../

(libmcrypt是加密算法扩展库。支持DES,3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256,ARCFOUR, SERPENT,SAFER+等算法。)

tar zxvf mhash-0.9.9.9.tar.gz

cd mhash-0.9.9.9/
./configure --prefix=/usr/local

make &&make install
cd ../(加密算法支持)
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/

/sbin/ldconfig

LD_LIBRARY_PATH=/usr/local/lib ./configure --prefix=/usr/local/

make
make install
cd ../

4. 编译安装MySQL5.1.73-m3

groupadd mysql
useradd -s /sbin/nologin -g mysql -M mysql

mkdir -p /var/lib/mysql

#创建数据存放目录

chown -R mysql:mysql /var/lib/mysql

mkdir -p /usr/local/mysql/

tar zxvf mysql-5.1.73-m3.tar.gz
cd mysql-5.1.73-m3
./configure --prefix=/usr/local/mysql --datadir=/var/lib/mysql --with-unix-socket-path=/tmp/mysql.sock --with-charset=utf8 --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --enable-assembler --with-plugins=innobase --with-plugins=partition --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static 

make &&make install        #编译安装                                   

 #############################################################################

--prefix=/usr/local/mysql//MySQL安装目录 --datadir=/var/lib/mysql  //数据库存放目录 
--with-charset=utf8 //使用UTF8格式 
--with-extra-charsets=complex //安装所有的扩展字符集 
--enable-thread-safe-client //启用客户端安全线程 
--with-big-tables //启用大表 
--with-ssl //使用SSL加密 
--with-embedded-server //编译成embeddedMySQLlibrary (libmysqld.a), 
--enable-local-infile //允许从本地导入数据 
--enable-assembler //汇编x86的普通操作符,可以提高性能 
--with-plugins=innobase //数据库插件 
--with-plugins=partition //分表功能,将一个大表分割成多个小表

cp support-files/my-medium.cnf /etc/my.cnf  

chown -R mysql:mysql /etc/my.cnf          

 #准备mysql配置文件

chown-R mysql:mysql /usr/local/mysql/

chown -R mysql:mysql /usr/local/mysql/var/

#把MySQL目录的权限给MySQL用户和组 
/usr/local/mysql/bin/mysql_install_db --user=mysql
#用MySQL来初始化数据库,安装mysql和test数据库

cp /usr/local/mysql-5.1.73/support-files/mysql.server /etc/init.d/mysqld 

chmod 755 /etc/init.d/mysqld 

chkconfig --add mysqld 
chkconfig mysqld on 
service mysqld restart

#启动mysql服务

/usr/local/mysql/bin/mysqld_safe --user=mysql &

#把初始化的数据库目录给MySQL所有者

 /usr/local/mysql/bin/mysqladmin -uroot password  123#修改mysql登录密码为123
/usr/local/mysql/bin/mysql -uroot -p123 
#用mysql登录

登陆测试: 

#cd /usr/local/mysql/bin 
#mysql 
>show databases; 

# MySQL安装结束

5.编译安装PHP(FastCGI模式。使用fastCGI管理php,加快php解析速度)

tar zxvf php-5.3.28.tar.gz
gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.3.28 -p1
#-p  1    是数字
#解压并打补丁,让php支持fpm来方便管理php-cgi进程(使用php-fpm管理fastCGI)

#gzip   -c  保留源文件  -d  解压

cd php-5.3.28/

./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-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --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 

make ZEND_EXTRA_LIBS='-liconv'
#编译过程设定变量(编译过程需要)
make install

cp php.ini-dist /usr/local/php/etc/php.ini

( 若没有php.ini-dist这个文件,则改名:php.ini-production> php.ini-recommended   ; php.ini-development> php.ini-dist  )
cd ../

6.准备编译安装PHP5扩展模块

tar zxvf memcache-2.2.5.tgz

cd memcache-2.2.5/
/usr/local/php/bin/phpize

./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config

make &&make install
cd ../

tar jxvf eaccelerator-0.9.6.1.tar.bz2cd eaccelerator-0.9.6.1//usr/local/php/bin/phpize./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-configmakemake installcd ../(eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍)tar zxvf PDO_MYSQL-1.0.2.tgzcd 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/mysqlmakemake installcd ..

/tar zxvf ImageMagick.tar.gzcd ImageMagick-6.5.1-2/./configure --prefix=/usr/localmakemake installcd ../(ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式)tar zxvf imagick-2.3.0.tgzcd imagick-2.3.0//usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmakemake installcd ../

cp /usr/local/php/php-5.3.28/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

chmod 755 /etc/init.d/php-fpm这时候还不能使用/etc/init.d/php-fpm start启动,需修改一下php-fpm配置文件才可以,配置文件位置php安装目录 etc 目录下,默认有个参考文件.
cp php-fpm.conf.default php-fpm.conf

vi php-fpm.conf
,pm.start_servers = 20
,pm.min_spare_servers = 5
,pm.max_spare_servers = 35

7.修改php.ini文件,让php模块生效

#cd /usr/local/php/php-5.3.28/ext/ftp

#/usr/local/php/bin/phpize

vi /usr/local/php/etc/php.ini

查找extension_dir="./"修改为:extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"手工添加
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "imagick.so"再查找output_buffering=Off修改为output_buffering=On再查找 ;cgi.fix_pathinfo=0修改为cgi.fix_pathinfo=0,防止Nginx文件类型错误解析漏洞

8.配置eAccelerator加速PHP:

mkdir -p /usr/local/eaccelerator_cache 

#准备eaccelerator缓存目录

vi /usr/local/php/etc/php.ini

到配置文件的最末尾,粘上以下内容:
[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"

9.准备php-cgi和nginx进程执行者用户

groupadd nginx

useradd -s /sbin/nologin -g nginx -M nginx

10.创建php-fpm配置文件-php-fpm.conf

vi  /usr/local/php/etc/php-fpm.conf
php_flag[display_errors] =off

#off改成on,页面上会输出错误日志.  取消注释

unix user of processes     <valuename="user">nginx</value>      Unix group of processes      <valuename="group">nginx</value>                        

#去掉相应注释,为FastCGI指定用户,可使用默认的nobody,也可另行指定。 取消注释

    pm.max_children = 64
#最大子进程数128,如果内存小于2G,则64个最佳
rlimit_files = 65535
# Set open file desc rlimit,同时打开的文件数,linux系统允许同时打开的文件数为1024,修改linux系统中允许同时打开的文件,ulimit-SHn65535,而且这个参数重启后还能生效,加到/etc/profile全局配置文件的最后,开机就会生效,ulimit-a查看openfiles65535
       ulimit  用户控制shell启动进程所占用的资源
             -H  设定硬性资源限制,也就是管理员设定的限制
             -S   设定软性资源限制,弹性限制
             -n   设定可同时打开的最大文件个数
             -f    设定单个文件最大大小
             -a   查看目前的限制
pm.max_requests = 64
#最大请求数,Howmuch requests each process should executebefore respawn.一个子进程能够回应1042个请求11. 启动php-cgi(fastcgi)进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为nginx:

/usr/local/php/sbin/php-fpm start
#启动php-cgi
/usr/local/php/sbin/php-fpm reload
#重新加载配置文件
/usr/local/php/sbin/php-fpm stop
#关闭php-fpm,此时nginx肯定连不上php

##Php-fpm启动:

/etc/init.d/php-fpm start

11.安装Nginx所需的pcre库

tar zxvf pcre-8.10.tar.gz
cd pcre-8.10/
./configure --prefix=/usr/local
make && make install
cd ../

yum install pcre* //如过你已经装了,请跳过这一步

#为了支持rewrite功能,我们需要安装pcre

yum install openssl*

#安装openssl

#需要ssl的支持,如果不需要ssl支持,请跳过这一步

yum install zlib-devel

# gzip 类库安装

12.安装Nginx

tar zxvf nginx-1.6.1.tar.gz

cd nginx-1.6.1/

./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module

make && make install
cd ../

为Nginx添加proxy_cache模块,对视频进行缓存

wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz

tar zxvf ngx_cache_purge-2.0.tar.gz
nginx和ngx_cache_purge必须在同一级目录

cd nginx-1.6.1
/usr/local/nginx/sbin/nginx –V

#查看编译参数

./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=../ngx_cache_purge-2.0

make &&make install

vi /usr/local/nginx/conf/nginx.conf

user  nginx nginx;               #定义Nginx运行的用户和用户组

worker_processes  2;

error_log logs/error.log;

pid       logs/nginx.pid;       #文件描述符数量

worker_rlimit_nofile 65535;

events                           #工作模式与连接数上限

{

    use epoll;

   worker_connections 102400;

}

http                             #设定http服务器

 {

   include      mime.types;

   default_type  application/octet-stream;

    #charsetutf-8;

 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

   access_log  logs/access.log  main;

   server_names_hash_bucket_size 128;

   client_header_buffer_size 32k;

   large_client_header_buffers 4 64k;

    sendfile       on;

   tcp_nopush     on;

   keepalive_timeout 120;

  #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。

   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;

  #gzip模块设置

    gzip on;

   gzip_min_length 1k;

   gzip_buffers 4 16k;

   gzip_http_version 1.0;

   gzip_comp_level 2;

   gzip_types text/plain application/x-javascript text/css application/xml;   #压缩类型

   gzip_vary              on;

#limit_zonecrawler$binary_remote_addr10m;        #开启限制IP连接数的时候需要使用

    server

     {

       listen      80;                                           #监听端口

       server_name 127.0.0.1;                     #主机名,或IP。如果是主机名,要能够DNS解析

       location / {

           root  html;                                           #网站主目录。/usr/local/nginx/html/

           index index.html index.htm index.php;        #默认网页顺序

                   }

       error_page  500 502 503 504  /50x.html;

        location=/50x.html {

           root  html;

                             }

    #limit_conn   crawler 20;

   location ~ .*\.(php|php5)?$           #正则表达式:碰到网页文件名是.php或.php5结尾

  {

   root          html;

   fastcgi_pass  127.0.0.1:9000;         #连接fastcgi,用来解析php语句

   fastcgi_index index.php;              #首页为index.php

   fastcgi_param SCRIPT_FILENAME /usr/loal/nginx/html$fastcgi_script_name;  #启动fast-cgi

   include       fastcgi.conf;         #包括fastcgi_params中参数

   }

    location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$

    {

     expires     30d;                   #图片格式缓存30天

    }

    location ~.*\.(js|css)?$

    {

     expires     1h;                     #js/css缓存2小时

    }

     }

}

13.配置开机启动nginx,php-fpm,ulimit


1)Vi /etc/rc.local
/usr/local/nginx/sbin/nginx
/usr/local/php/sbin/php-fpm start

/usr/local/mysql/bin/mysqld_safe  --user=mysql  &

2)ulimit
Vi /etc/profile
ulimit -SHn 6553517.检查nginx配置文件语句错误
/usr/local/nginx/sbin/nginx -t18.平滑重启nginx进程
1)Pkill -HUP nginx
2)kill -HUP `pgrep -uroot nginx`
   Pgrep  -uroot  nginx  取出nginx主进程PID
3)/usr/local/nginx/sbin/nginx -s reload

19.测试是否安装成功:

在/usr/local/nginx/html/创建一个php 页面进行测试。(测完记得删除)

# vim /usr/local/nginx/html/info.php
<?php 
        phpinfo(); 
?>

 访问页面进行测试。http://your_website/info.php