系统:CentOS 5.2 64位

 Nginx:0.9.5

 php:5.3.5

 MySQL:5.1.30

一. 安装Nginx

    1. 首先确保有gcc环境

       #yum install gcc gcc-c++

    2. pcre的安装

       #tar zxvf pcre-8.00.tar.gz

       #cd pcre-8.00

       #./configure ; make ;make install

     3. nginx的安装

        #tar zxvf nginx-0.9.5.tar.gz

        #cd nginx-0.9.5

  #./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module 

        #make ;make install

         在这里我刚开始安装的时候使用了两个参数“ --with-http_

ssl_module ”“ --with-md5=/usr/lib”后来make的时候一直报错,查了好多资料,纠结了半天,后来去除了这两个参数就好了。

    make[1]: *** [/server/openssl/openssl/include/openssl/ssl.h] Error 2

4. 安装gd和lib相关包。

    所用包如下:

      gd-2.0.35.tar.gz

      libiconv-1.12.tar.gz
      libmcrypt-2.5.8.tar.gz

      mhash-0.9.9.tar.gz

     1)安装GD

      #tar zxvf gd-2.0.35.tar.gz

      #cd gd-2.0.35

      #./configure --prefix=/usr/local/gd2 ;make ;make install

     2)安装libiconv

      #tar zxvf libiconv-1.12.tar.gz ;cd libiconv-1.12

      #./configure --prefix=/usr ;make ;make install

      3)安装libmcrypt

      #tar zxvf libmcrypt-2.5.8.tar.gz ;cd libmcrypt-2.5.8

      #./configure --prefix=/usr ;make ;make install

      4)安装mhash

      #tar zxvf mhash-0.9.9.tar.gz ;cd mhash-0.9.9

      #./configure --prefix=/usr ;make ;make install

      5)编辑ld.so.conf文件

      #vim /etc/ld.so.conf

      改正后的文件内容如下:

       /usr/lib

       include ld.so.conf.d/*.conf

       /usr/lib

       保存退出!

 

     5. 安装好了之后,我们来测试nginx的安装结果:

     #/usr/local/nginx/sbin/nginx -t

     返回如下结果,证明nginx没问题:

 

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

      我刚装完运行测试报了如下错误:

      nginx [emerg]: getpwnam(“www”) failed

      解决办法:

       编辑nginx配置文件,去掉“user nobody”前面的注释即可!

       #vim /usr/local/nginx/conf/nginx.conf

       去掉#user nobody前面的“#”,保存退出就可以了!

       启动nginx

       #/usr/local/nginx/sbin/nginx

       查看80端口:

       #netstat -tunlp |grep 80

       ok

       用ie访问出现如下画面:

            Welcome to Nginx!

二。安装MySQL-5.1.30

    #tar zxvf mysql-5.1.30.tar.gz

    #cd mysql-5.1.30

    #./configure --prefix=/usr/local/mysql --localstatedir=/data/mysqll/data --with-comment=Source --with-server-suffix=-Linuxtone.Org --with-mysqld-user=mysql --with-out-debug --with-big-tables --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all --with-pthread --enable-static --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --with-plugins=all --without-ndb-debug

   出现如下画面证明编译成功:

 

CentOS 5.2编译安装LNMP_centos

   #make ;make install

2. 报错解决:

   1)错误1   

我刚开始安装选择的参数有一个“--with-collation=utf8_chinese_ci”,在编译时报错如下:

   Collation utf8_chinese_ci is not valid for character set utf8.

      Valid collations are: utf8_general_ci utf8_bin utf8_czech_ci utf8_danish_ci utf8_esperanto_ci utf8_estonian_ci utf8_hungarian_ci utf8_icelandic_ci utf8_latvian_ci utf8_lithuanian_ci utf8_persian_ci utf8_polish_ci utf8_romanian_ci utf8_slovak_ci utf8_slovenian_ci utf8_spanish2_ci utf8_spanish_ci utf8_swedish_ci utf8_turkish_ci utf8_unicode_ci.
      See the Installation chapter in the Reference Manual.

它的意思是对于character set utf8,utf8_chinese_ci 的定序是不可用的,可用的定序是:utf8_general_ci utf8_bin utf8_czech_ci utf8_danish_ci utf8_esperanto_ci utf8_estonian_ci utf8_hungarian_ci utf8_icelandic_ci utf8_latvian_ci utf8_lithuanian_ci utf8_persian_ci utf8_polish_ci utf8_romanian_ci utf8_slovak_ci utf8_slovenian_ci utf8_spanish2_ci utf8_spanish_ci utf8_swedish_ci utf8_turkish_ci utf8_unicode_ci中的任何一种。

解决的办法如下:

  我将--with-collation=utf8_chinese_ci更改为“utf8_general_ci”后解决。

  2)错误2

    报错如下:

checking for termcap functions library... configure: error: No curses/termca

解决的办法:

  用yum安装ncurses、ncurses-devel

   #yum install ncurses ncurses-devel -y

  再次编译就不会报相同的错误了!

3. 配置mysql

   1)新建用户

   #useradd mysql -d /data/mysql -s/sbin/nologin

   2)安装默认数据库

   #/usr/local/mysql/bin/mysql_install_db --user=mysql

   3)设定相关目录权限

   #cd /usr/local/mysql

   #chown -R root:mysql .

   #mkdir -p /data/mysql/data

   #chown -R mysql /data/mysql/data

   复制配置文件:

   #cp share/mysql/my-huge.cnf /etc/my.cnf

   复制启动文件:

   #cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld

   #chmod 755 /etc/rc.d/init.d/mysqld

   添加服务

   #chkconfig --add mysqld

   启动服务:

   #server mysqld start

   检测mysql服务启动情况:

   #netstat -tunlp |grep 3306

   

三。PHP的安装:

 php和nginx的整合是通过php-FastCGI 

    FastCGI 是一个可伸缩、高速的在web server和脚本语言间通迅的接口。被许多脚本语言所支持,包括 php

    多数流行的web server都支持 FastCGI。

    正常情况下,nginx和php直接是完全不认识的,我们就是通过php-fastcgi将二者整合。

    php5.3.0之前的版本,php-FastCGI 是需要单独安装的。但是在这之后,php-FastCGI 就整合在了php的源码包中,不必再去单独安装。我用的就是php5.3.5的版本,内置了php-fpm ,编译时开启,并且编译后不存在 php-cgi 文件了

   1. 安装php

      #tar zxvf php-5.3.5.tar.gz

      #./buildconf --force

      出现了如下所示的错误:

      Forcing buildconf

buildconf: checking installation...

buildconf: autoconf not found.

           You need autoconf version 2.13 or newer installed

           to build PHP from SVN.

make: *** [buildmk.stamp] 错误 1

  原因是安装未安装autoconf或者安装的版本不是2.13,用yum安装即可

    #yum install autoconf213

    设置环境变量:

    #export PHP_AUTOCONF=/usr/bin/autoconf-2.13

    然后再次./buildconf --force,出现如下的画面就可以了:

 

CentOS 5.2编译安装LNMP_centos_02

    编译:

    #./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpm --enable-discard-path --enable-force-cgi-redirect-with-config-file-path=/usr/local/php/etc --enable-zend-multibyte --with-mysql=/usr/local/mysql --with-libxml-dir --with-xmlrpc --with-gd=/usr/local/gd2/ --with-jpeg-dir --with-png-dir --with-bz2 --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-curl --with-curlwrappers --with-openssl --with-mcrypt --with-mhash --enable-pcntl --enable-sockets --enable-sysvsem --enable-inline-optimization --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-debug --disable-ipv6 

   make ;make install

 

2. 修改配置文件

安装完成之后,复制php.ini-production 到安装目录下的etc/目录下

 #cp  php.ini-production /usr/local/php/etc/

 #cd  /usr/local/php/etc/   切换到安装目录下的配置文件目录

 #cp  php-fpm.conf.default  php-fpm.conf

修改php-fpm.conf 启用如下几行,即去掉前面的分号(;)
    pid = run/php-fpm.pid
    error_log = log/php-fpm.log
    log_level = notice
    listen = 127.0.0.1:9000
    listen.allowed_clients = 127.0.0.1
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    pm.max_requests = 500
    env[HOSTNAME] = $HOSTNAME
    env[PATH] = /usr/local/bin:/usr/bin:/bin
    env[TMP] = /tmp
    env[TMPDIR] = /tmp
    env[TEMP] = /tmp

3. 制作启动脚本

vim /etc/init.d/php-fpm
    内容如下:
      #! /bin/sh


    ### BEGIN INIT INFO

    # Provides:          php-fpm

    # Required-Start:    $remote_fs $network

    # Required-Stop:     $remote_fs $network

    # Default-Start:     2 3 4 5

    # Default-Stop:      0 1 6

    # Short-Description: starts php-fpm

    # Description:       starts the PHP FastCGI Process Manager daemon

    ### END INIT INFO


    prefix=/usr/local/php

    exec_prefix=${prefix}


    php_fpm_BIN=${exec_prefix}/sbin/php-fpm

    php_fpm_CONF=${prefix}/etc/php-fpm.conf

    php_fpm_PID=${prefix}/var/run/php-fpm.pid



    php_opts="--fpm-config $php_fpm_CONF"



    wait_for_pid () {

        try=0


        while test $try -lt 35 ; do


            case "$1" in

                'created')

                if [ -f "$2" ] ; then

                    try=''

                    break

                fi

                ;;


                'removed')

                if [ ! -f "$2" ] ; then

                    try=''

                    break

                fi

                ;;

            esac


            echo -n .

            try=`expr $try + 1`

            sleep 1


        done


    }


    case "$1" in

        start)

            echo -n "Starting php-fpm "


            $php_fpm_BIN $php_opts


            if [ "$?" != 0 ] ; then

                echo " failed"

                exit 1

            fi


            wait_for_pid created $php_fpm_PID


            if [ -n "$try" ] ; then

                echo " failed"

                exit 1

            else

                echo " done"

            fi

        ;;


        stop)

            echo -n "Gracefully shutting down php-fpm "


            if [ ! -r $php_fpm_PID ] ; then

                echo "warning, no pid file found - php-fpm is not running ?"

                exit 1

            fi


            kill -QUIT `cat $php_fpm_PID`


            wait_for_pid removed $php_fpm_PID


            if [ -n "$try" ] ; then

                echo " failed. Use force-exit"

                exit 1

            else

                echo " done"

            fi

        ;;


        force-quit)

            echo -n "Terminating php-fpm "


            if [ ! -r $php_fpm_PID ] ; then

                echo "warning, no pid file found - php-fpm is not running ?"

                exit 1

            fi


            kill -TERM `cat $php_fpm_PID`


            wait_for_pid removed $php_fpm_PID


            if [ -n "$try" ] ; then

                echo " failed"

                exit 1

            else

                echo " done"

            fi

        ;;


        restart)

            $0 stop

            $0 start

        ;;


        reload)


            echo -n "Reload service php-fpm "


            if [ ! -r $php_fpm_PID ] ; then

                echo "warning, no pid file found - php-fpm is not running ?"

                exit 1

            fi


            kill -USR2 `cat $php_fpm_PID`


            echo " done"

        ;;


        *)

            echo "Usage: $0 {start|stop|force-quit|restart|reload}"

            exit 1

        ;;


    esac 

 

#chmod -R 777 /etc/init.d/php-fpm 

启动 php-fpm

 /etc/init.d/php-fpm  start

 

4. 查看端口 9000

  #netstat -tunlp |grep 9000

 

5. 最后 需要更改一下nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

去掉下面语句前的注释

error_log /var/log/nginx/error.default.log;            #开启错误日志
pid /usr/local/webserver/nginx/nginx.pid;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;

 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
       #
        location ~ .*\.(php|php5)?$
        {
                        fastcgi_pass  127.0.0.1:9000;
                        fastcgi_index index.php;
                        include fastcgi.conf;
         }

保存退出后 重启nginx

#ps aux |grep nginx

看一下nginx的pid 

  #kill -9 pid的号码 

启动nginx

#/usr/local/nginx/sbin/nginx

 

 

   6. 报错

     1)错误1

        错误提示:

configure: error: xml2-config not found. Please check your libxml2 installation

      yum 安装libxml2和libxml2-devel两个包

       #yum install libxml2 libxml2-devel -y

       重新编译就不会出现这个问题了。