摘要:最近在配置的時(shí)候遇到了個(gè)問題。最終解決后總結(jié)一條就是網(wǎng)站根目錄的權(quán)限問題。本人用的系統(tǒng)是系統(tǒng)。但問題來了,我在瀏覽器輸入添加條為始終提示。即使我將網(wǎng)站目錄設(shè)置為也不行這個(gè)問題把我困擾了一天真的是心都快爆炸了。
最近在配置LNMP(Linux Nginx MariaDB Php-fpm)的時(shí)候遇到了1個(gè)問題。
訪問網(wǎng)站首頁始終提升File not found。
最終解決后總結(jié)一條就是: 網(wǎng)站根目錄的權(quán)限問題。
說說事情的起因。本人用的系統(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è)試通過,然后重啟nginx。
但問題來了,我在瀏覽器輸入symfony.dev(添加1條hosts為127.0.0.1 symfony.dev)始終提示File not found。即使我將網(wǎng)站目錄設(shè)置為777也不行!這個(gè)問題把我困擾了一天!真的是心都快爆炸了。最后我深呼吸一口氣,然后思考這個(gè)問題。果然在找遍互聯(lián)網(wǎng)資源后得到答案。
是這樣解釋的。PHP-FPM程序需要有一個(gè)用戶和用戶組來運(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 = 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)修改項(xiàng)目文件權(quán)限
這一步我發(fā)現(xiàn)了一個(gè)很詭異的問題,如果我將網(wǎng)站目錄放到lrcn用戶的家目錄的話,www用戶始終無法訪問這個(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, 也是不能訪問的。這合情合理。所以,我又將項(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 大?。?096 塊:8 IO 塊:4096 目錄 設(shè)備:801h/2049d Inode:3671064 硬鏈接:3 權(quán)限:(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 最近改動(dòng):2017-12-10 10:51:15.811999323 +0800 創(chuàng)建時(shí)間:-
如果得到以上信息,證明www用戶是可以訪問網(wǎng)站根目錄的,然后將項(xiàng)目symfony移動(dòng)到/var/www目錄下就可以了。
[lrcn@lrcn-pc var]$ tree www -L 2 www └── symfony ├── bin ├── composer.json ├── composer.lock ├── config ├── public ├── src ├── symfony.lock ├── var └── vendor
好,修改目錄權(quán)限。我將/var/www目錄修改為了lrcn:www,并且在~/projcects目錄下創(chuàng)建了一個(gè)指向/var/www/symfony的軟鏈接,這樣我就可以在家目錄操作項(xiàng)目文件。問題是為什么要把/var/www目錄的擁有者修改為lrcn,因?yàn)檫@樣一來,我可以用lrcn用戶來隨便操作這個(gè)項(xiàng)目文件,lrcn用戶是我登錄linxu系統(tǒng)的用戶,在開發(fā)項(xiàng)目,平時(shí)使用的時(shí)候很方便。
sudo chown lrcn:www /var/www -R # 更改項(xiàng)目的權(quán)限 sudo ln -s /var/www/symfony ~/projects/symfony # 在家目錄訪問項(xiàng)目 sudo chmod 775 /var/www -R # 讓www用戶可以操作文件 sudo chmod g+s /var/www -R # 以后lrcn用戶創(chuàng)建的文件或文件夾都繼承了www用戶組,而不是lrcn用戶組,這個(gè)命令很重要
更改后的效果:
[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
好了,到這一步基本上解決了網(wǎng)站提示File not found 的問題了。
然后訪問網(wǎng)站首頁:
有任何問題到評(píng)論區(qū)留言吧!謝謝!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26198.html
摘要:最近在配置的時(shí)候遇到了個(gè)問題。最終解決后總結(jié)一條就是網(wǎng)站根目錄的權(quán)限問題。本人用的系統(tǒng)是系統(tǒng)。但問題來了,我在瀏覽器輸入添加條為始終提示。即使我將網(wǎng)站目錄設(shè)置為也不行這個(gè)問題把我困擾了一天真的是心都快爆炸了。 最近在配置LNMP(Linux Nginx MariaDB Php-fpm)的時(shí)候遇到了1個(gè)問題。 訪問網(wǎng)站首頁始終提升File not found。 最終解決后總結(jié)一條就是: ...
摘要:經(jīng)過各種復(fù)現(xiàn)和文檔查詢,發(fā)現(xiàn)是的擴(kuò)展在和同時(shí)使用時(shí),會(huì)導(dǎo)致無法正確的處理緩存文件,最終影響服務(wù)。但是在正常的服務(wù)下,卻并不會(huì)查找該文件。這個(gè)指令對(duì)于的文件同樣有效。文本編輯器以及等程序卻并不是這樣操作的,從而導(dǎo)致有可能緩沖了殘缺的文件。 最近遇到一個(gè)非常奇怪的bug,在主機(jī)PHP代碼版本回退的過程中,導(dǎo)致備機(jī)服務(wù)不可用。經(jīng)過各種復(fù)現(xiàn)和文檔查詢,發(fā)現(xiàn)是PHP的apc擴(kuò)展在和rsync同時(shí)...
閱讀 1075·2021-11-12 10:34
閱讀 1002·2021-09-30 09:56
閱讀 679·2019-08-30 15:54
閱讀 2616·2019-08-30 11:14
閱讀 1478·2019-08-29 16:44
閱讀 3219·2019-08-29 16:35
閱讀 2505·2019-08-29 16:22
閱讀 2454·2019-08-29 15:39