使用 Apache 简单搭建 webdav 文件共享服务器

我经常遇到人在外面,但是需要访问家里的文件的情况。原来搭了一个 FTP 文件服务器,但是感觉还是不够方便。我这个人比较懒,不方便怎么可以行呢?所以就有了这篇博文。

WEBDAV 是什么?

自己百度。。。。。

webdav 对比 ftp 有什么好处?

webdav 通过 http 工作,所以有 ftp 无法提供的 http 的所有好处。例如:强身份验证,加密,代理支持和缓存等。虽然 ftp 也可以通过 SSH 获得一些支持,但 http 基础框架的部署要比 ssh 更广泛。再说,ssh 没有 http 所做的各种工具,开发库和应用程序。

另外使用 DAV 传输(以及 HTTP 传输)也比 FTP 更有效。您可以通过单个 TCP 连接管道多个传输,而 FTP 需要为每个传输的文件(加上控制连接)来建立新连接。

安装步骤

1、首先在 debian 系统下安装 apache2

1
2
apt-get update
apt-get install apache2 -y

2、创建 webdav 文件夹,并将 chonw 设成 www-data

1
2
mkdir /var/www/webdav
chown -R www-data:www-data /var/www/webdav

3、开启 webdav 的 dav 功能模块,然后重启 apache2

1
2
3
a2enmod dav
a2enmod dav_fs
systemctl restart apache2

4、编辑 /etc/apache2/sites-available/000-default.conf 配置文件
在首行添加

1
DavLockDB /var/www/DavLock

</VirtualHost> 标签前面添加下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
#设置别名
Alias /webdav /var/www/webdav

<Directory /var/www/webdav>
DAV On

#设置密码
AuthType Basic
AuthName "Server"
AuthUserFile /var/www/webdavpasswd/passwd.dav
Require valid-user
</Directory>

5、配置访问密码

1
2
mkdir /var/www/webdavpasswd
htpasswd -cb /var/www/webdavpasswd/passwd.dav 用户名 密码

6、重启 apache2

1
systemctl restart apache2

访问方法

在任何浏览器里输入 IP地址/webdav 就可以访问 webdav 了。

后记

映射文件

webdav 可以在 windows 里做映射,可以达到跟本地盘访问一样的效果。
由于 WIN7 以上版本的操作系统微软禁用了 http 形式的基本 WebDAV 验证形式,所以需要我们手工来修改一下。
在运行里输入 regedit 打开注册表。
修改
HKEY_LOCAL_MACHINE>>SYSTEM>>CurrentControlSet>>Services>>WebClient>>Parameters>>BasicAuthLevel
把这个值从 1 改为 2。然后进控制面板,在服务里,把 WebClient 服务重启(没有启动的就启动它).


下载文件大小的问题

在某些版本的 Windows 操作系统中,WebDAV 驱动器的最大文件大小被限制为 50MB。如果你试图复制超过 50MB 大小的文件,Windows 就会弹出错误提示框。当然,这个限制是可以通过修改注册表来消除的。将注册表中位于
HKEY_LOCAL_MACHINE>>SYSTEM>>CurrentControlSet>>Services>>WebClient>>Parameters>>FileSizeLimitInBytes
处的键值由 50,000,000 (50MB) 修改为更大的数值。最大修改为:4294967295(0xffffffff)字节,即 4G。不过我好像没有遇到这个问题,这个方法有没有用就不知道了。