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後面沒有/斜槓。

網頁中如果正常顯示目錄中的文件結構,則可以正常訪問:
image

這一步完成,我們就可以開始把這個共享文件夾映射到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,然後輸入用戶名密碼,就能映射成功了。
  • 瀏覽器上:隨便什麼設備,只要是個瀏覽器就能支持。可以在線播放常用視頻,直接打開圖片瀏覽。但是不能上傳。

image

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

和Samba一樣,只要在/var/www/webdav/這個共享出來的文件夾中,創建個空目錄,然後把移動硬盤用mount命令掛載到這個目錄上。外部就可以訪問了。

使用速度和感受

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

實驗證明,速度非凡!
Mac映射完成後,訪問就像本地文件夾一樣快,而且可以直接看視頻、預覽圖片、支持原本各種快捷鍵等。
還可以直接拖放文件來複制,速度也快到和本地複製文件沒有區別。
如果對比Samba,最明顯的是看圖片和視頻的打開速度。
Samba要等一秒以上,而WebDav幾乎沒有等待,或者說和本地打開文件一樣速度。
唯一缺點是,Windows訪問的話,是很卡很卡的。

穩定性上,因爲是基於Apache2的,bug非常少,權限也不用傻傻分不清(和本地用戶也沒關係)。

遠程訪問上(我在AWS新加坡服務器上建的WebDav),速度也相當可靠,比我訪問樹莓派的WebDav還快。畢竟亞馬遜服務器配置高網速快。只是視頻訪問就沒那麼方便,經常卡頓、發生異常。但是也比較滿意了。

總結:WebDav配置方便,訪問輕鬆,權限管理輕鬆,穩定,超多平臺支持,完美!

常見問題

Apache2 Reload出錯

image

用命令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後成功後就會顯示:
image

這樣再用瀏覽器嘗試訪問webdav服務的網址,就OK了

爲什麼訪問WebDav很慢

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

  • 服務器網速不夠
  • 本機客戶端電腦的網速不夠
  • 路由器速度有限
  • 服務器硬盤(或U盤)配置太低(轉速低)
  • 服務器主機電腦配置低:CPU、內存都不足 (樹莓派就是這樣)
  • 客戶端所在的電腦配置低

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章