Ubuntu安裝WebDav文件共享服務器(NAS)

爲了作個NAS,折騰了超久的Samba,看似簡單,其實Samba的用戶設置實在太繁瑣,坑太深。用戶權限和目錄權限、甚至磁盤格式稍有不一樣,都會致使沒法登陸。實在不靠譜,實際體驗也不是很穩定。
因此在找Alternatives過程當中,發現了這個也存在了好久的WebDav協議。

不像Samba是一個微軟開發的軟件體系,WebDav只是一種協議,確切說是世界上最廣泛的HTTP協議的一個小擴展。它不是一個軟件nginx

因此就好理解,爲何搜索不到WebDav的官網和官方安裝指南了——由於沒有「官方」。誰均可以開發軟件支持這個協議,就像水均可以開發瀏覽器支持HTTP協議瀏覽網站同樣。

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

# 安裝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後面沒有/斜槓。數據庫

網頁中若是正常顯示目錄中的文件結構,則能夠正常訪問:
imageapache

這一步完成,咱們就能夠開始把這個共享文件夾映射到Mac、Windows上的本地文件夾了。vim

磁盤映射

網頁裏只能像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軟件設置和架構出了問題。

相關文章
相關標籤/搜索