zoukankan      html  css  js  c++  java
  • nginx(五)nginx与php的安装配置

    经过前面学习,对nginx有个大概的了解,来配置LNMP;只要是在系统安装过程中选择安装比较齐全的包,基本上系统都能满足安装要求,下面是我一个一个测试的,基本上全部安装所需的库文件,放心安装;

    [root@mgmserver ~]# rpm -qa |grep zlib
    zlib-devel-1.2.3-3
    zlib-1.2.3-3

    [root@mgmserver tar_packet]# rpm -qa |grep openssl
    openssl-0.9.8e-12.el5
    openssl-devel-0.9.8e-12.el5

    [root@mgmserver tar_packet]# rpm -qa |grep pcre
    pcre-6.6-2.el5_1.7
    pcre-devel-6.6-2.el5_1.7

    [root@mgmserver tar_packet]# rpm -qa |grep gcc
    compat-libgcc-296-2.96-138
    compat-gcc-34-g77-3.4.6-4
    gcc-c++-4.1.2-46.el5
    libgcc-4.1.2-46.el5
    compat-gcc-34-3.4.6-4
    compat-gcc-34-c++-3.4.6-4
    gcc-java-4.1.2-46.el5
    gcc-4.1.2-46.el5
    gccp-gfortran-4.1.2-46.el5

    [root@mgmserver tar_packet]# rpm -qa |grep autoconf
    autoconf-2.59-12

    [root@mgmserver tar_packet]# rpm -qa |grep automake
    automake-1.9.6-2.1
    automake16-1.6.3-8
    automake15-1.5-16
    automake17-1.7.9-7
    automake14-1.4p6-13

    [root@mgmserver ~]# rpm -qa |grep libjpeg
    libjpeg-devel-6b-37
    libjpeg-6b-37

    [root@mgmserver ~]# rpm -qa |grep libpng
    libpng-1.2.10-7.1.el5_3.2
    libpng-devel-1.2.10-7.1.el5_3.2

    [root@mgmserver ~]# rpm -qa |grep freetype
    freetype-2.2.1-21.el5_3
    freetype-devel-2.2.1-21.el5_3

    [root@mgmserver ~]# rpm -qa |grep libxml2
    libxml2-python-2.6.26-2.1.2.8
    libxml2-2.6.26-2.1.2.8
    libxml2-devel-2.6.26-2.1.2.8

    [root@mgmserver ~]# rpm -qa |grep glibc
    glibc-2.5-42
    glibc-devel-2.5-42
    compat-glibc-2.3.4-2.26
    glibc-common-2.5-42
    compat-glibc-headers-2.3.4-2.26
    glibc-headers-2.5-42


    [root@mgmserver ~]# rpm -qa |grep glib2
    glib2-2.12.3-4.el5_3.1
    glib2-devel-2.12.3-4.el5_3.1

    [root@mgmserver ~]# rpm -qa |grep bzip2
    bzip2-devel-1.0.3-4.el5_2
    bzip2-libs-1.0.3-4.el5_2
    bzip2-1.0.3-4.el5_2

    [root@mgmserver ~]# rpm -qa |grep ncurses
    ncurses-devel-5.5-24.20060715
    ncurses-5.5-24.20060715

    [root@mgmserver ~]# rpm -qa |grep curl
    curl-devel-7.15.5-2.1.el5_3.5
    curl-7.15.5-2.1.el5_3.5

    [root@mgmserver ~]# rpm -qa |grep e2fsprogs
    e2fsprogs-libs-1.39-23.el5
    e2fsprogs-1.39-23.el5
    e2fsprogs-devel-1.39-23.el5

    [root@mgmserver ~]# rpm -qa |grep krb5
    pam_krb5-2.2.14-10
    krb5-auth-dialog-0.7-1
    krb5-libs-1.6.1-36.el5
    krb5-workstation-1.6.1-36.el5
    krb5-devel-1.6.1-36.el5

    [root@mgmserver ~]# rpm -qa |grep libidn
    libidn-0.6.5-1.1
    libidn-devel-0.6.5-1.1



    [root@mgmserver ~]# rpm -qa |grep nss_ldap
    nss_ldap-253-21.el5

    openldap 这个库缺少 
    [root@mgmserver ~]#yum install openldap* 

    [root@mgmserver ~]# rpm -qa |grep openldap 
    openldap-clients-2.3.43-3.el5
    openldap-2.3.43-3.el5
    openldap-devel-2.3.43-3.el5
    openldap-servers-2.3.43-3.el5
    openldap-servers-sql-2.3.43-3.el5
    openldap-servers-overlays-2.3.43-3.el5

     

    1、安装LNMP 所需的安装包有点多,要耐心.......,下载的链接张老师的博客上有:

    http://sysoev.ru/nginx/nginx-0.8.46.tar.gz

    #nginx主程序包

    http://www.php.net/get/php-5.2.14.tar.gz/from/this/mirror

    #PHP主程序包

     http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz

    #PHP的FastCGI进程管理补丁包

     http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.3-m3.tar.gz/from/http://mysql.he.net/

    #mysql主程序包

    http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz

     

    libiconv库是一个基于GNU协议的开源库,主要是解决多语言编码处理转换等应用问题;
    由于历史原因,国际化的文字常常由于语言或者国家的原因使用不同的编码。随着互联网时代的到来,通过互联网进行文字交流也逐渐增多:浏览外国的网站,这个时候字符编码的转换变得尤为重要。这带来了一个问题,就是许多字符在某一种编码方式中没有。为了解决这种混乱,Unicode的编码方式被建立。 Unicode是一种超级编码包含了所有这些编码的字符集,因此一些新的文本格式像XML的默认编码方式就是Unicode.
    但是很多老式的计算机还在使用当地的传统的字符编码方式。而一些程序,例如邮件程序和浏览器必须能在这些不同的用户编码之间作转换。其他的一些程序则内置支持Unicode,以顺利支持国际化的处理,但是仍然有在Unicode和其他的传统编码之间转换的需求。GNU的libiconv就是为这两种应用设计的编码转换库。libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换。

     

     

     

     

    http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0

    #安全线程加密库主程序包

    http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0

    #Mcrypt是一个功能强大的加密算法扩展库,它包括有22种算法


    http://pecl.php.net/get/memcache-2.2.5.tgz

    #memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。起初作者编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统, 这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!基于memcache作者对分布式 cache的理解和解决方案。 memcache完全可以用到其他地方 比如分布式数据库, 分布式计算等领域。 
     

    http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0

    #Mhash扩展库,Mhash扩展库支持12种混编算法

    ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gz

     

    #正则表达式扩展主程序包

    http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2

    #eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍;

    http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

    #PDO 是 PHP 数据对象的缩写, 是一种访问数据库的更便捷、安全的途径。通过该方式,数据库开发者可以更方便地写出移植性较高的代码。PDO 并不是类似于 PearDB 的数据库抽象层,而 更像一种采用了统一 API (应用编程接口)的数据访问层。

    如何启用PDO?要启用 PDO 配置,须打开 pdo 、pdo_sqlite、pdo_mysql等所的扩展模块

    http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz

    #是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。ImageMagick的大多数功能的使用都来源于命令行工具。通常来说,它可以支持以下程序语言: Perl, C, C++, Python, PHP, Ruby, Java

    http://pecl.php.net/get/imagick-2.3.0.tgz

    #一般用php处理图片都是使用GD库或者GD2的函数库,一般编译php环境都会搭上GD库,大多数开源程序也是用GD来处理图片的,但是它只能现实诸如调整大小、增加水印等基础功能,要想用GD来做复杂图形是非常困难的。

    基于命令行的图像处理软件ImageMagick,能实现非常丰富的功能。如果服务器上安装了ImageMagick,php脚本可以使用 shell命令来完成,也可以用php的原生函数库Imagick或者MagickWandForPHP函数来调用ImageMagick软件来实现。

    因为Linux系统下PHP往往没有执行shell的权限,直接用shell来操作ImageMagick不太可能,综合考虑,Imagick函数库连接到ImageMagick软件比较好,而且是面向对象方式的。

     

     

    2、安装php(fastcgi模式)

     

    (1)、安装php所需的支持库

     [root@mgmserver tar_packet]# tar -zxvf libiconv-1.13.1.tar.gz -C ../install_packet/
    [root@mgmserver libiconv-1.13.1]# ./configure --prefix=/usr/local
    [root@mgmserver libiconv-1.13.1]# make
    [root@mgmserver libiconv-1.13.1]# make install


    [root@mgmserver tar_packet]# tar -zxvf libmcrypt-2.5.8.tar.gz -C ../install_packet/

    [root@mgmserver libmcrypt-2.5.8]# ./configure

    [root@mgmserver libmcrypt-2.5.8]# make

    [root@mgmserver libmcrypt-2.5.8]# make install
    [root@mgmserver libltdl]# /sbin/ldconfig      (配置动态连接器(ld)运行时邦定)
    [root@mgmserver libltdl]# cd libltdl/
    [root@mgmserver libltdl]# ./configure --enable-ltdl-install
    [root@mgmserver libltdl]# make

    [root@mgmserver libltdl]# make install

    [root@mgmserver tar_packet]# tar -zxvf mhash-0.9.9.9.tar.gz -C ../install_packet/
    [root@mgmserver install_packet]# cd mhash-0.9.9.9/

    [root@mgmserver mhash-0.9.9.9]# ./configure
    [root@mgmserver mhash-0.9.9.9]# make
    [root@mgmserver mhash-0.9.9.9]# make install

    [root@server5 mhash-0.9.9.9]# ln -s /usr/local/lib/* /usr/lib     
    (这一步不用做了 ,做完成上面步骤后/usr/lib下面已经存在了)

    [root@localhost install_packet]# ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
    [root@localhost install_packet]# ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
    [root@localhost install_packet]# ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
    [root@localhost install_packet]# ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8


    [root@localhost install_packet]# ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
    [root@localhost install_packet]# ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
    [root@localhost install_packet]# ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
    [root@localhost install_packet]# ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
    [root@localhost install_packet]# ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1

    [root@localhost install_packet]# ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config


    [root@mgmserver tar_packet]# tar -zxvf mcrypt-2.6.8.tar.gz -C ../install_packet/
    [root@mgmserver mcrypt-2.6.8]# /sbin/ldconfig

    [root@mgmserver mcrypt-2.6.8]# ./configure
    [
    root@mgmserver mcrypt-2.6.8]# make
    [root@mgmserver mcrypt-2.6.8]# make install

     

    (2)、安装mysql

    [root@mgmserver tar_packet]# groupadd mysql
    [root@mgmserver tar_packet]# useradd -g mysql mysql
    [root@mgmserver tar_packet]#tar -zxvf mysql-5.5.3-m3.tar.gz -C ../install_packet/

    [root@mgmserver mysql-5.5.3-m3]# ./configure --prefix=/usr/local/mysql --enable-assembler --with-charset=utf8 --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock

    [root@mgmserver mysql-5.5.3-m3]# make
    [root@mgmserver mysql-5.5.3-m3]# make install
    [root@mgmserver mysql-5.5.3-m3]# cp support-files/my-large.cnf /etc/my.cnf
    [root@mgmserver mysql]# pwd
    /usr/local/mysql

     

     [root@mgmserver mysql]# bin/mysql_install_db --user=mysql
    Installing MySQL system tables...
    100903 13:30:41 [ERROR] /usr/local/mysql/libexec/mysqld: unknown variable 'thread_concurren                 cy=8'
    100903 13:30:41 [ERROR] Aborting

    100903 13:30:41 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete


    .......

    mysql 初始化报错,发现网上有哥们已经解决了这个问题,实在是强大,原因是my.cnf中有一行:

     

    thread_concurrency = 8

    thread_concurrency这个变量,意思是并发的线程数,并且根据给的解释是该参数取值为服务器逻辑CPU数量×2,而如果每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8。而我这个机器是ADM闪龙3000 单核的CPU,并不符合它的要求,所以它提示“unknown variable ‘thread_concurrency=8′”是个未知变量。对my.cnf做一些修改,把’thread_concurrency=8′注释掉
     

    重新初始化OK

    [root@mgmserver mysql]# bin/mysql_install_db --user=mysql
    Installing MySQL system tables...
    OK
    Filling help tables...
    OK

    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system

      ...........

    [root@localhost mysql]# chown -R root .
    [root@localhost mysql]# chown -R mysql var
    [root@localhost mysql]# chgrp -R mysql .
     

    [root@mgmserver mysql]# cp share/mysql/mysql.server /etc/init.d/mysqld
    [root@mgmserver mysql]# chkconfig --add mysqld
    [root@mgmserver mysql]# cd /etc/init.d/
    [root@mgmserver init.d]# chmod +x mysqld
    [root@mgmserver init.d]# chkconfig --list mysqld
    mysqld          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
    [root@mgmserver init.d]# service mysqld start
    Starting MySQL                                             [确定]




    [root@mgmserver init.d]# cp /usr/local/mysql/bin/* /sbin/
    [root@mgmserver init.d]# mysql
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 1
    Server version: 5.5.3-m3-log Source distribution

    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+
    4 rows in set (0.00 sec)


    mysql> exit
    Bye

    [root@mgmserver init.d]# mysqladmin -u root -h localhost password 'mysql'
    [root@mgmserver init.d]# mysql
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    [root@mgmserver init.d]#
    [root@mgmserver init.d]# mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 4
    Server version: 5.5.3-m3-log Source distribution

    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

    mysql> show databases;

    (3)、编译安装pHP (fastcgi模式)

    [root@mgmserver tar_packet]# tar -zxvf php-5.2.14.tar.gz -C ../install_packet/

     

    [root@mgmserver php-5.2.14]# pwd
    /home/install_packet/php-5.2.14

    [root@localhost install_packet]# gzip -cd php-5.2.14-fpm-0.5.14.diff.gz |patch -d php-5.2.14 -p1

    [root@mgmserver php-5.2.14]# ./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

    [root@mgmserver php-5.2.14]# make ZEND_EXTRA_LIBS='-liconv'

    [root@mgmserver php-5.2.14]# make install

    [root@mgmserver php-5.2.14]# cp php.ini-dist /usr/local/php/etc/php.ini

     (4)、安装PHP扩展


    [root@mgmserver tar_packet]# tar -zxvf memcache-2.2.5.tgz -C ../install_packet/
    [root@mgmserver memcache-2.2.5]# /usr/local/php/bin/phpize
    [root@mgmserver memcache-2.2.5]# ./configure --with-php-config=/usr/local/php/bin/php-config
    [root@mgmserver memcache-2.2.5]# make
    [root@mgmserver memcache-2.2.5]# make install
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/



    [root@mgmserver tar_packet]# tar -jxvf eaccelerator-0.9.6.1.tar.bz2 -C ../install_packet/
    [root@mgmserver install_packet]# cd eaccelerator-0.9.6.1/
    [root@mgmserver eaccelerator-0.9.6.1]# /usr/local/php/bin/phpize
    [root@mgmserver eaccelerator-0.9.6.1]# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
    [root@mgmserver eaccelerator-0.9.6.1]# make
    [root@mgmserver eaccelerator-0.9.6.1]# make install
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/


    [root@mgmserver tar_packet]# tar -zxvf PDO_MYSQL-1.0.2.tgz -C ../install_packet/
    [root@mgmserver install_packet]# cd PDO_MYSQL-1.0.2/
    [root@mgmserver PDO_MYSQL-1.0.2]# /usr/local/php/bin/phpize
    [root@mgmserver PDO_MYSQL-1.0.2]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-
    mysql=/usr/local/mysql
    [root@mgmserver PDO_MYSQL-1.0.2]# make
    [root@mgmserver PDO_MYSQL-1.0.2]# make install
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613

    [root@mgmserver tar_packet]# tar -zxvf ImageMagick.tar.gz -C ../install_packet/
    [root@mgmserver ImageMagick-6.5.1-2]# ./configure
    [root@mgmserver ImageMagick-6.5.1-2]# make
    [root@mgmserver ImageMagick-6.5.1-2]# make install




    [root@mgmserver tar_packet]# tar -zxvf imagick-2.3.0.tgz -C ../install_packet/
    [root@mgmserver install_packet]# cd imagick-2.3.0/
    [root@mgmserver imagick-2.3.0]# /usr/local/php/bin/phpize
    [root@mgmserver imagick-2.3.0]# ./configure --with-php-config=/usr/local/php/bin/php-config
    [root@mgmserver imagick-2.3.0]# make
    [root@mgmserver imagick-2.3.0]# make install
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

    (5)、修改php.ini文件

    找到491行的extension_dir = "./"
    修改为  extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613" 指定模块所在的位置;
    在这行后面加上
        493  extension = "imagick.so"
        494  extension = " memcache.so"
        495  extension = "pdo_mysql.so"

    在 101行处
        修改 output_buffering = Off为 output_buffering = On
    把523 处的注释去掉, cgi.fix_pathinfo=0 防止nginx文件类型错误解析漏洞


    6、配置php加速eaccelerator

    创建缓存文件夹;

    [root@mgmserver local]# mkdir eaccelerator_cache

    在php.ini配置文件末尾加上如下:

       1290 [eaccelerator]
       1291   extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so
       1292   eaccelerator.shm_size="32"
       1293   eaccelerator.cache_dir="/usr/local/eaccelerator_cache"
       1294   eaccelerator.enable="1"
       1295   eaccelerator.optimizer="1"
       1296   eaccelerator.check_mtime="1"
       1297   eaccelerator.debug="0"
       1298   eaccelerator.filter=""
       1299   eaccelerator.shm_max="0"
       1300   eaccelerator.shm_ttl="3600"
       1301   eaccelerator.shm_prune_period="360"
       1302   eaccelerator.shm_only="0"
       1303   eaccelerator.compress="1"
       1304   eaccelerator.compress_level="9"

     

    (7)、悲剧了,空余的机器被拿去用了,只好换个机器,创建www 用户和组,及两个虚拟主机域名目录www.nginx.com与web.nginx.com

    [root@mgmserver ~]# groupadd www
    [root@mgmserver ~]# useradd -g www www

    [root@nginx ~]# mkdir -p /web/htdocs/www.nginx.com
    [root@nginx ~]# chown -R www:www /web/htdocs/www.nginx.com

    [root@nginx ~]# mkdir -p /web/htdocs/web.nginx.com
    [root@nginx ~]# chown -R www:www /web/htdocs/web.nginx.com/


     8、修改php-fpm配置文件,黄色标记的是修改值

        1 <?xml version="1.0" ?>
          2 <configuration>
          3
          4         All relative paths in this config are relative to php's install prefix
          5
          6         <section name="global_options">
          7
          8                 Pid file
          9                 <value name="pid_file">/usr/local/php/logs/php-fpm.pid</value>
         10
         11                 Error log file
         12                 <value name="error_log">/usr/local/php/logs/php-fpm.log</value>
         13
         14                 Log level
         15                 <value name="log_level">notice</value>
         16
         17                 When this amount of php processes exited with SIGSEGV or SIGBUS ...
         18                 <value name="emergency_restart_threshold">10</value>
         19
         20                 ... in a less than this interval of time, a graceful restart will be initiated.
         21                 Useful to work around accidental curruptions in accelerator's shared memory.
         22                 <value name="emergency_restart_interval">1m</value>
         23
         24                 Time limit on waiting child's reaction on signals from master
         25                 <value name="process_control_timeout">5s</value>
         26
         27                 Set to 'no' to debug fpm
         28                 <value name="daemonize">yes</value>
         29
         30         </section>
         31
         32         <workers>
         33
         34                 <section name="pool">
         35
         36                         Name of pool. Used in logs and stats.
         37                         <value name="name">default</value>
         38
         39                         Address to accept fastcgi requests on.
         40                         Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
         41                         <value name="listen_address">127.0.0.1:9000</value>
         42
         43                         <value name="listen_options">
        44
         45                                 Set listen(2) backlog
         46                                 <value name="backlog">-1</value>
         47
         48                                 Set permissions for unix socket, if one used.
         49                                 In Linux read/write permissions must be set in order to allow connections from web server.
         50                                 Many BSD-derrived systems allow connections regardless of permissions.
         51                                 <value name="owner"></value>
         52                                 <value name="group"></value>
         53                                 <value name="mode">0666</value>
         54                         </value>
         55
         56                         Additional php.ini defines, specific to this pool of workers.
         57                         <value name="php_defines">
         58                 <!--            <value name="sendmail_path">/usr/sbin/sendmail -t -i</value>            -->
         59                 <!--            <value name="display_errors">0</value>                                                          -->
         60                         </value>
         61
         62                         Unix user of processes
         63                 <!--    <value name="user">www</value>                          -->
         64
         65                         Unix group of processes
         66                 <!--    <value name="group">www</value>         -->
         67
         68                         Process manager settings
         69                         <value name="pm">
         70
         71                                 Sets style of controling worker process count.
         72                                 Valid values are 'static' and 'apache-like'
         73                                 <value name="style">static</value>
         74
         75                                 Sets the limit on the number of simultaneous requests that will be served.
         76                                 Equivalent to Apache MaxClients directive.
         77                                 Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
         78                                 Used with any pm_style.
         79                                 <value name="max_children">64</value>(如果机器内存小于3G,可以设置64个进程)
         80
         81                                 Settings group for 'apache-like' pm style
         82                                 <value name="apache_like">
         83
         84                                         Sets the number of server processes created on startup.
         85                                         Used only when 'apache-like' pm_style is selected
         86                                         <value name="StartServers">20</value>
        87
         88                                         Sets the desired minimum number of idle server processes.
         89                                         Used only when 'apache-like' pm_style is selected
         90                                         <value name="MinSpareServers">5</value>
         91
         92                                         Sets the desired maximum number of idle server processes.
         93                                         Used only when 'apache-like' pm_style is selected
         94                                         <value name="MaxSpareServers">35</value>
         95
         96                                 </value>
         97
         98                         </value>
         99
        100                         The timeout (in seconds) for serving a single request after which the worker process will be terminated
        101                         Should be used when 'max_execution_time' ini option does not stop script execution for some reason
        102                         '0s' means 'off'
        103                         <value name="request_terminate_timeout">0s</value>
        104
        105                         The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
        106                         '0s' means 'off'
        107                         <value name="request_slowlog_timeout">0s</value>
        108
        109                         The log file for slow requests
        110                         <value name="slowlog">logs/slow.log</value>
        111
        112                         Set open file desc rlimit
        113                         <value name="rlimit_files">65535</value>
        114
        115                         Set max core size rlimit
        116                         <value name="rlimit_core">0</value>
        117
        118                         Chroot to this directory at the start, absolute path
        119                         <value name="chroot"></value>
        120
        121                         Chdir to this directory at the start, absolute path
        122                         <value name="chdir"></value>
        123
        124                         Redirect workers' stdout and stderr into main error log.
        125                         If not set, they will be redirected to /dev/null, according to FastCGI specs
        126                         <value name="catch_workers_output">yes</value>
        127
        128                         How much requests each process should execute before respawn.
        129                         Useful to work around memory leaks in 3rd party libraries.
        130                         For endless request processing please specify 0
        131                         Equivalent to PHP_FCGI_MAX_REQUESTS
        132                         <value name="max_requests">500</value>
        133
        134                         Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
        135                         Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
        136                         Makes sense only with AF_INET listening socket.
        137                         <value name="allowed_clients">127.0.0.1</value>
        138
        139                         Pass environment variables like LD_LIBRARY_PATH
        140                         All $VARIABLEs are taken from current environment
        141                         <value name="environment">
        142                                 <value name="HOSTNAME">$HOSTNAME</value>
        143                                 <value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
        144                                 <value name="TMP">/tmp</value>
        145                                 <value name="TMPDIR">/tmp</value>
        146                                 <value name="TEMP">/tmp</value>
        147                                 <value name="OSTYPE">$OSTYPE</value>
        148                                 <value name="MACHTYPE">$MACHTYPE</value>
        149                                 <value name="MALLOC_CHECK_">2</value>
        150                         </value>
        151
        152                 </section>
        153
        154         </workers>
        155
        156 </configuration>

     

     

    (9)、启动php-cgi进程,监听127.0.0.1的9000端口,进程数为64

    把配置文件的63行和66行修改如下:

         62                         Unix user of processes
         63                   <value name="user">www</value>                      
         64
         65                         Unix group of processes
         66                  <value name="group">www</value>      

    切记要把63行和66行的注释符号去掉不然在启动时会出错的!

    [ERROR] fpm_unix_conf_wp(), line 124: please specify user and group other than root, pool 'default'

    [root@nginx ~]# /usr/local/php/sbin/php-fpm start
    Starting php_fpm . done

    [root@nginx nginx]# netstat -ntpl
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
    tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      2630/hpiod
    tcp        0      0 0.0.0.0:833                 0.0.0.0:*                   LISTEN      2347/rpc.statd
    tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      5285/php-cgi

    ........

    3、安装nginx

    (1)、安装nginx及所需要的pcre库

    [root@nginx pcre-8.10]# ./configure
    [root@nginx pcre-8.10]# make
    [root@nginx pcre-8.10]# make install

    [root@nginx install_packet]# cd nginx-0.8.48/
    [root@nginx nginx-0.8.48]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
    [root@nginx nginx-0.8.48]#make
    [root@nginx nginx-0.8.48]#make install

    (2)、创建nginx的日志文件
    [root@nginx /]# mkdir -p web/nginxlogs
    [root@nginx /]# chmod +w web/nginxlogs/
    [root@nginx /]# chown -R www:www web/nginxlogs/

    (3)、修改nginx的配置文件如下:

         1
          2 user www www;
          3 worker_processes  1;
          4 error_log    /web/nginxlogs/error.log  crit;
          5 pid        /usr/local/nginx/nginx.pid;
          6 worker_rlimit_nofile 65535;
          7 events {
          8     use epoll;
          9     worker_connections  1024;
         10 }
         11
         12
         13 http {
         14     include       mime.types;
         15     default_type  application/octet-stream;
         16
         17     server_names_hash_bucket_size 128;
         18     client_header_buffer_size 32k;
         19     large_client_header_buffers 4 32k;
         20     client_max_body_size 8m;

         21
         22
         23     sendfile        on;
         24     tcp_nopush     on;
         25
         26     #keepalive_timeout  0;
         27     keepalive_timeout  60;
         28     tcp_nodelay    on;
         29
         30     fastcgi_connect_timeout 300;
         31     fastcgi_send_timeout    300;
         32     fastcgi_read_timeout     300;
         33     fastcgi_buffer_size     64k;
         34     fastcgi_buffers       4 64k;
         35     fastcgi_busy_buffers_size 128k;
         36     fastcgi_temp_file_write_size 128k;

         37
         38     gzip  on;
         39     gzip_min_length        1k;
         40     gzip_buffers      4    16k;
         41     gzip_http_version      1.0;
         42     gzip_comp_level  2;
         43     gzip_types  text/plain application/x-javascript text/css application/xml;   
         44     gzip_vary on;

         45
         46     server {
         47         listen       80;
         48         server_name  www.nginx.com;
         49         root   /web/htdocs/www.nginx.com;
         50         index  index.html index.htm index.php;
         51
         52         location ~.*.(php|php5)?$ {
         53              fastcgi_pass   127.0.0.1:9000;
         54              fastcgi_index  index.php;
         55              include        fastcgi.conf;
         56         }
         57
         58         location ~.*.(gif|jpg|jpeg|png|bmp|swf)$
         59         {
         60             expires    30d;
         61         }
         62         location ~.*.(js|css)$
         63         {
         64             expires    1h;
         65         }
         66         log_format  wwwaccess  '$remote_addr - $remote_user [$time_local] "$request" '
         67                             '$status $body_bytes_sent "$http_referer" '
         68                             '"$http_user_agent" $http_x_forwarded_for';
         69         access_log  /web/nginxlogs/wwwaccess.log  wwwaccess;
         70 }
         71
         72
         73    server {
         74          listen       80;
         75          server_name  web.nginx.com;
         76          root   /web/htdocs/web.nginx.com;
         77          index  index.html index.htm index.php;
         78          location ~.*.(php|php5)?$
         79          {
         80          fastcgi_pass   127.0.0.1:9000;
         81          fastcgi_index  index.php;
         82          include        fastcgi.conf;
         83          }
         84     log_format  webaccess  '$remote_addr - $remote_user [$time_local] "$request"'

         85                         '$status $body_bytes_sent "$http_referer"'
         86                         '"$http_user_agent" $http_x_forwarded_for';
         87      access_log  /web/nginxlogs/webaccess.log  webaccess;
         88     }
         89 }

    (4)、保持conf/下fastcgi.conf配置文件不变就可以了

    (5)、启动nginx

    [root@nginx nginx]#/usr/

     [root@nginx nginx]# /usr/local/nginx/sbin/nginx
    (6)、开机启动nginx 与php

    [root@nginx nginxlogs]# vi /etc/rc.local


    ulimit -SHn 65535
    /usr/local/php/sbin/php-fpm start
    /usr/local/nginx/sbin/nginx
     

    (7)修改文件中先检查配置文件是否正确,然后在启动

    [root@nginx nginxlogs]# /usr/local/nginx/sbin/nginx -t
    the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    configuration file /usr/local/nginx/conf/nginx.conf test is successful
     

    [root@nginx nginxlogs]# kill -HUP `cat /usr/local/nginx/nginx.pid`
    或者

    [root@nginx nginxlogs]# /usr/loca/nginx/sbin/nginx -s reload

    4、测试

    在www.nginx.com的文档目录中

    [root@nginx www.nginx.com]# vi index.php/
    <?php  phpinfo(); ?>
    类似的在web.nginx.com中新建一个index.php文件:

     

     

     

     

    基本上算是完成了涨老师的实验配置

  • 相关阅读:
    转载文章:用.NET开发MSN聊天机器人 MSN聊天机器人开发揭秘
    ppc全屏程序(转)
    表设计中遇到的多对多的关系解决方案 (zt)
    using ZedGraph
    DataTable.Select(expression)
    你认识它吗?什么是QR码?
    分享《Windows Mobile平台应用与开发》源代码
    收藏信息
    六世喇嘛仓央嘉措诗集
    使用Axis开发Web Service程序
  • 原文地址:https://www.cnblogs.com/jym-sunshine/p/4821335.html
Copyright © 2011-2022 走看看