LNMP下提示File not found问题的解决方法
這篇文章主要給介紹了關(guān)于在LNMP下提示File not found問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
前言
一般情況下每個(gè)虛擬主機(jī)就是一個(gè)網(wǎng)站,網(wǎng)站一般通過(guò)域名進(jìn)行訪問(wèn)。最近在配置LNMP(Linux Nginx MariaDB Php-fpm)的時(shí)候遇到了1個(gè)問(wèn)題:
訪問(wèn)網(wǎng)站首頁(yè)始終提升File not found。
最終解決后總結(jié)一條就是: 網(wǎng)站根目錄的權(quán)限問(wèn)題。
起因
說(shuō)說(shuō)事情的起因。本人用的系統(tǒng)是Manjaro Linux系統(tǒng)。所以用一條命令裝好LNMP環(huán)境: sudo pacman -S mariadb nginx php。剛開始,我把symfony項(xiàng)目放在我的家目錄,也就是~/projects。然后我從symfony官方拷貝一份nginx的配置文件symfony.conf,放在了/etc/nginx/sites-available目錄下,然后將root參數(shù)更改為/home/lrcn/projects/symfony/public,并更改了fastcgi_pass參數(shù)為unix:/run/php-fpm/php-fpm.sock。好,運(yùn)行sudo nginx -t測(cè)試通過(guò),然后重啟nginx。
但問(wèn)題來(lái)了,我在瀏覽器輸入symfony.dev(添加1條hosts為127.0.0.1 symfony.dev)始終提示File not found。即使我將網(wǎng)站目錄設(shè)置為777也不行!這個(gè)問(wèn)題把我困擾了一天!真的是心都快爆炸了。最后我深呼吸一口氣,然后思考這個(gè)問(wèn)題。果然在找遍互聯(lián)網(wǎng)資源后得到答案。
是這樣解釋的。PHP-FPM程序需要有一個(gè)用戶和用戶組來(lái)運(yùn)行這個(gè)程序。這個(gè)用戶和用戶組對(duì)我的項(xiàng)目文件必須要有rx權(quán)限。有些目錄還必須具有rwx權(quán)限,比如upload,log目錄等等。Nginx程序同樣需要一個(gè)用戶,這個(gè)用戶同樣對(duì)于這個(gè)項(xiàng)目文件具有rx權(quán)限。
解決方法
由于我的nginx默認(rèn)用戶是http,所以我想把它改為nginx,并且把nginx加入www用戶組。同時(shí),我把php-fpm的用戶改為www,用戶組也改為www。
1)創(chuàng)建用戶
sudo useradd -s /sbin/nologin www # 創(chuàng)建www用戶,同時(shí)會(huì)自動(dòng)創(chuàng)建www用戶組sudo gpasswd -a nginx www # 把nginx用戶加入到www用戶組
2)修改配置文件
由于我這里只管文件權(quán)限相關(guān)的配置,其余配置自己還需要調(diào)整
grep “[;]” /etc/php/php-fpm.d/www.conf# 修改的時(shí)候只管修改user, group, listen.owner, listen.group,其余的都是默認(rèn)配置[www]user = wwwgroup = wwwlisten = /run/php-fpm/php-fpm.socklisten.owner = wwwlisten.group = wwwlisten.mode = 0660pm = dynamicpm.max_children = 5pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 3# /etc/nginx/nginx.conf# 在第一行寫入,其余的不變user nginx www;
3)修改項(xiàng)目文件權(quán)限
這一步我發(fā)現(xiàn)了一個(gè)很詭異的問(wèn)題,如果我將網(wǎng)站目錄放到lrcn用戶的家目錄的話,www用戶始終無(wú)法訪問(wèn)這個(gè)項(xiàng)目文件,即使我把~/projects設(shè)置為了chown www:www ~/projects -R,但都不管用,運(yùn)行測(cè)試命令sudo -u www stat ~/projects/symfony依舊提示沒有權(quán)限。我想,應(yīng)該是/home/lrcn目錄的擁有者為lrcn,即使我將它子目錄projects改為了www:www, 也是不能訪問(wèn)的。這合情合理。所以,我又將項(xiàng)目目錄放在了/var/www目錄下,然后運(yùn)行sudo -u www stat /var/www, 得到了正常的結(jié)果:生辰八字起名字
[lrcn@lrcn-pc nginx]$ sudo -u www stat /var/www[sudo] lrcn 的密碼: 文件:/var/www 大小:4096 塊:8 IO 塊:4096 目錄設(shè)備:801h/2049d Inode:3671064 硬鏈接:3權(quán)限:(2775/drwxrwsr-x) Uid:( 1000/ lrcn) Gid:( 1001/ lrcn)最近訪問(wèn):2017-12-10 00:40:04.274947995 +0800最近更改:2017-12-10 00:41:34.772321160 +0800最近改動(dòng):2017-12-10 10:51:15.811999323 +0800創(chuàng)建時(shí)間
總結(jié)
以上是生活随笔為你收集整理的LNMP下提示File not found问题的解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于Spring Boot WebSoc
- 下一篇: 解析CI即CodeIgniter框架在N