在windows上運行好好的項目,遷移到Linux上就遇到了很多問題,其中最為重要的是網站目錄權限的設置,當然簡單期間你可以用 命令
"chmod 777 -R you web site" ,這樣你就不用擔心項目運行的時候會涉及到權限問題。通常來說如果你的項目時部署在公網或者是部
署在租用的Linux服務器上不建議這么做,應為如果這樣設置了那么任何用戶都可以對這個站點下的文件,目錄進行操作,這樣也會影響網站的運營,
同樣不安全。下面以ubuntu14.4 系統為主進行分析。
最簡單的做法如下,這里不建議這么做(例如你的網站部署目錄為/var/www/html):
chmod 777 -R /var/www/html/demo
在ubuntu 安裝完apache 之后,默認會往系統中增加www-data 用戶 和 www-data 用戶組,同樣你可以用 ps -ef | grep apache 查看 apache 進程,你會發現apache的
主進程是用root用戶啟動的,那么子線程的用戶都是 www-data 這個用戶。
這樣你就可以理解為這個apache服務器運行的用戶和用戶組是www-data,假設網站的用戶為demo,項目的目錄為/var/www/html/demo
接下來就分幾個步驟來設置(用root用戶執行下面的命令):
1.首先把網站的的目錄和文件的所有者設置為demo,所屬組設置為www-data ,對與Linux命令不熟悉的,可以到網上查詢。
chown -R demo:www-data /var/www/html/demo
2.設置網站目錄權限為750,750是demo這個用戶對目錄擁有讀寫執行的權限,這樣demo用戶可以在任何目錄下創建文件,用戶組有有讀執行權限,這樣就有進入目錄的權限,其它用戶沒有任何權限。
chmod 750 /var/www/html/demo cd /var/www/html/demo find -type d -exec chmod 750 {} \;
3.設置網站文件權限為640,640指只有demo用戶對網站文件有更改的權限,apache服務器只有讀取文件的權限,無法更改文件,其它用戶無任何權限。
find -not -type d -exec chmod 640 {} \;
4.需要針對個別目錄來設置權限,以Thinkphp為例,它的Runtime 目錄存儲的有日志文件,還有與數據庫做ORM映射的數據庫表信息,這說明apache服務器要對這些目錄
有訪問的權限,並且對於線面的日志文件有寫入的權限,那么這樣就需要對於這些特殊目錄設置。
cd /var/www/html/demo find . -name "Runtime" -type d -exec chmod -R 770 {} \;
執行上面的命令請注意 “{}”與 “\”之間是有空格的,上面的-R參數是遞歸給Runtime 目錄下面的目錄和文件賦予 770 權限,當然了你會說日志文件是不需要執行權限的,
不過這里沒關系,當你把日志文件刪除掉之后,生成出來的文件是沒執行權限的。因為當你把日志文件刪除掉之后,那么生成日志文件的的用戶和所有者都是www-data,
所以新的日志文件權限就會變成下面這樣:
這樣整個站點你就可以通過這種方式管理起來了。