手动编译nginx+php-fpm

发布时间:2012-11-29 14:30:40

nginx参考: http://wiki.nginx.org/NginxChsInstall

php-fpm参考:http://www.php.net/manual/en/install.fpm.install.php

lnmp http://lnmp.org/index.html

从源代码编译 Nginx

把源码解压缩之后,在终端里运行如下命令:

./configuremakesudo make install

默认情况下,Nginx 会被安装在 /usr/local/nginx。通过设定编译选项,你可以改变这个设定。

编译选项

http://wiki.nginx.org/NginxChsInstallOptions

 

configure 脚本确定系统所具有一些特性,特别是 nginx 用来处理连接的方法。然后,它创建 Makefile 文件。

configure 支持下面的选项:

--prefix=<path> - Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。

--sbin-path=<path> - Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为<prefix>/sbin/nginx。

--conf-path=<path> - 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为<prefix>/conf/nginx.conf。

--pid-path=<path> - 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为 <prefix>/logs/nginx.pid。

--lock-path=<path> - nginx.lock文件的路径。

--error-log-path=<path> - 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为 <prefix>/logs/error.log。

--http-log-path=<path> - 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为 <prefix>/logs/access.log。

--user=<user> - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。

--group=<group> - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody。

--builddir=DIR - 指定编译的目录

--with-rtsig_module - 启用 rtsig 模块

 

./configure --prefix=/host/soft/nginx  安装在指定目录

管理服务
   管理服务是在/hout/soft/nginx/sbin/下的nginx
   >./nginx -t 检查配置文件是否正确  这里可以察看配置文件路径,以及检查配置是否有错误
   >./nginx  启动服务
   >./nginx -s stop 停止服务
   >./nginx -s reload 重新加载配置-----------------------------------------------

 

1.php-fpm的安装
  # gunzip php-5.2.17.tar.gz | tar xvf -     (解压包php-5.2.17,将生成目录php-5.2.17)
  # gunzip php-5.2.13-fpm-0.5.14.diff.gz     (解压包php-5.2.13-fpm-0.5.14.diff)          php-5.2.17和这个文件在同一个文件下
  # patch -d php-5.2.17 -p1 < php-5.2.13-fpm-0.5.14.diff (给php-5.2.17的源码打上fpm补丁)

  # cd php-5.2.17


  # ./configure  --prefix=/host/soft/php5.2 -with-config-file-path=/host/soft/php5.2/lib -enable-fastcgi -enable-fpm

   (配置php-fpm,指定--prefix,若不指定,默认的目录 为/usr/local,编译后显得比较零乱.) 更多配置详见其他帖子

不指定-with-config-file-path= 可能会出现Loaded Configuration File (none)的情况

 -enable-fastcgi -enable-fpm  在php5.3 只要使用-enable-fpm就可以了


  # make all                                (编译所有)
  # make install                            (编译安装,完成安装)

  检查安装
  # cd /host/soft/php5.2/bin
  # ./php -v                                (显示如下内容,表示安装正常)
PHP 5.2.17 (cli) (built: May 10 2011 02:58:56) Copyright (c) 1997-2010 The PHP GroupZend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

 

  将php-5.2.17目录下的php.ini-dist 复制到  /host/soft/php5.2/lib/php.ini   .你也可以在编译时,设置配置文件路径.

  修改  /host/soft/php5.2/etc/php-fpm.conf 配置文件
  去掉user,group两行的注释
     Unix user of processes
     <value name="user">nobody</value>                               
     Unix group of processes
     <value name="group">nobody</value>
  启动php-fpm


  #   /host/soft/php5.2/sbin/php-fpm start

----------------------------------------------------------------------------

配置文件在/usr/local/nginx/conf/nginx.conf在主配置区的server部分修改:
 server {
   linsten    8080;#监听端口
   server_name admin; #站点host
   站点目录
   location / {
    root /home/sites/ct_admin  #站点根目录 没认为html,就是/usr/local/nginx/html目录.
    index index.php index.html index.htm #默认主页
   }
  location ~ \.php$ {    fastcgi_pass   127.0.0.1:9000;    fastcgi_index  index.php;    fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;    include        fastcgi_params;  }重新加载配置文件 ------------------------------------------------------------------------------ 打印phpinfo()可以察看php信息.


SystemLinux ubuntu 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686Build DateMay 10 2011 03:36:44Configure Command'./configure' '--prefix=/host/soft/php5.2' '--enable-fastcgi' '--enable-fpm'Server APICGI/FastCGIVirtual Directory SupportdisabledConfiguration File (php.ini) Path/host/soft/php5.2/lib从上图可以看到php的配置路径是在./host/soft/php5.2/lib.默认配置文件不 存在.需要你复制一份过去

其中php-fpm的配置在php的etc目录中,要注意以下这个段落,<value name="allowed_clients">127.0.0.1</value>设置允许访问fpm的IP地址,如果这里不匹配 Nginx转发过来的php解析请求不能被接受。跟踪问题可以参看logs目录中的php-fpm.log

 

 

察看配置文件路径php --ini    

 

php -i | grep Configuration//查找配置文件

php -i | grep  extension_dir // 查找extension_dir目录