缺少 /var/www 目錄
我在 AWS 上創建了一個 CentOS 7 EC2 實例並安裝了 nginx 作為我的 Web 伺服器。然而,與 Apache 不同的是,它沒有創建 /var/www 文件夾,而是創建了 /usr/share/nginx/html。
我更願意將我的網站文件上傳到 /var/www。雖然我對 Linux 終端有一些經驗(我主要是一名 Windows 開發人員),但我想知道為 PHP 網站(Yii2 框架)創建 /var/www 文件夾的正確方法是什麼。
我確實使用了 mkdir,但 Filezilla 在上傳文件和創建子目錄時出現權限被拒絕錯誤。我可以在目錄上做 chown,但我不確定這是否安全或正確的做法。我將設置文件夾的哪些權限?
編輯
也許這個問題有點令人困惑……
Filezilla 配置正確,我可以上傳到其他目錄。這是一個文件/文件夾權限問題,我需要在 mkdir 之前添加 sudo 前綴以創建 /var/www 文件夾或其中的任何文件夾,這是 Filezilla 不做的事情。
問題不是如何重新配置 nginx 文件夾,而是在為 nginx 創建 /var/www 文件夾時我應該記住什麼(安全性)。我應該給予什麼權限,這樣我就不需要 sudo mkdir。我假設最好不要將所有權(chown)授予根或其他東西。
只是想確定一下,因為這將是一個生產伺服器。
在安裝了 Apache 的典型系統上,
/var/www
它確實存在,但它歸root 使用者所有:~$ ls -ld /var/www drwxr-xr-x 3 root root 4096 Aug 7 2016 /var/www
如果您希望您的網站內容由 root 以外的使用者擁有,您將需要創建一個由您希望管理網站文件的使用者擁有的目錄(以 root 身份),或者在以下位置創建一個符號連結
/var/www/html
指向 ngnix 已經為您創建的文件根目錄。無論哪種方式,該目錄可能也歸根使用者所有。您可以將chown
其分配給要管理網站內容的角色使用者,創建指向角色使用者擁有的不同目錄的虛擬主機(使用 Apache 的說法),或者找到類似的解決方案。如果文件根目錄由 root 擁有,則只有 root 使用者可以更改其內容,這意味著您必須以 root 身份進行身份驗證才能上傳新文件。更改所有者或從不同位置提供服務可能是最好的選擇。
在 ngnix 的說法中,虛擬主機也稱為伺服器塊;
/etc/ngnix/sites-available/
您可以找到可以連結到的範例(通常)/etc/ngnix/sites-enabled
。使用 Server Blocks 時的關鍵是使用server_name
(ngnix) 或ServerName
(Apache) 指令來指示要在 HTTP 請求標頭中查找的主機名。一個範例 ngnix 伺服器塊文件可能類似於:server { listen 80; listen [::]:80; root /var/www/example.com/html; index index.html index.htm index.nginx-debian.html; server_name example.com www.example.com; location / { try_files $uri $uri/ =404; } }
該
root
指令指定在文件系統上查找要服務的實際文件的位置。如果你有一個 userwebsiteadmin
,你可以指定它是/home/websiteadmin/var/www/html
或者你喜歡的任何目錄。