我有两台RHEL 7机器。
我已经安装了nginx和php-fpm并设置了nfs挂载。 我可以读取/写入nfs mount而不会出现问题,而且我有另一个能够读取写入的应用程序服务器(Apache Geronimo)。
当我安装nginx时,它设置了一个nginx用户,我使用相同的uid和gid在NFS文件服务器上创build了这个用户。
我能够使用nginx用户列出nfs客户端上的文件。 然而,当我试图从nfs服务使用nginx的静态HTML或dynamicPHP文件我得到一个权限错误:
*5 stat() "/usr/depot/repository/test.php" failed (13: Permission denied) *5 open() "/usr/depot/repository/test.html" failed (13: Permission denied)
另外我在/ usr / depot / testing下创build了具有相同权限的文件夹(只是不是nfs),工作得很好。
这是客户端的安装信息。
xxx.xxx.xxx.xxx:/mnt/repository on /usr/depot/repository type nfs4 (rw,nosuid,nodev,noexec,relatime,vers=4.0,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.xxx.xxx,local_lock=none,addr=xxx.xxx.xxx.xxx)
我看不出这个设置有什么问题,所以我不知道为什么nginx无法从nfs共享中读取这些文件。
更新
好的,我只是禁用SELinux重新启动,并修复它。 现在的问题是如何configurationSELinux,使nginx可以访问远程服务器。
在RHEL 7中,适用于Apache的SELinux策略也适用于nginx。 所以你可以使用相同的布尔值:
httpd_use_nfs (off , off) Allow httpd to use nfs
设置正确的布尔值以允许Web服务器使用NFS。
setsebool -P httpd_use_nfs 1
由于这是Google针对此问题的第一个结果,因此我想添加我的解决scheme。
在我的情况下,SELinux被禁用,所以不是这样。 我的问题是,PHP的FPM运行为Apache。 所以在我的CentOS 7networking服务器上(假设你根据OP在文件服务器上创build了一个nginx用户),我将用户和组更改为/etc/php-fpm.d/www.conf中的nginx,并重新启动了php-fpm。