简单说
--(我也就知道这么多)--,nginx处理请求是通过fpm(来管理fastcgi的)来实现请求和响应。
而nginx和php-fpm可以通过监听9000端口(默认)或者socket来实现。
而9000的格式是127.0.0.1:9000,是走网络的。通过ngxin的conf文件,把.php结尾的都交给9000端口处理,php-fpm(fastggi的进程管理器)选择并连接到一个fastcgi子进程,并将环境变量和标准输入发送到fastcgi子进程,然后不断的处理请求响应
socket文件就不走网络,是。
好,至于速度对比和优化配置,先不说。
更改phpfpm监听9000端口为socket (默认就是socket)
在配置一个yii2项目时,对于配置一个新的虚拟主机,导致不能正常解析
我的配置如下 使用的是9000端口
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }root@alex-virtual-machine:/etc/nginx/conf.d# netstat -tln |grep 9000 查询不到
##########################################
php7默认的是socket,所以如果按照之前nginx -conf文件,php文件处理会报502错误
/etc/php/7.0/fpm/pool.d/www.conf
;listen = /run/php/php7.0-fpm.sock
listen = 127.0.0.1:9000修改完重启php-fpm 重启nginx
root@alex-virtual-machine:/etc/nginx/conf.d# ps -ef |grep php-fpm root 31192 1 0 22:05 ? 00:00:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf) www-data 31193 31192 0 22:05 ? 00:00:00 php-fpm: pool www www-data 31194 31192 0 22:05 ? 00:00:00 php-fpm: pool www root 31677 28271 0 22:12 pts/8 00:00:00 grep --color=auto php-fpm root@alex-virtual-machine:/etc/nginx/conf.d# netstat -tupl|grep 9000 tcp 0 0 localhost:9000 *:。默认的sock是在php配置文件中的,pool.d中的www.conf
root@tb:/etc/php/7.0/fpm# pwd/etc/php/7.0/fpmroot@tb:/etc/php/7.0/fpm# lsconf.d php-fpm.conf php.ini pool.droot@tb:/etc/php/7.0/fpm#
在这两行:
listen = /run/php/php7.0-fpm.sock; listen = 127.0.0.1:9000
## 更改nginx conf文件 ##
nginx 配置文件我的是在
root@tb:/etc/nginx/conf.d# ls git.conf svn.conf tb.conf
修改其中的git.conf如下
server{ listen 80; server_name git.com ; root /home/gittest/; autoindex on; location ~ \.php$ { root /home/gittest; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_intercept_errors on; fastcgi_param SCRIPT_FILENAME /home/gittest/$fastcgi_script_name; include fastcgi_params; }}
重启php-fpm和nginx
root@tb:/etc/nginx/conf.d# service nginx reload * Reloading nginx configuration nginx [ OK ] root@tb:/etc/nginx/conf.d# service php7-fpm status * php-fpm7.0 is running root@tb:/etc/nginx/conf.d# service php7-fpm reload * Reloading PHP 7.0 FastCGI Process Manager php-fpm7.0[ OK ] root@tb:/etc/nginx/conf.d#
要注意是ok才可以,具体的nginx和fpm的脚本执行文件(可自己修改)在:
root@tb:/etc/init.d# ls /etc/init.d/ |grep php7 php7-fpm root@tb:/etc/init.d# ls /etc/init.d/ |grep nginx nginx root@tb:/etc/init.d#
最后,进阶的同学可参考
补充如果想通过apt-get换回去之前版本
sudo add-apt-repository ppa:ondrej/php5sudo apt-get update
然后再install
就好了