使用WebDav主要是为了给安卓的同步软件提供接口同步备份文件,使用的软件叫做FolderSync,支持SMB、WebDav等同步,但是如果要实现广域网在家以外的地方同步WebDav比较合适,而且速度也不差。
开启WebDav后在路由器开启端口映射就行,配一个阿里DDNS客户端就行了。
在Apache2.X的版本中,是带有WebDAV的。
首先搞明白什么是WebDAV
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。
它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,
使应用程序可对Web Server直接读写,
并支持写文件锁定(Locking)及解锁(Unlock),
还可以支持文件的版本控制。
我的Apache所在的目录是D:\Program Files\apache-server\Apache24
找到这个目录下面的conf文件夹,里头有个httpd.conf文件。
第一步,修改httpd.conf的配置
LoadModule alias_module modules/mod_alias.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_lock_module modules/mod_dav_lock.so
LoadModule setenvif_module modules/mod_setenvif.so
# Distributed authoring and versioning (WebDAV)
Include conf/extra/httpd-dav.conf
第二步,创建用户和密码
WebDAV的认证接入
在安装目录下,要用到下面的命令
htdigest -c "D:/Program Files/apache-server/Apache24/user.passwd" DAV-upload admin
这里我得说一下,我的目录都是windows的斜杠,命令当中用的都是linux的斜杠
然后就是下面的画面

这个命令执行完了以后,就产生了一个效果,就是下面的图画:

生成了这么一个小文件user.passwd
第三步,配置WebDAV文件夹
我先是在我的目录下面,新建了一个文件夹,sites。

然后我进入了我的目录下的conf文件夹,里头有个extra文件夹,接着进去,找到了httpd-dav.conf这个小文件。
然后我在这个小文件当中添加了下面的代码。
DavLockDB "D:/Program Files/apache-server/Apache24/DavLock"
Alias /sites "D:/Program Files/apache-server/Apache24/sites"
<Directory "D:/Program Files/apache-server/Apache24/sites">
Dav On
Order Allow,Deny
Allow from all
AuthType Digest
AuthName DAV-upload
Options Indexes
AuthUserFile "D:/Program Files/apache-server/Apache24/user.passwd"
AuthDigestProvider file
# Allow universal read-access, but writes are restricted
# to the admin user.
<LimitExcept GET OPTIONS>
require user admin
</LimitExcept>
</Directory>
这一段就说明了一个意思。
启动WebDAV访问sites文件夹。
访问的时候用user.passwd文件进行身份验证。
AuthName是DAV-upload的。
Apache服务器
上面忙活了一通,主要就是改动了两个配置文件的。关键是我的服务器还没有启动的。
第一个错误
启动的命令是httpd -k start
我运行了一下,就报出了下面的错误

然后我修改了httpd-conf当中的服务器root目录的配置

这个错误就不再出现了。
然后我就信心满满地重新又启动了一下。
接着就出现了第二个错误。
第二个错误

我首先认为的第一个原因是缺少必要的模块
也就是authz_host_module模块
然后我就跑到了conf当中httpd.conf当中加入下面的一个小段:
LoadModule authz_host_module bin/mod_authz_host.so
然后我又重新启动了一下。