解決 Raspberry Pi 上 Apache 和 Django 應用的權限問題

在 Raspberry Pi 上部署 Django 應用時,我們遇到了一個常見的權限問題。Apache 伺服器(運行在 www-data 用戶下)無法訪問位於用戶家目錄中的 Django 專案文件。以下是我們診斷和解決這個問題的步驟:

  • 問題診斷

首先,我們檢查了相關目錄的權限:

ls -ld /home/marco /home/marco/todolist

輸出顯示:

drwx------ 19 marco marco    4096 Sep 29 09:17 /home/marco
drwxr-xr-x  5 marco www-data 4096 Sep 29 09:54 /home/marco/todolist

我們發現 /home/marco 目錄的權限是 700(drwx——),這意味著只有 marco 用戶可以訪問該目錄。這就是為什麼 Apache(運行在 www-data 用戶下)無法訪問 /home/marco/todolist 目錄的原因。

  • 解決方案

為了解決這個問題,我們需要修改 /home/marco 目錄的權限,允許其他用戶有執行(進入目錄)的權限:

sudo chmod 711 /home/marco

這個命令將 /home/marco 目錄的權限改為 711(drwx–x–x),允許其他用戶(包括 www-data)進入該目錄,但不允許他們讀取或修改其中的內容。

  • 驗證更改

執行更改後,我們再次檢查目錄權限:

ls -ld /home/marco /home/marco/todolist

新的輸出顯示:

drwx--x--x 19 marco marco    4096 Sep 29 09:17 /home/marco
drwxr-xr-x  5 marco www-data 4096 Sep 29 09:54 /home/marco/todolist
  • 重啟 Apache

為了使更改生效,我們重新啟動了 Apache 服務:

sudo systemctl restart apache2
  • 結果

完成這些步驟後,Django 應用成功在 Raspberry Pi 上運行,可以通過瀏覽器訪問 http://192.168.xxx.xxx(或者 Raspberry Pi 的 IP 地址)來查看。

結論: 這個案例展示了在 Linux 系統上部署 Web 應用時,正確設置文件和目錄權限的重要性。通過仔細分析錯誤日誌和目錄權限,我們能夠識別並解決問題,同時保持適當的安全性。這種方法不僅解決了當前的問題,還為未來可能遇到的類似情況提供了寶貴的經驗。

發表迴響