Nginx+FastCGI运行原理(二)

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

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

  1. <</SPAN>value name="rlimit_files">1024</</SPAN>value> 

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

  1. <</SPAN>value name="max_requests">500</</SPAN>value> 

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

  1. <</SPAN>value name="allowed_clients">127.0.0.1</</SPAN>value> 

5.管理FastCGI进程

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

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

或者

  1. /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查看相关信息。

  1. [root@localhost php]# netstat -antl|grep 9000  
  2. tcp        0       0 127.0.0.1:9000              0.0.0.0:*                   LISTEN  
  3. [root@localhost php]# ps -ef|grep php-cgi  
  4. 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  
  5. 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  
  6. 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  
  7. 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  
  8. 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  
  9. 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  
  10. root      3583  3524  0 17:09 pts/1    00:00:00 grep php-cgi 

1.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解析的一个虚拟主机配置实例。

  1.        server {  
  2.     include port.conf;  
  3.     server_name www.ixdba.net ixdba.net;  
  4.  
  5.         location / {  
  6.     index index.html index.php;  
  7.     root /web/www/www.ixdba.net;  
  8.     }  
  9.  
  10.     location ~ .php$ {  
  11.             root           html;  
  12.             fastcgi_pass   127.0.0.1:9000;  
  13.             fastcgi_index  index.php;  
  14.             fastcgi_param  SCRIPT_FILENAME  html$fastcgi_script_name;  
  15.             include        fastcgi_params;  
  16.        }  

通过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服务。

  1. /usr/local/nginx/sbin/nginx 

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

1.6 测试Nginx对PHP的解析功能

这里在/usr/local/nginx/html目录下创建一个phpinfo.php文件,内容如下:

原文地址:https://www.cnblogs.com/wajika/p/6395466.html