在近期一次上线web应用部署过程中,相同的配置在测试环境中并没有出现任何问题。部署在生产环境3台服务器上时,一直出现“file not found”,查看nginx服务器的error日志出现了如下错误:
020/07/05 16:32:05 [error] 28033#0: *3 FastCGI sent in stderr: “Primary script unknown” while reading response header from upstream, client: 192.0.61.175, server: baogebiji.com, request: “POST /www/getClientInfoList.php HTTP/1.1″, upstream: “fastcgi://unix:/dev/shm/php-cgi.sock:”, host: “192.0.61.176“, referrer: “http://192.0.61.176/www“
生产环境的部署脚本及配置文件均一摸一样,出现这样的问题感觉到很恐慌。
一、测试php是否可以正常运行。
在网站根目录下,部署test.php文件,访问192.0.61.176
将test.php脚本,复制到www目录,访问网址192.0.61.176/www/test.php
检查nginx.conf配置文件,与测试文件完全相同。网站根目录下打开php文件正常。因此php-fpm应该运行也是正常的。
二、检查网站运行权限。
1,检查nginx.conf文件,nginx运行的用户为app100。
2,检查网站目录,均为app100。
3,检查php运行权限。
$ cat /usr/local/php/etc/php-fpm.conf ;;;;;;;;;;;;;;;;;;;;; ; FPM Configuration ; ;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;; ; Global Options ; ;;;;;;;;;;;;;;;;;; [global] pid = run/php-fpm.pid error_log = log/php-fpm.log log_level = warning emergency_restart_threshold = 30 emergency_restart_interval = 60s process_control_timeout = 5s daemonize = yes ;;;;;;;;;;;;;;;;;;;; ; Pool Definitions ; ;;;;;;;;;;;;;;;;;;;; [www] listen = /dev/shm/php-cgi.sock listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www
发现user和group均使用www用户,修改以上www用户为app100后,重启systemctl restart php-fpm。故障解除。
总结
出现该问题的原因事后回忆,因默认安装使用的均为www用户,app100用户没有权限。
原创文章,作者:保哥,如若转载,请注明出处:https://www.shizhanxia.com/1092.html