金钱(警告)
状态: 被贬值
如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议升级或迁移到支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已於 2017 年 4 月 28 日到達終止期 (EOL) 並不再收到安全性修補或更新。
相反,请参阅: 此指南可能仍然有用作为参考,但可能不会在其他Ubuntu版本上工作. 如果可用,我们强烈建议使用为您正在使用的Ubuntu版本编写的指南。
介绍
WebDAV 是 HTTP 内置的分布式 Web 编写实现,允许您轻松共享文件并与他人协作。
我们可以在 Web 服务器中安装此扩展,以允许远程阅读和写入通过 Web 浏览器的本地文件。
在 VPS 上安装 Apache
我们的 WebDAV 实现将通过使用 WebDAV 模块在 Apache 上建立。
首先,您需要从Ubuntu的默认存储库中安装Apache。
1sudo apt-get update
2sudo apt-get install apache2
您现在已经安装了一个功能齐全的 Web 服务器,它应该通过在 Web 浏览器中导航到您的服务器的 IP 地址即可访问。
启用 WebDAV
Apache 内置了 WebDAV 支持,有几个模块,我们只需要允许他们访问其功能。
使用以下两个命令启用 WebDAV 模块:
1sudo a2enmod dav
2sudo a2enmod dav_fs
现在我们需要重新启动服务器来执行这些更改:
1sudo service apache2 restart
WebDAV 作为功能现在已启用,但我们尚未为我们的服务器正确配置。
创建文件系统
我们将创建一个目录,该目录将容纳我们的WebDAV文件内容。
Ubuntu 上的 Apache 服务器的默认文档根位于 /var/www
. 然而,我们将创建一个代码,这将使我们能够在其他地方保留我们的目录内容。
在本指南中,我们将我们的 WebDAV 内容放置在 /webdav/
1sudo mkdir /webdav
给网页用户,即www-data
,新的目录的所有权,这样它就可以正确地提供内容:
1sudo chown www-data /webdav
设置密码保护
我们可以通过创建 htpasswd 文件来创建访问目录内容的身份验证程序。
我们将将其放置在内容目录之外,以便我们的系统的用户无法访问它. 在命令呼叫中创建用户名,您将被要求提供相关的密码:
sudo htpasswd -c /etc/apache2/webdav.password username
现在,任何人都可以查看文件中的用户名和哈希密码. 我们会将文件的群组所有权分配给www-data
,然后锁定所有人的权限:
1sudo chown root:www-data /etc/apache2/webdav.password
2sudo chmod 640 /etc/apache2/webdav.password
配置 Apache
现在,我们必须配置访问我们的内容目录,并告诉Apache使用WebDAV模块来服务该位置,我们还必须注意我们创建的身份验证方案。
使用 root 特权编辑主虚拟主机配置:
1sudo nano /etc/apache2/sites-available/default
在这里,我们的网页内容是从/var/www
作为正常提供的,我们将添加一些信息,这将允许Apache将我们新目录中的内容视为WebDAV材料。
在目录列表下方,我们会添加一个代码指令,告诉Apache/webdav
的请求应该从我们创建的/webdav
目录中提供。
然后我们将添加选项,允许使用我们建立的方法进行身份验证。
. . . . . . <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> Alias /webdav /webdav <Location /webdav> Options Indexes DAV On AuthType Basic AuthName "webdav" AuthUserFile /etc/apache2/webdav.password Require valid-user </Location> . . . . . .
保存并关闭文件。
使用以下命令重新启动 Apache:
1sudo service apache2 restart
测试结果
您可以先在 Web 浏览器中测试配置结果,然后在 WebDAV 客户端中测试结果。
Web 浏览器测试
要测试您的身份验证是否正确,请使用 Web 浏览器导航到您的服务器的 IP 地址或域名。
您应该看到默认的 Apache index.html 文件:

这表明正常的网页功能正在运作。
现在,导航到您的 IP 地址或域名,然后是/webdav
:
your_IP_address_or_domain/webdav
您应该被提示查看您之前设置的用户名和密码组合,之后您应该看到一个空的目录列表:

我们目前没有任何内容,但我们可以通过使用 WebDAV 客户端访问相同区域来更改。
WebDEV 客户端测试
有许多 WebDAV 客户端,并且对 WebDAV 访问的支持已嵌入许多流行的文件管理器中。
为了简单,我们将在本指南中使用一个简单的命令行 WebDAV 客户端,名为cadaver
。
最好从另一个 dropplet 或 Linux 机器安装 cadaver 从默认存储库:
1sudo apt-get install cadaver
现在,让我们创建一个文件,我们将其上传到WebDAV目录:
1cd ~
2touch testfile
接下来,我们将使用我们从浏览器访问的相同位置连接:
cadaver http://your_IP_address_or_domain/webdav
Authentication required for webdav on server `162.243.2.14': Username:
您必须输入http://
部分,以便正确地找到您的服务器. 我们需要再次验证,然后我们将被放入命令行界面。
1dav:/webdav/>
从这里,我们可以使用类似于常规Linux命令的命令同时操作客户端和主机。
要列出服务器目录的内容,键入:
1ls
1Listing collection `/webdav/': collection is empty.
目录是空的. 让我们改变上传我们的测试文件:
1put testfile
我们可以再次尝试列表命令,并看到文件现在在服务器上:
1ls
1Listing collection `/webdav/': succeeded.
2 testfile 0 Sep 20 19:36
我们可以创建一个目录并通过键入更改它:
1mkdir hello
2cd hello
然后我们可以通过键入创建一个文件:
1edit file.html
我们可以添加我们想要的内容:
1<h1>Hi!!!</h1>
当我们完成时,我们可以输入出口来关闭连接:
1exit
现在,如果我们回到我们的Web浏览器,我们所做的更改是可见的:
your_IP_address_or_domain/webdav

关闭目录列表
虽然目录列表有助于查看 WebDAV 可用的文件,但通常是有用的,特别是如果您正在使用此项用于实际的 Web 内容,关闭该列表。
如果您希望可访问的网页部分更像网站而不是目录列表,请从配置文件中删除<span class="highlight">Options Indexes</span>
行:
1sudo nano /etc/apache2/sites-available/default
Alias /webdav /webdav
<Location /webdav>
Options Indexes ## Remove this line
DAV On
AuthType Basic
AuthName "webdav"
AuthUserFile /etc/apache2/webdav.password
Require valid-user
</Location>
. . .
. . .
重新启动 Apache 以使用您的更改:
1sudo service apache2 restart
请记住,您需要创建常规网页,以便此功能正常运行,例如index.html
文件:
1sudo nano /webdav/index.html
1<h1>Default WebDAV Page</h1>
2<p>This is the default page with directory listings turned off</p>
保存并关闭文件。
当我们导航到主 WebDAV 目录时,此页面将显示,但在客户端中仍将启用编辑功能。

结论
如果您的目录包含绝对必须保持安全的内容,您可能希望在密码验证上实施一个SSL解决方案。
许多文件管理器和客户端可以无缝访问和修改 WebDAV 内容,就像是额外的本地存储一样。