天天看點

Ubuntu安裝WebDav檔案共享伺服器(NAS)

為了做個NAS,折騰了超久的Samba,看似簡單,其實Samba的使用者設定實在太繁瑣,坑太深。使用者權限和目錄權限、甚至磁盤格式稍有不同,都會導緻無法登入。實在不靠譜,實際體驗也不是很穩定。

是以在找Alternatives過程中,發現了這個也存在了很久的WebDav協定。

不像Samba是一個微軟開發的軟體體系,WebDav隻是一種協定,确切說是世界上最普遍的HTTP協定的一個小擴充。它不是一個軟體。

是以就好了解,為什麼搜尋不到WebDav的官網和官方安裝指南了——因為沒有“官方”。誰都可以開發軟體支援這個協定,就像水都可以開發浏覽器支援HTTP協定浏覽網站一樣。

參考:How To Set Up WebDAV With Apache2 On Debian Etch

# 安裝Apache2伺服器
sudo apt-get  install  -y apache2

# 開啟Apache2中對WebDav協定的支援 (記住最好在使用者目錄下執行否則報錯)
cd ~
sudo a2enmod dav
sudo a2enmod dav_fs

# 建立共享目錄并修改權限
sudo mkdir -p /var/www/webdav
sudo chown -R www-data:www-data  /var/www/webdav

# 建立WebDav的通路使用者資料庫,順便建立使用者`pi`
sudo htpasswd -c /etc/apache2/webdav.password pi
# 建立guest使用者
#sudo htpasswd /etc/apache2/webdav.password guest

# 修改使用者資料庫通路權限
sudo chown root:www-data /etc/apache2/webdav.password
sudo chmod 640 /etc/apache2/webdav.password

# 打開預設配置檔案
sudo vim /etc/apache2/sites-available/000-default.conf

# 全部替換為以下内容(記得先備份):

Alias /webdav  /var/www/webdav

<Location /webdav>
 Options Indexes
 DAV On
 AuthType Basic
 AuthName "webdav"
 AuthUserFile /etc/apache2/webdav.password
 Require valid-user
 </Location>

# 重新開機Apache2伺服器
sudo systemctl restart apache2
# 或
sudo /etc/init.d/apache2 reload
           

然後就可以用任意浏覽器輸入:

http://樹莓派的IP位址/webdav

來通路了。

注意,

webdav

後面沒有

/

斜杠。

網頁中如果正常顯示目錄中的檔案結構,則可以正常通路:

Ubuntu安裝WebDav檔案共享伺服器(NAS)

這一步完成,我們就可以開始把這個共享檔案夾映射到Mac、Windows上的本地檔案夾了。

磁盤映射

網頁裡隻能像FTP一樣顯示檔案目錄和下載下傳檔案。

如果要正常使用,我們需要把它映射為本地目錄才行:

  • Mac上:在Finder中用

    CMD+K

    打開連接配接伺服器選項,輸入

    http://樹莓派IP位址/webdav

    ,輸入Webdav建立過的使用者名密碼來完成映射。
  • iPhone上:安裝網盤通路最強的

    Readdle Documents

    ,添加WebDav服務,輸入資訊後就可以通路。直接看文檔、看視訊、聽歌都行。
  • Windows上:比較麻煩的是,Win7以上預設隻支援HTTPS的網絡驅動器,做為HTTP的WebDav是不能連的。是以要修改Windows系統資料庫,讓它支援HTTP。方法入下:
    • 開始菜單 -> 運作 -> 輸入regedit 并按回車,就打開了系統資料庫
    • 系統資料庫中找到

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel

      這個項目,把值改為

      2

    • 開始菜單 -> 運作 -> 輸入cmd 并按回車,打開指令行
    • 輸入

      net stop webclient

      并按回車,停止網絡用戶端
    • 輸入

      net start webclient

      并按回車,開啟網絡用戶端
    • 然後在檔案夾菜單中找到

      映射網絡驅動器

      ,輸入網址

      http://樹莓派IP位址/webdav

      \\樹莓派IP位址\webdav

      ,然後輸入使用者名密碼,就能映射成功了。
  • 浏覽器上:随便什麼裝置,隻要是個浏覽器就能支援。可以線上播放常用視訊,直接打開圖檔浏覽。但是不能上傳。
Ubuntu安裝WebDav檔案共享伺服器(NAS)

挂載外部磁盤(移動硬碟、U盤)

和Samba一樣,隻要在

/var/www/webdav/

這個共享出來的檔案夾中,建立個空目錄,然後把移動硬碟用

mount

指令挂載到這個目錄上。外部就可以通路了。

使用速度和感受

配置上,比Samba不知道簡單到哪裡去了。

實驗證明,速度非凡!

Mac映射完成後,通路就像本地檔案夾一樣快,而且可以直接看視訊、預覽圖檔、支援原本各種快捷鍵等。

還可以直接拖放檔案來複制,速度也快到和本地複制檔案沒有差別。

如果對比Samba,最明顯的是看圖檔和視訊的打開速度。

Samba要等一秒以上,而WebDav幾乎沒有等待,或者說和本地打開檔案一樣速度。

唯一缺點是,Windows通路的話,是很卡很卡的。

穩定性上,因為是基于Apache2的,bug非常少,權限也不用傻傻分不清(和本地使用者也沒關系)。

遠端通路上(我在AWS新加坡伺服器上建的WebDav),速度也相當可靠,比我通路樹莓派的WebDav還快。畢竟亞馬遜伺服器配置高網速快。隻是視訊通路就沒那麼友善,經常卡頓、發生異常。但是也比較滿意了。

總結:WebDav配置友善,通路輕松,權限管理輕松,穩定,超多平台支援,完美!

常見問題

Apache2 Reload出錯

Ubuntu安裝WebDav檔案共享伺服器(NAS)

用指令

sudo /etc/init.d/apache2 reload

重新開機伺服器沒有反應,用指令

sudo /etc/init.d/apache2 reload

重新加載Apache2時也報錯:

[....] Reloading apache2 configuration (via systemctl): apache2.serviceJob for apache2.service failed. See 'systemctl status apache2.service' and 'journalctl -xn' for details.
 failed!
           

一般來講,很有可能是80端口被占用了,有可能是Nginx。

是以要找到占用端口的服務,并關閉它。

具體方法如下:

# 找到所有nginx相關程序
$  ps -ef |grep nginx

# 按照顯示出的nginx程序号逐一關閉
$ sudo kill -TERM 程序号
# 或
$ pkill -9 nginx

# 重新加載Apache2伺服器
$ sudo /etc/init.d/apache2 reload

# 重新開機Apache2伺服器
$ sudo systemctl restart apache2
           

Reload後成功後就會顯示:

Ubuntu安裝WebDav檔案共享伺服器(NAS)

這樣再用浏覽器嘗試通路webdav服務的網址,就OK了

為什麼通路WebDav很慢

一般來講,無論是WebDav還是Samba,通路速度慢主要有這些因素:

  • 伺服器網速不夠
  • 本機用戶端電腦的網速不夠
  • 路由器速度有限
  • 伺服器硬碟(或U盤)配置太低(轉速低)
  • 伺服器主機電腦組態低:CPU、記憶體都不足 (樹莓派就是這樣)
  • 用戶端所在的電腦組態低

是以,如果以上所有原因都不構成連接配接速度慢的原因的話,才需要考慮是不是WebDav軟體設定和架構出了問題。