LNMP下提示文件未找到问题的解决方法

  

  

一般情况下每个虚拟主机就是一个网站,网站一般通过域名进行访问。最近在配置LNMP (Linux Nginx MariaDB Php-fpm)的时候遇到了1个问题:

  

访问网站首页始终提升文件未找到。

  

<强>最终解决后总结一条就是:强网站根目录的权限问题。

  

  

说说事情的起因本。人用的系统是Manjaro Linux系统,所以用一条命令装好LNMP环境:sudo pacman - s mariadb php nginx。刚开始,我把symfony项目放在我的家目录,也就是~/项目。然后我从symfony官方拷贝一份nginx的配置文件symfony.conf,放在了/etc/nginx/网站目录下,然后将根参数更改为/home/lrcn/项目/symfony/公众,并更改了fastcgi_pass参数为unix://php-fpm/php-fpm运行。袜子。好,运行sudo nginx - t测试通过,然后重启nginx。

  

但问题来了,我在浏览器输入symfony.dev(添加1条为主机127.0.0.1 symfony.dev)始终提示文件未找到。即使我将网站目录设置为777也不行!这个问题把我困扰了一天!真的是心都快爆炸了。最后我深呼吸一口气,然后思考这个问题。果然在找遍互联网资源后得到答案。

  

是这样解释的.PHP-FPM程序需要有一个用户和用户组来运行这个程序。这个用户和用户组对我的项目文件必须要有rx权限。有些目录还必须具有特权权限,比如上传、日志目录等等.Nginx程序同样需要一个用户,这个用户同样对于这个项目文件具有rx权限。

  

  

由于我的nginx默认用户是http,所以我想把它改为nginx,并且把nginx加入www用户组。同时,我把php-fpm的用户改为www,用户组也改为www。

  

<强> 1)创建用户

        sudo useradd - s/sbin/nologin www #创建www用户,同时会自动创建www用户组   sudo gpasswd——nginx www #把nginx用户加入到www用户组      

<强> 2)修改配置文件
  

  

由于我这里只管文件权限相关的配置,其余配置自己还需要调整

        # grep”^ ^;”/etc/php/php-fpm.d/www.conf   #修改的时候只管修改用户,组,听。的主人,listen.group,其余的都是默认配置   (www)   用户=www   组=www=/运行/php-fpm/php-fpm.sock听   听。老板=www   听。组=www   听。模式=0660   点=动态   点。max_children=5   点。start_servers=2   点。min_spare_servers=1   点。max_spare_servers=3   #/etc/nginx/nginx.conf   #在第一行写入,其余的不变   用户nginx www;      

<强> 3)修改项目文件权限
  

  

这一步我发现了一个很诡异的问题,如果我将网站目录放到lrcn用户的家目录的话,www用户始终无法访问这个项目文件,即使我把~/项目设置为了乔恩www: www - r ~/项目,但都不管用,运行测试命令sudo - u www统计~/项目/symfony依旧提示没有权限。我想,应该是/home/lrcn目录的拥有者为lrcn,即使我将它子目录改项目为了www: www,也是不能访问的。这合情合理,所以,我又将项目目录放在了/var/www目录下,然后运行sudo - u www stat/var/www,得到了正常的结果:

        [lrcn@lrcn-pc nginx] $ sudo - u www统计/var/www   (sudo) lrcn的密码:   文件:/var/www   大小:4096块:8 IO块:4096目录   设备:801 h/2049 d Inode: 3671064硬链接:3   权限(2775/drwxrwsr-x): Uid: (1000/lrcn) Gid: (1001/lrcn)   最近访问:2017-12-10 00:40:04.274947995 + 0800   最近更改:2017-12-10 00:41:34.772321160 + 0800   最近改动:2017-12-10 10:51:15.811999323 + 0800   创建时间:-      

如果得到以上信息,证明www用户是可以访问网站根目录的,然后将项目symfony移动到/var/www目录下就可以了。

        (lrcn@lrcn-pc var)树www - l 2美元   www   └──symfony   ├──本   ├──composer.json   ├──composer.lock   ├──配置   ├──公共   ├──src   ├──symfony.lock   ├──var   └──供应商      

好,修改目录权限。我将/var/www目录修改为了lrcn: www,并且在~/projcects目录下创建了一个指向/var/www/symfony的软链接,这样我就可以在家目录操作项目文件。问题是为什么要把/var/www目录的拥有者修改为lrcn,因为这样一来,我可以用lrcn用户来随便操作这个项目文件,lrcn用户是我登录linxu系统的用户,在开发项目,平时使用的时候很方便。

        sudo乔恩lrcn: www/var/www - r #更改项目的权限   sudo ln - s/var/www/symfony ~/项目/symfony #在家目录访问项目   sudo chmod 775/var/www - r #让www用户可以操作文件   g + s/var/www sudo chmod - r #以后lrcn用户创建的文件或文件夹都继承了www用户组,而不是lrcn用户组,这个命令很重要

LNMP下提示文件未找到问题的解决方法