加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 运营中心 > LNMP > 正文

LNMP下提示File not found问题的解决方法

发布时间:2023-02-17 14:10:27 所属栏目:LNMP 来源:互联网
导读:前言 一般情况下每个虚拟主机就是一个网站,网站一般通过域名进行访问。最近在配置LNMP(Linux Nginx MariaDB PHP-fpm)的时候遇到了1个问题: 访问网站首页始终提升File not found。 最终解决后总结一条就是: 网站根目录的权限问题。 起因 说说事情的起因

  前言
 
  一般情况下每个虚拟主机就是一个网站,网站一般通过域名进行访问。最近在配置LNMP(Linux Nginx MariaDB PHP-fpm)的时候遇到了1个问题:
 
  访问网站首页始终提升File not found。
 
  最终解决后总结一条就是: 网站根目录的权限问题。
 
  起因
 
  说说事情的起因。本人用的系统是manjaro Linux系统。所以用一条命令装好LNMP环境: sudo pacman -S mariadb Nginx PHP。刚开始,我把symfony项目放在我的家目录,也就是~/projects。然后我从symfony官方拷贝一份Nginx的配置文件symfony.conf,放在了/etc/Nginx/sites-available目录下,然后将root参数更改为/home/lrcn/projects/symfony/public,并更改了fastcgi_pass参数为unix:/run/PHP-fpm/PHP-fpm.sock。好,运行sudo Nginx -t测试通过,然后重启Nginx。
 
  但问题来了,我在浏览器输入symfony.dev(添加1条hosts为127.0.0.1 symfony.dev)始终提示File not found。即使我将网站目录设置为777也不行!这个问题把我困扰了一天!真的是心都快爆炸了。最后我深呼吸一口气,然后思考这个问题。果然在找遍互联网资源后得到答案。
 
  是这样解释的。PHP-FPM程序需要有一个用户和用户组来运行这个程序。这个用户和用户组对我的项目文件必须要有rx权限。有些目录还必须具有rwx权限,比如upload,log目录等等。Nginx程序同样需要一个用户,这个用户同样对于这个项目文件具有rx权限。
 
  解决方法
 
  由于我的Nginx默认用户是http,所以我想把它改为Nginx,并且把Nginx加入www用户组。同时,我把PHP-fpm的用户改为www,用户组也改为www。
 
  1)创建用户
 
  sudo useradd -s /sbin/nologin www # 创建www用户,同时会自动创建www用户组
  sudo gpasswd -a Nginx www # 把Nginx用户加入到www用户组
  2)修改配置文件
 
  由于我这里只管文件权限相关的配置,其余配置自己还需要调整
 
  # grep "^[^;]" /etc/PHP/PHP-fpm.d/www.conf
  # 修改的时候只管修改user,group,listen.owner,listen.group,其余的都是默认配置
  [www]
  user = www
  group = www
  listen = /run/PHP-fpm/PHP-fpm.sock
  listen.owner = www
  listen.group = www
  listen.mode = 0660
  pm = dynamic
  pm.max_children = 5
  pm.start_servers = 2
  pm.min_spare_servers = 1
  pm.max_spare_servers = 3
  # /etc/Nginx/Nginx.conf
  # 在第一行写入,其余的不变
  user Nginx www;
  3)修改项目文件权限
  这一步我发现了一个很诡异的问题,如果我将网站目录放到lrcn用户的家目录的话,www用户始终无法访问这个项目文件,即使我把~/projects设置为了chown www:www ~/projects -R,但都不管用,运行测试命令sudo -u www stat ~/projects/symfony依旧提示没有权限。我想,应该是/home/lrcn目录的拥有者为lrcn,即使我将它子目录projects改为了www:www, 也是不能访问的。这合情合理。所以,我又将项目目录放在了/var/www目录下,然后运行sudo -u www stat /var/www, 得到了正常的结果:
 
  [lrcn@lrcn-pc Nginx]$ sudo -u www stat /var/www
  [sudo] lrcn 的密码:
   文件:/var/www
   大小:4096   块:8   IO 块:4096 目录
  设备:801h/2049d 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]$ tree www -L 2
  www
  └── symfony
   ├── bin
   ├── composer.json
   ├── composer.lock
   ├── config
   ├── public
   ├── src
   ├── symfony.lock
   ├── var
   └── vendor
  好,修改目录权限。我将/var/www目录修改为了lrcn:www,并且在~/projcects目录下创建了一个指向/var/www/symfony的软链接,这样我就可以在家目录操作项目文件。问题是为什么要把/var/www目录的拥有者修改为lrcn,因为这样一来,我可以用lrcn用户来随便操作这个项目文件,lrcn用户是我登录linxu系统的用户,在开发项目,平时使用的时候很方便。
 
  sudo chown lrcn:www /var/www -R # 更改项目的权限
  sudo ln -s /var/www/symfony ~/projects/symfony # 在家目录访问项目
  sudo chmod 775 /var/www -R # 让www用户可以操作文件
  sudo chmod g+s /var/www -R # 以后lrcn用户创建的文件或文件夹都继承了www用户组,而不是lrcn用户组,这个命令很重要
  更改后的效果:
 
  [lrcn@lrcn-pc symfony]$ ls -al
  总用量 108
  drwxrwsr-x 10 lrcn www 4096 12月 10 01:14 .
  drwxrwsr-x 3 lrcn www 4096 12月 10 00:41 ..
  drwxrwsr-x 2 lrcn www 4096 12月 10 00:41 bin
  -rwxrwxr-x 1 lrcn www 1146 12月 10 00:41 composer.json
  -rwxrwxr-x 1 lrcn www 48074 12月 10 00:41 composer.lock
  drwxrwsr-x 3 lrcn www 4096 12月 10 00:41 config
  -rwxrwxr-x 1 lrcn www 495 12月 10 00:41 .env
  -rwxrwxr-x 1 lrcn www 495 12月 10 00:41 .env.dist
  drwxrwsr-x 8 lrcn www 4096 12月 10 00:41 .git
  -rwxrwxr-x 1 lrcn www 106 12月 10 00:41 .gitignore
  drwxrwsr-x 4 lrcn www 4096 12月 10 00:41 .idea
  drwxrwsr-x 2 lrcn www 4096 12月 10 10:42 public
  drwxrwsr-x 3 lrcn www 4096 12月 10 00:41 src
  -rwxrwxr-x 1 lrcn www 1889 12月 10 00:41 symfony.lock
  drwxrwsr-x 4 lrcn www 4096 12月 10 00:41 var
  drwxrwsr-x 5 lrcn www 4096 12月 10 00:41 vendor
  好了,到这一步基本上解决了网站提示File not found 的问题了。
 
  然后访问网站首页

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读