直接上傳檔案到AWS主機的網站資料夾

4.7/5 - (4 votes)

使用AWS亞馬遜或是GCP這類雲主機的時候,我們拿到的使用者帳號不會是具備root管理員權限的帳號,所以我們使用SFTP上傳檔案的時候,只能上傳檔案到自己帳號的家目錄,像是AWS的ubuntu作業系統,給的帳號是ubuntu,家目錄就是/home/ubuntu。若是我們希望能透過sftp上傳到網站資料夾,比方說是/var/www/html 底下,就會出現權限不足(permission denied)的訊息。

這種情況下,要直接上傳檔案到網站資料夾,必須先將檔案用SFTP上傳到家目錄,然後換用SSH登入主機,透過sudo的指令取得管理員權限把檔案搬到網站資料夾。但這個方式聽起來就很麻煩,不是嗎?

另外一種方式是將整個網站資料夾搬到自己帳號的家目錄裡頭,舉例:我們將/var/www/html搬到,/home/ubuntu/www/html。(註:這個資料夾只是範例,你的網頁資料夾可能在別的地方,但就是不在你的家目錄底下。)如果你有用過虛擬主機的cPanel後台,應該會覺得這種做法很眼熟,因為cPanel就是這樣做的。不過這種做法要去改網頁伺服器的vhost,之後修改或是刪除網站之類的維護工作比較容易有疏漏的情況,所以這個方式傑克就不推薦了。

在衡量過上述兩種方法之後,我們還是回到一開始的問題,如何直接透過SFTP將自己電腦的檔案上傳到網頁資料夾/var/www/html,而下面的做法,就可以直接達成這個目的。

這方法只要兩行指令就完成了:

sudo adduser ubuntu www-data
sudo chmod -R g+rw /var/www

另外我還建議做一個www的捷徑在家目錄下:

sudo ln -s /var/www /home/ubuntu/www

第三行只是在使用SFTP軟體的時候會更加方便,但不是非做不可,連這行算起來總共用到三行指令,下面針對三行指令稍作說明:

第一行是把自己的帳號ubuntu加入www-data群組,這裡的ubuntu帳號跟www-data群組,會因為實際狀況而需要改變,請不要直接複製貼上,如果你的帳號不是ubuntu,就應該換成實際使用的帳號名。
至於www-data群組,可以透過下方指令,來看自己的網頁資料夾的所有人/群組是什麼:

ls -l /var

如果光看文字不是很清楚,可以看我影片的說明。

第二行是修改/var/www的存取權限,但如果你的網頁資料夾跟我的不同,也請修改成實際的資料夾。
-R的參數是會修改/var/www底下所有的子目錄

第三行是做一個/var/www 資料夾的捷徑到家目錄裡頭的www

完整操作說明,請觀看下方影片。

延伸閱讀:
AWS亞馬遜雲主機一年免費方案申請流程
創建AWS亞馬遜雲主機一年免費之EC2主機

若您無法觀看下方YouTube影片,請按此前往YouTube網站觀看

訂閱文章更新電子報

透過WordPress.com平台(jetpack功能)訂閱文章更新電子報

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

返回頂端