Centos

缺少 /var/www 目錄

  • October 30, 2018

我在 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指令指定在文件系統上查找要服務的實際文件的位置。如果你有一個 user websiteadmin,你可以指定它是/home/websiteadmin/var/www/html或者你喜歡的任何目錄。

引用自:https://unix.stackexchange.com/questions/478753