为了账号安全,请及时绑定邮箱和手机立即绑定

php 5.2.17 安装 php-fpm

标签:
PHP

1.下载安装包

从www.php.net官方网站下载PHP源码包,这里下载的是稳定版php-5.2.13.tar.gz。

从http://php-fpm.org/downloads/下载对应的PHP-FPM源码包,这里下载的是php-5.2.13-fpm-0.5.13.diff.gz。

需要注意,在下载软件包版本时,尽量使PHP和PHP-FPM版本一致,如果版本之间相差太大,可能会出现兼容的问题。

2.配置安装环境

安装PHP需要下面软件包的支持,如果没有安装,请自行安装。


  1. gcc gcc-c++ libxml2 libxml2-devel autoconf 
    libjpeg libjpeg-devel libpng libpng-devel freetype
    freetype-devel  zlib zlib-devel glibc glibc-devel glib2 glib2-devel 

由于各个Linux系统版本有不确定性,读者也可以在安装PHP过程中,根据错误提示信息,安装对应的软件库。

3.开始编译安装PHP和PHP-FPM

编译安装PHP和PHP-FPM很简单,下面是安装过程:

[root@localhost local]#tar zxvf php-5.2.13.tar.gz  [root@localhost local]#gzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1  [root@localhost local]#cd php-5.2.13  [root@localhost php-5.2.13]#./configure  --prefix=/usr/local/php --enable-fastcgi --enable-fpm  [root@localhost php-5.2.13]#make  [root@localhost php-5.2.13]#make install

在“./configure”编译选项中,指定将PHP安装到/usr/local下;“--enable-fastcgi”是启用对PHP的FastCGI支持;“--enable-fpm”是激活对FastCGI模式的fpm支持。

在编译PHP时可以加入很多编译选项,但是这里为了介绍PHP的FastCGI功能没有加入更多的编译选项。

4.配置与优化PHP-FPM

PHP的全局配置文件是php.ini,在上面的步骤中,已经将此文件复制到了/usr/local/php/lib/php.ini下。可以根据每个应用需求的不同,对php.ini进行相应的配置。

下面重点介绍PHP-FPM引擎的配置文件。

根据上面指定的安装路径,PHP-FPM的默认配置文件为/usr/local/php/etc/php-fpm.conf。

php-fpm.conf是一个XML格式的纯文本文件,其内容很容易看明白。这里重点介绍几个重要的配置标签。

标签listen_address是配置FastCGI进程监听的IP地址以及端口,默认是127.0.0.1:9000。

<value name="listen_address">127.0.0.1:9000</value>


标签display_errors用来设置是否显示PHP错误信息,默认是0,不显示错误信息,设置为1可以显示PHP错误信息。

<value name="display_errors">0</value>


标签user和group用于设置运行FastCGI进程的用户和用户组。需要注意的是,这里指定的用户和用户组要和Nginx配置文件中指定的用户和用户组一致。

<value name="user">nobody</value> <value name="group">nobody</value>


标签max_children用于设置FastCGI的进程数。根据官方建议,小于2GB内存的服务器,可以只开启64个进程,4GB以上内存的服务器可以开启200个进程。

<value name="max_children">5</value>


标签request_terminate_timeout用于设置FastCGI执行脚本的时间。默认是0秒,也就是无限地执行下去,可以根据情况对其进行修改。

<value name="request_terminate_timeout">0s</value>

1.7.4 PHP与PHP-FPM的安装及优化(2)

标签rlimit_files用于设置PHP-FPM对打开文件描述符的限制,默认值为1024。这个标签的值必须和Linux内核打开文件数关联起来,例如,要将此值设置为65 535,就必须在Linux命令行执行“ulimit -HSn 65536”。

<value name="rlimit_files">1024</value>


标签max_requests指明了每个children最多处理多少个请求后便会被关闭,默认的设置是500。

<value name="max_requests">500</value>


标签allowed_clients用于设置允许访问FastCGI进程解析器的IP地址。如果不在这里指定IP地址,将无法接受Nginx转发过来的PHP解析请求。

<value name="allowed_clients">127.0.0.1</value>


