紀錄一下,今天安裝 nfs server 的過程,中間受到別人幫助,從中學到很多

使用動機

Web frontend 的在本機完成(host, windows 10),開發完成後的 production code 要 deploy 到 embedded system 與後端 cgi 對接,但如果每次開都要 ssh 或 telnet 進 embedded system 更新 prodcution code 太麻煩,更何況 embbeded system 不一定有裝 git 或其傳輸檔案的方式,因此需要一種同步資料的方式,就是這次用到 nfs protocal (network file system)

(P.S. 鳥哥 linux 有 nfs 很詳細的介紹)

情境

大致上的狀況如上面這圖,再來就是如何安裝設定。 image source

安裝與設定

1.在 ubuntu 中安裝 nfs server 可參考這篇文章 Install NFS Server and Client on Ubuntu 18.04 LTS VITUX 的步驟

sudo apt-get update
sudo apt install nfs-kernel-server
sudo mkdir -p [/path/to/shared/folder]
sudo chown nobody:nogroup [/path/to/shared/folder]
sudo chmod [/path/to/shared/folder]

2.設定 nfs server /etc/exports 內容中設定 client 的 IP 與相關參數:

sudo vim /etc/exports
....
# add following lines in /etc/exports
....
[/path/to/shared/folder] [client_IP](rw,sync,all_squash,no_subtree_check,anonuid=[server_user_id],anongid=[server_user_id])

特別注意

  • 每次設定完要 service nfs-server restart
  • 資料夾權限與帳號權限
  • Public IP 和 Private IP 不要搞錯
    • ubuntu 可以用 ip add
  • 找到可以檢查協定的方式 (e.g. tcpdump)
  • 建議防火牆全部關掉,因為 nfs server 會很到許多 port

3.ssh / telent 進去 embedded system

掛載 nfs

mount [virtualbox_IP]:[/path/to/shared/folder] [embedded/mount/dir]
 -o tcp,nolock

解除掛載 nfs

umount -f /www

缺點

每次重新 build frontend code ,mount dir 都會壞掉 ,就要重新 mount/umount 一次 正在尋找解決方法