WebDAV:Linux平臺(tái)下搭建基于HTTP的協(xié)作平臺(tái)
原創(chuàng)【51CTO精選譯文】編者按:隨著辦公方式的靈活化,各個(gè)企業(yè)當(dāng)下對(duì)在線協(xié)作的需求也各有不同。企業(yè)內(nèi)部協(xié)作通常采用FTP服務(wù)器或微軟SharePoint等平臺(tái)實(shí)現(xiàn),但是長(zhǎng)距離的在線協(xié)作,則往往需要通過(guò)HTTP實(shí)現(xiàn)。以下介紹在Linux平臺(tái)下搭建遠(yuǎn)程協(xié)作平臺(tái)的協(xié)議:WebDAV。
WebDAV協(xié)議允許用戶通過(guò)HTTP保存和共享文件,這是一個(gè)非常有價(jià)值的突破,因?yàn)镠TTP通常是只讀的,除了訪問(wèn)文檔外,用戶可以編輯和重新上傳它們,你可以將其理解為一種基于HTTP的網(wǎng)絡(luò)文件系統(tǒng),或一種支持長(zhǎng)距離文件協(xié)作的方法。WebDAV協(xié)議支持文件鎖和版本控制,因此,當(dāng)你訪問(wèn)到WebDAV文件夾后,你就可以編輯文件,不用擔(dān)心會(huì)覆蓋其他人的編輯成果。時(shí)至今日,雖然在線協(xié)作的方法越來(lái)越多,但WebDAV在文件共享方面仍然有它的用處,特別是有很多的服務(wù)器和客戶端軟件支持它。
和FTP不一樣,HTTP提供強(qiáng)認(rèn)證和加密,以及緩存和代理支持,因?yàn)閃ebDAV是工作在HTTP之上的,因此它也可以利用HTTP的這些特性,SSH可能是另一種選擇,但SSH在移動(dòng)文件方面有一些限制,并且也沒(méi)有那么多客戶端默認(rèn)就支持它。
WebDAV和Apache2
Apache服務(wù)器通過(guò)加載ismod_dav可以支持WebDAV文件夾,在Debian或Ubuntu上,輸入下面的命令開啟這個(gè)功能:
a2enmod dav a2enmod dav_fs /etc/init.d/apache2 restart
Mod_dav為服務(wù)器添加了WebDAV功能,mod_dav_fs提供后臺(tái)支持,允許訪問(wèn)服務(wù)器文件系統(tǒng)中的資源,更多關(guān)于dav和dav_fs的詳細(xì)信息,請(qǐng)參考Apache的幫助手冊(cè)。
你也可以設(shè)置通過(guò)WebDAV可以訪問(wèn)的文件夾,如:
<Directory "/web/juliet/davfolder"> Dav On Order Allow,Deny Allow from all AuthType Digest AuthName WebDAV-Realm AuthUserFile "/usr/var/webdav.passwd" require user juliet </Directory>
這里最重要的一行是Dav On,它將這個(gè)目錄轉(zhuǎn)換成一個(gè)WebDAV文件夾,剩下的部分都是對(duì)這個(gè)目錄設(shè)置的安全訪問(wèn)限制,在任何目錄上開啟WebDAV功能之前,最重要的是設(shè)置認(rèn)證,否則就會(huì)存在很大的漏洞,這里使用了MD5 Digest認(rèn)證,將訪問(wèn)權(quán)限制到用戶名,你也可以使用require valid-user。
為了允許別人寫入你的目錄,你需要修改它的權(quán)限,注意,Apache用戶必須能夠?qū)懭脒@個(gè)目錄,再提醒一下,一定要注意安全問(wèn)題,最好將WebDAV目錄和你的網(wǎng)站文件適度地分開。
如果要手動(dòng)設(shè)置WebDAV,你需要在Apache配置文件中添加下面的內(nèi)容:
LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so LoadModule dav_fs_module /usr/lib/apache2/modules/mod_dav_fs.so DAVLockDB ${APACHE_LOCK_DIR}/DAVLock
然后重啟Apache,再設(shè)置你要共享的目錄。
客戶端DAV
雖然DAV通常由Web服務(wù)器提供,但Web瀏覽器不是訪問(wèn)它的最佳渠道,大多數(shù)時(shí)候,你得到的是一個(gè)目錄列表(如果你已經(jīng)在Apache設(shè)置中開啟這個(gè)功能),只能讀取或下載文件,不能編輯或上傳文件。
如果你想圖形化訪問(wèn),Nautilus和Konqueror文件瀏覽器都內(nèi)置了對(duì)WebDAV的支持,使用dav://server.example.com/juliet打開文件夾(需要用戶名和密碼),現(xiàn)在你應(yīng)該能夠編輯和上傳文件了,如果不行,可能需要檢查一下服務(wù)端的目錄和文件權(quán)限設(shè)置。
另一個(gè)WebDAV客戶端是cadaver,它是一個(gè)純命令行客戶端,它的工作方式和FTP客戶端差不多,使用下面的命令建立一個(gè)連接:
cadaver http://juliet.example.com/myfolder
當(dāng)然,這里也是需要用戶名和密碼的,進(jìn)入指定文件夾后,你就可以使用get(或mget) filename下載文件,或put(或mput) filename上傳文件了,cadaver也允許你編輯文件的元數(shù)據(jù),而Nautilus和Konqueror則不行。還有一個(gè)辦法是使用fusedav(Debian或Ubuntu中已包含)作為普通文件系統(tǒng)的一部分訪問(wèn)WebDAV目錄,你需要使用adduser username fuse將你的用戶添加到fuse用戶組,記住,一定要退出重新登錄才會(huì)生效,然后使用:
fusedav http://juliet.example.com/myfolder localfolder
打開遠(yuǎn)程目錄,將其掛載為本地文件夾(localfolder),注意這個(gè)目錄必須事先創(chuàng)建好。
使用WebDAV還可以做到更多
除Mod_dav_fs允許你使用服務(wù)端目錄系統(tǒng)提供WebDAV文件外,還有其它模塊也行,如mod_dav_svn,它可以通過(guò)Apache提供一個(gè)Subversion倉(cāng)庫(kù),如果你要這么做,你還需要加載mod_dav_lock模塊(mod_dav_fs不需要鎖模塊,因?yàn)樗凶约旱逆i)。因?yàn)閃ebDAV是一個(gè)開放的協(xié)議,如果需要,你還可以用它做更多的事情。
原文:http://www.serverwatch.com/tutorials/article.php/3929346/article.htm
【編輯推薦】