5.管理FastCGI进程

在配置完PHP_FPM后,就可以启动FastCGI进程了。启动FastCGI进程有以下两种方式:

/usr/local/php/bin/php-cgi --fpm


或者

/usr/local/php/sbin/php-fpm  start

建议采用第二种方式启动FastCGI进程。

/usr/local/php/sbin/php-fpm还有其他参数,具体为start|stop|quit|restart|reload|logrotate。

每个启动参数的含义如下:

start,启动PHP的FastCGI进程。

stop,强制终止PHP的FastCGI进程。

quit,平滑终止PHP的FastCGI进程。

restart, 重启PHP的FastCGI进程。

reload, 重新加载PHP的php.ini。

logrotate, 重新启用log文件。

reload是个很重要的参数,它可以在PHP的FastCGI进程不中断的情况下重新加载改动过的php.ini,因此通过PHP_FPM可以平滑地变更FastCGI模式下的PHP设置。

在FastCGI进程启动后,其监听的IP地址和端口也随即启动,可以通过ps和netstat查看相关信息。

[root@localhost php]# netstat -antl|grep 9000  tcp        0       0 127.0.0.1:9000              0.0.0.0:*                   LISTEN  [root@localhost php]# ps -ef|grep php-cgi  root       3567       1      0  17:06 ?            00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  nobody    3568  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  nobody    3569  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  nobody    3570  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  nobody    3571  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  nobody    3572  3567  0  17:06 ?        00:00:00 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf  root      3583  3524  0 17:09 pts/1    00:00:00 grep php-cgi

1.7.5 配置Nginx来支持PHP

Nginx的安装特别简单,前面已经对此进行了详细介绍,这里不再进行讲述。下面重点介绍Nginx如何通过PHP_FPM的FastCGI进程对PHP进行解析处理。

由于Nginx本身不会对PHP进行解析,因此要实现Nginx对PHP的支持,将对PHP页面的请求交给FastCGI进程监听的IP地址及端口。如果把PHP_FPM当做动态应用服务器,那么Nginx其实就是一个反向代理服务器。Nginx通过反向代理功能实现对PHP的解析,这就是Nginx实现PHP动态解析的原理。

这里假定Nginx的安装目录为/usr/local,则Nginx配置文件的路径为/usr/local/nginx/conf/nginx.conf。下面是在Nginx下支持PHP解析的一个虚拟主机配置实例。

       server {      include port.conf;      server_name www.ixdba.net ixdba.net;           location / {      index index.html index.php;      root /web/www/www.ixdba.net;      }       location ~ \.php$ {              root           html;              fastcgi_pass   127.0.0.1:9000;              fastcgi_index  index.php;              fastcgi_param  SCRIPT_FILENAME  html$fastcgi_script_name;              include        fastcgi_params;         }  }

通过location指令,将所有以php为后缀的文件都交给127.0.0.1:9000来处理,而这里的IP地址和端口就是FastCGI进程监听的IP地址和端口。

fastcgi_param指令指定放置PHP动态程序的主目录,也就是$fastcgi_script_name前面指定的路径,这里是/usr/local/nginx/html目录。建议将这个目录与Nginx虚拟主机指定的根目录保持一致,当然也可以不一致。

fastcgi_params文件是FastCGI进程的一个参数配置文件,在安装Nginx后,会默认生成一个这样的文件。这里通过include指令将FastCGI参数配置文件包含了进来。

接下来,启动Nginx服务。


/usr/local/nginx/sbin/nginx


到此为止,Nginx+PHP已经配置完成。


php-fpm   启动失败:

启动php-fpm的时候出现
Starting php_fpm Dec 29 15:27:32.502790 [ERROR] fpm_unix_conf_wp(), line 124: please specify user and group other than root, pool 'default'
解决办法;
只需要修改php-fpm.conf
          Unix user of processes
 <!--     <value name="user">nobody</value>   -->
          Unix group of processes
 <!--     <value name="group">nobody</value>   -->
     
将<!– –>去掉即可。至于user/group根据实际情况修改(www)。
重新启动 /usr/local/webserver/php-fpm/sbin/php-fpm start 成功了!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消