如何在 Ubuntu 12.04 上使用 Apache 配置 WebDAV 访问

慈云数据 2024-05-11 技术支持 37 0

简介

WebDAV 是内置在 HTTP 中的分布式网络编辑实现,允许您轻松共享文件并与他人协作。

我们可以在 Web 服务器中安装此扩展,以允许通过 Web 浏览器远程读写访问本地文件。在本指南中,我们将在带有 Apache Web 服务器的 Ubuntu 12.04 VPS 上配置 WebDAV。

在 VPS 上安装 Apache


我们将通过使用 WebDAV 模块在 Apache 上建立我们的 WebDAV 实现。

首先,您需要从 Ubuntu 的默认存储库中安装 Apache。

sudo apt-get update
sudo apt-get install apache2

现在您已经安装了一个完全功能的 Web 服务器。通过在 Web 浏览器中导航到服务器的 IP 地址,应该已经可以访问它。

启用 WebDAV


Apache 内置支持 WebDAV,只需启用一些模块即可访问它们的功能。

使用以下两个命令启用 WebDAV 模块:

sudo a2enmod dav
sudo a2enmod dav_fs

现在我们需要重新启动服务器以实施更改:

sudo service apache2 restart

WebDAV 作为一个功能现在已经启用,但我们还没有为我们的服务器正确配置它。

创建文件系统


我们将创建一个目录,用于存放我们的 WebDAV 文件内容。

Ubuntu 上 Apache 服务器的默认文档根目录位于 /var/www。但是,我们将创建一个别名,这将允许我们将目录内容放在其他地方。

在本指南中,我们将把我们的 WebDAV 内容放在 /webdav/。

sudo mkdir /webdav

将 web 用户(即 www-data)赋予新目录的所有权,以便它可以正确地提供内容:

sudo chown www-data /webdav

设置密码保护


我们可以通过创建一个 htpasswd 文件为访问目录内容创建身份验证过程。

我们将其放在内容目录之外,以便系统用户无法访问它。在命令调用中创建一个用户名,然后会提示您输入相关密码:

sudo htpasswd -c /etc/apache2/webdav.password 用户名

现在,任何人都可以在文件中查看用户名和哈希密码。我们将把文件的组所有权分配给 www-data,然后将其他人的权限锁定:

sudo chown root:www-data /etc/apache2/webdav.password
sudo chmod 640 /etc/apache2/webdav.password

配置 Apache


现在,我们将不得不配置对我们的内容目录的访问,并告诉 Apache 使用 WebDAV 模块来提供该位置。我们还必须注意我们创建的身份验证方案。

以 root 权限编辑主虚拟主机配置:

sudo nano /etc/apache2/sites-available/default

在这里,我们的 Web 内容像往常一样从 /var/www 提供。我们将添加一些信息,让 Apache 将我们新目录中的内容视为 WebDAV 材料。

在目录列表下面,我们将添加一个别名指令,告诉 Apache 请求 “/webdav” 应该从我们创建的 /webdav 目录中提供服务。

然后,我们将添加选项以允许使用我们建立的方法进行身份验证。

. . .
. . .

	Options Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order allow,deny
	allow from all

Alias /webdav /webdav
<Location /webdav>
	Options Indexes
	DAV On
	AuthType Basic
	AuthName "webdav"
	AuthUserFile /etc/apache2/webdav.password
	Require valid-user
</Location>
. . .
. . .

保存并关闭文件。

使用以下命令重新启动 Apache:

sudo service apache2 restart

测试结果


您可以首先在 Web 浏览器中测试配置的结果,然后在 WebDAV 客户端中进行测试。

Web 浏览器测试


要测试您的身份验证是否正常工作,请使用 Web 浏览器导航到服务器的 IP 地址或域名。

您应该会看到默认的 Apache index.html 文件:

Apache Default index

这证明了常规 Web 功能正在工作。

现在,导航到您的 IP 地址或域名,后面跟着 “/webdav”:

您的_IP地址或域名/webdav

您应该会提示输入您之前设置的用户名和密码组合。之后,您应该会看到一个空的目录列表:

Empty WebDAV

我们目前在这里没有任何内容,但我们将能够通过使用 WebDAV 客户端访问相同的区域来改变这一点。

WebDEV 客户端测试


有许多 WebDAV 客户端,并且对 WebDAV 访问的支持已经内置在许多流行的文件管理器中。

为了简单起见,在本指南中,我们将使用一个名为 “cadaver” 的简单命令行 WebDAV 客户端。

最好是从另一个 droplet 或 Linux 机器上,从默认仓库安装 cadaver:

sudo apt-get install cadaver

现在,让我们创建一个文件,我们将上传到 WebDAV 目录:

cd ~
touch testfile

接下来,我们将使用与从浏览器访问相同的位置连接:

cadaver http://your_IP_address_or_domain/webdav
服务器 `162.243.2.14` 上需要对 webdav 进行身份验证:
用户名:

您必须输入 “http://” 部分,以便 cadaver 正确找到您的服务器。我们需要再次进行身份验证,然后我们将进入一个命令行界面

dav:/webdav/>

在这里,我们可以同时使用类似于常规 Linux 命令的命令来操作客户端和主机。

要列出服务器目录的内容,请输入:

ls

列出集合 `/webdav/`:集合为空。

该目录为空。让我们上传我们的测试文件来改变这种情况:

put testfile

我们可以再次尝试列表命令,看到文件现在在服务器上:

ls

列出集合 `/webdav/`:成功。 testfile 0 Sep 20 19:36

我们可以通过输入以下命令来创建一个目录并进入其中:

mkdir hello
cd hello

然后,我们可以通过输入以下命令来创建一个文件:

edit file.html

我们可以插入任何我们想要的内容:

你好!!!

完成后,我们可以输入 exit 来关闭连接:

exit

现在,如果我们回到我们的网络浏览器,我们所做的更改是可见的:

your_IP_address_or_domain/webdav
WebDAV content

关闭目录列表


尽管目录列表对于查看 WebDAV 可用的文件非常有用,但通常情况下,特别是如果您将其用于实际的网络内容,关闭该列表会更有用。

如果您希望 Web 可访问部分的行为更像一个网站,而不是一个目录列表,从配置文件中删除 “Options Indexes” 行:

sudo nano /etc/apache2/sites-available/default
Alias /webdav /webdav

	Options Indexes     ## 删除此行
	DAV On
	AuthType Basic
	AuthName "webdav"
	AuthUserFile /etc/apache2/webdav.password
	Require valid-user

. . .
. . .

重新启动 Apache 以使用您的更改:

sudo service apache2 restart

请记住,您需要创建常规的网页才能使其正确运行,比如一个 “index.html” 文件:

sudo nano /webdav/index.html

默认的 WebDAV 页面

这是默认页面,目录列表已关闭

保存并关闭文件。

当我们导航到主要的 WebDAV 目录时,该页面现在会显示,但编辑功能仍然可以在客户端上启用。

WebDAV landing page

结论


现在,您应该拥有一个完整的带有基本身份验证的 WebDAV 目录。如果您的目录包含绝对必须保密的内容,您可能希望在密码身份验证之上实现 SSL 解决方案。然而,这超出了本文的范围。

许多文件管理器和客户端可以无缝访问和修改 WebDAV 内容,就好像它是额外的本地存储一样。WebDAV 允许比传统可能的 HTTP 体验更加动态。

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon