设为首页 收藏本站
查看: 3502|回复: 0

[经验分享] 非root起nginx + php-fpm碰到File not found

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-6-30 09:16:56 | 显示全部楼层 |阅读模式
在尝试非root起nginx和php-fpm遇到的问题和解决方法
nginx方面,以系统中的coosh用户启动为背景
# 源码安装的nginx,目录/application/nginx-1.8.1
useradd coosh
su - coosh
# 以下为nginx.conf配置文件的内容,注意该文件是放在coosh的家目录下
# 由于该配置文件不是在nginx安装目录中,所以里面的目录路径要全换成绝对路径
cat >nginx.conf <<EOF
worker_processes  1;
error_log /home/coosh/error.log;
pid       /home/coosh/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /application/nginx-1.8.1/conf/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip on;
    gzip_types text/css text/xml text/plain application/javascript;
    gzip_min_length 1k;
    gzip_comp_level 5;
    gzip_vary on;
    server {
        listen          8080;
        access_log      off;
        # 我的网站目录是在家目录下的website目录中
        root    /home/coosh/website;
        location / {
                root    /home/coosh/website;
                index   index.php;
        }
        location ~ \.php$ {
                #由于9000端口已经被另一个php-fpm占用了,所以另起了一个9001
                fastcgi_pass   127.0.0.1:9001;
                fastcgi_index  index.php;
                #这里的$document_root取值是server块里的root
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        /application/nginx-1.8.1/conf/fastcgi.conf;
        }
    }
}
EOF
#测试一下该配置文件
/application/nginx/sbin/nginx -c /home/coosh/nginx.conf -t
#通常会提示没有权限访问/application/nginx-1.8.1/logs/error.log,这确实很奇怪,因为在配置文件里命名是配了error_log参数,但仍提示这个路径,解决的方法是用root给这个文件配上所有人可读写。
logout
chmod 666 /application/nginx-1.8.1/logs/error.log
# 回到coosh用户下
su - coosh
/application/nginx/sbin/nginx -c /home/coosh/nginx.conf -t

# 如无意外,会提示OK和successful

php-fpm方面碰到的问题
由于系统里的php-fpm默认是以www用户或者php-fpm.conf里配置的user去运行,
所以,php-fpm是不具备直接访问其他用户家目录的权限,也是导致File not found的主因
如果配置成root权限执行,固然能访问得到所有的目录,但又会带来安全的风险。
因此,最佳的做法,是以coosh的身份去运行php-fpm
su - coosh
#把php-fpm.conf复制到coosh的家目录
cp /application/php/etc/php-fpm.conf .
把该文件里的user和group都该为coosh
[coosh@Lab2 ~]$ grep coosh php-fpm.conf
user = coosh
group = coosh
[coosh@Lab2 ~]$ grep 9001 php-fpm.conf
listen = 127.0.0.1:9001
检查一下配置文件
[coosh@Lab2 ~]$ /application/php/sbin/php-fpm -y ./php-fpm.conf -t   
通常又会提示没有权限访问/application/php/var/log/php-fpm.log
所以,切换会root,修改一下文件的权限
[iyunv@Lab2 ~]# chmod 666 /application/php/var/log/php-fpm.log
切换回coosh,再次检查
[coosh@Lab2 ~]$ /application/php/sbin/php-fpm -y ./php-fpm.conf -t      
[29-Jun-2016 17:30:17] NOTICE: configuration file ./php-fpm.conf test is successful
可以尝试执行php-fpm
/application/php/sbin/php-fpm -y ./php-fpm.conf
spacer.jpg


总结,在遇到问题时,要多使用strace,可以很快捷的定位问题,再者,不要过分相信百度到的答案
当然,参考别人的经验是必须的,但需要自己形成排错的方法,两者相结合,才是王道。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-237215-1-1.html 上篇帖子: nginx日志切割小计 下篇帖子: Nginx基本使用方法及各模块基本功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表