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

金钱(警告)

状态: 被贬值

如果您目前正在运行运行 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 文件:

Apache Default index

这表明正常的网页功能正在运作。

现在,导航到您的 IP 地址或域名,然后是/webdav:

your_IP_address_or_domain/webdav

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

Empty 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 content

关闭目录列表


虽然目录列表有助于查看 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 目录时,此页面将显示,但在客户端中仍将启用编辑功能。

WebDAV landing page

结论


如果您的目录包含绝对必须保持安全的内容,您可能希望在密码验证上实施一个SSL解决方案。

许多文件管理器和客户端可以无缝访问和修改 WebDAV 内容,就像是额外的本地存储一样。

By Justin Ellingwood
Published At
Categories with 技术
comments powered by Disqus