php-fpm 配置问题

2017-09-13 10:27:44来源:oschina作者:smile_微笑人点击

分享

因为自己升级了一次php版本,导致nginx 代理到php-fpm模块报错 :


现在总结一下本次错误调试的过程:


第一个错误


sudo /usr/local/php/sbin/php-fpm


[02-Jan-2016 01:56:48] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/*.conf' from /usr/local/php/etc/php-fpm.conf at line 125.


php/etc/php-fpm.d/*.conf' from /usr/local/php/etc/php-fpm.conf at line 125.


[02-Jan-2016 01:55:33] ERROR: No pool defined. at least one pool section must be specified in config file [02-Jan-2016 01:55:33] ERROR: failed to post process the configuration [02-Jan-2016 01:55:33] ERROR: FPM initialization failed

从最初的warning开始追起 大概知道是在/usr/local/php/etc/php-fpm.d/缺少了一个.conf文件 然后进入此目录


发现有一个www.conf.default 按照常识应该应该进行如下操作


运行成功


其中www.conf内修改了 user 和group将nobody 改成 www-data


(PHP-FPM是一个PHPFastCGI管理器 一个守护进程)


之后配置nginx worker process照一般配置应该与core数相同(不要浪费cpu切换上下文)


cat /proc/cpuinfo可查看信息


nginx.conf里面并没有太多实质的东西 有设置error_log其他很多都是include其他的配置文件


如引入sites-avaiable/*,


里面有一个default 在这里配置站点信息 监听哪一个端口 根目录是哪之类的


server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm;


....


如果需要不同端口配置不同站 只要在此目录添加配置文件即可


然后到这localhost已经可以访问对应目录了


然后就是fast-cgi的php与nginx关联了


location ~ /.php$ { # fastcgi_split_path_info ^(.+/.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # # With php5-cgi alone: fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: # fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }


这几行取消注释


我们可以看到fastcgi_pass 这其实是一个将php请求传送的一个配置


也就是实际上 nginx与php-fpm关联的地发


我们可以用nettsat -ano | grep -in 9000看到


tcp0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 4326/php-fpm.conf)


占用此端口的是php-fpm 就是通过这个配置将请求转发给php-fpm


这也让我们更理解了 cgi 公共网关接口的含义

另外include fastcgi_params;


这个文件是在 /etc/nginx/fastcgi_params里


文件内容大概如下

fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name;就是将nginx得到的http请求的一些基础的参数


变为php的运行php的基础参数 ($server_name之类的)

今天就到此为止 第一次自己配置nginx 以前都是用apache 第一次配php7 以前都是5.6.x


理解有很多不到位的地方 就说说这些


之后再谈谈深入使用的情况


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台