在windows上運(yùn)行好好的項(xiàng)目,遷移到Linux上就遇到了很多問題,其中最為重要的是網(wǎng)站目錄權(quán)限的設(shè)置,當(dāng)然簡(jiǎn)單期間你可以用 命令
"chmod 777 -R you web site" ,這樣你就不用擔(dān)心項(xiàng)目運(yùn)行的時(shí)候會(huì)涉及到權(quán)限問題。通常來說如果你的項(xiàng)目時(shí)部署在公網(wǎng)或者是部
署在租用的Linux服務(wù)器上不建議這么做,應(yīng)為如果這樣設(shè)置了那么任何用戶都可以對(duì)這個(gè)站點(diǎn)下的文件,目錄進(jìn)行操作,這樣也會(huì)影響網(wǎng)站的運(yùn)營(yíng),
同樣不安全。下面以u(píng)buntu14.4 系統(tǒng)為主進(jìn)行分析。
最簡(jiǎn)單的做法如下,這里不建議這么做(例如你的網(wǎng)站部署目錄為/var/www/html):
chmod 777 -R /var/www/html/demo
在ubuntu 安裝完apache 之后,默認(rèn)會(huì)往系統(tǒng)中增加www-data 用戶 和 www-data 用戶組,同樣你可以用 ps -ef | grep apache 查看 apache 進(jìn)程,你會(huì)發(fā)現(xiàn)apache的
主進(jìn)程是用root用戶啟動(dòng)的,那么子線程的用戶都是 www-data 這個(gè)用戶。

這樣你就可以理解為這個(gè)apache服務(wù)器運(yùn)行的用戶和用戶組是www-data,假設(shè)網(wǎng)站的用戶為demo,項(xiàng)目的目?為/var/www/html/demo
接下來就分幾個(gè)步驟來設(shè)置(用root用戶執(zhí)行下面的命令):
1.首先把網(wǎng)站的的目錄和文件的所有者設(shè)置為demo,所屬組設(shè)置為www-data ,對(duì)與Linux命令不熟悉的,可以到網(wǎng)上查詢。
chown -R demo:www-data /var/www/html/demo
2.設(shè)置網(wǎng)站目錄權(quán)限為750,750是demo這個(gè)用戶對(duì)目錄擁有讀寫執(zhí)行的權(quán)限,這樣demo用戶可以在任何目錄下創(chuàng)建文件,用戶組有有讀執(zhí)行權(quán)限,這樣就有進(jìn)入目錄的權(quán)限,其它用戶沒有任何權(quán)限。
chmod 750 /var/www/html/demo
cd /var/www/html/demofind -type d -exec chmod 750 {} ;
3.設(shè)置網(wǎng)站文件權(quán)限為640,640指只有demo用戶對(duì)網(wǎng)站文件有更改的權(quán)限,apache服務(wù)器只有讀取文件的權(quán)限,無法更改文件,其它用戶無任何權(quán)限。
find -not -type d -exec chmod 640 {} ;
4.需要針對(duì)個(gè)別目錄來設(shè)置權(quán)限,以Thinkphp為例,它的Runtime 目錄存儲(chǔ)的有日志文件,還有與數(shù)據(jù)庫做ORM映射的數(shù)據(jù)庫表信息,這說明apache服務(wù)器要對(duì)這些目錄
有訪問的權(quán)限,并且對(duì)于線面的日志文件有寫入的權(quán)限,那么這樣就需要對(duì)于這些特殊目錄設(shè)置。
cd /var/www/html/demofind . -name "Runtime" -type d -exec chmod -R 770 {} ;
執(zhí)行上面的命令請(qǐng)注意 “{}”與 “”之間是有空格的,上面的-R參數(shù)是遞歸給Runtime 目錄下面的目錄和文件賦予 770 權(quán)限,當(dāng)然了你會(huì)說日志文件是不需要執(zhí)行權(quán)限的,
不過這里沒關(guān)系,當(dāng)你把日志文件刪除掉之后,生成出來的文件是沒執(zhí)行權(quán)限的。因?yàn)楫?dāng)你把日志文件刪除掉之后,那么生成日志文件的的用戶和所有者都是www-data,
所以新的日志文件權(quán)限就會(huì)變成下面這樣:

這樣整個(gè)站點(diǎn)你就可以通過這種方式管理起來了。