如何在Ubuntu20.04上使用Apache配置WebDAV访问
作为 Write for DOnations 计划的一部分,作者选择了 Free and Open Source Fund 来接受捐赠。
介绍
WebDAV 是 HTTP 协议的扩展,允许用户管理远程服务器上的文件。 使用 WebDAV 服务器的方法有很多,例如,您可以通过将 Word 或 Excel 文档上传到您的 WebDAV 服务器来与您的同事共享它们。 您还可以与家人和朋友分享您的音乐收藏,只需给他们一个 URL。 所有这一切都可以在他们不安装任何额外软件的情况下实现,因为一切都内置在他们的操作系统中。
在本文中,您将配置 Apache Web 服务器以启用从 Windows、Mac 和 Linux 使用 SSL 和密码身份验证的 WebDAV 访问。
先决条件
在开始本指南之前,您将需要以下内容:
- 一个 Ubuntu 20.04 服务器。 按照 Initial Server Setup with Ubuntu 20.04 创建启用 sudo 的非 root 用户。
- 解析为服务器公共 IP 地址的域名。 域和 DNS 解释了如何设置它。
- 一个配置为为您的域提供服务的 Apache Web 服务器,您可以完成 如何在 Ubuntu 20.04 上安装 Apache Web 服务器的教程来设置它——确保遵循 步骤 5 - 设置虚拟主机 作为此先决条件的一部分。
- 您的域名的 SSL 证书。 请按照 如何在 Ubuntu 20.04 上使用 Let's Encrypt 保护 Apache 指南获取有关如何执行此操作的说明。
WebDAV 需要很少的服务器资源,因此任何大小的虚拟机都足以让您的 WebDAV 服务器启动并运行。
以启用 sudo 的非 root 用户身份登录到您的服务器以开始第一步。
第 1 步 — 启用 WebDAV Apache 模块
Apache Web 服务器作为可选模块提供了很多功能。 您可以启用和禁用这些模块以在 Apache 中添加和删除它们的功能。 它的 WebDAV 功能包含在与 Apache 一起安装的模块中,但默认情况下未启用。 您可以使用 a2enmod 实用程序为 Apache 启用 WebDAV 模块。 以下两个命令将启用 WebDAV 模块:
sudo a2enmod dav sudo a2enmod dav_fs
现在,重新启动 Apache 以加载新模块:
sudo systemctl restart apache2.service
WebDAV 模块现在已加载并运行。 在下一步中,您将配置 Apache 以通过 WebDAV 提供文件。
第 2 步 — 配置 Apache
在此步骤中,您将创建 Apache 实现 WebDAV 服务器所需的所有配置。
首先,在 /var/www/webdav
中创建 WebDAV 根文件夹,其中包含您希望通过 WebDAV 提供的文件:
sudo mkdir /var/www/webdav
然后,将 Apache 的用户 www-data
设置为 WebDAV 目录的所有者:
sudo chown www-data:www-data /var/www/webdav
接下来,您需要为 Apache 用来管理和锁定 WebDAV 用户正在访问的文件的数据库文件创建一个位置。 该文件需要 Apache 可读和可写,但不能从网站获得,因为这可能会泄露敏感信息。
使用 mkdir
实用程序为 /usr/local/apache/var/
处的数据库文件创建一个新目录:
sudo mkdir -p /usr/local/apache/var/
-p
选项告诉 mkdir
实用程序在您指定的路径中创建所有目录(如果它们不存在)。
接下来,使用 chown
实用程序将新目录的所有者和组设置为 Apache 的用户和组:
sudo chown www-data:www-data /usr/local/apache/var
现在,您需要编辑包含有关您的域名的 Apache 配置的 VirtualHost 文件。 如果您使用 Certbot 注册 SSL 证书,此文件位于 /etc/apache2/sites-enabled/
并以 le-ssl.conf
结尾。
使用文本编辑器打开 VirtualHost 文件:
sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
在第一行,添加 DavLockDB
指令:
/etc/apache2/sites-enabled/your_domain-le-ssl.conf
DavLockDB /usr/local/apache/var/DavLock . . .
接下来,在所有其他指令之后的 <VirtualHost>
标签内添加以下 Alias
和 Directory
指令:
/etc/apache2/sites-enabled/your_domain-le-ssl.conf
. . . Alias /webdav /var/www/webdav <Directory /var/www/webdav> DAV On </Directory>
Alias 指令将请求映射到 http://your.server/webdav
到 /var/www/webdav
文件夹。
Directory 指令告诉 Apache 为 /var/www/webdav
文件夹启用 WebDAV。 您可以从 Apache 文档中找到有关 mod_dav 的更多信息。
您的最终 VirtualHost 文件将如下所示,其中包括正确位置的 DavLockDB
、Alias
和 Directory
指令:
/etc/apache2/sites-enabled/your_domain-le-ssl.conf
DavLockDB /usr/local/apache/var/DavLock <IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin admin@your_domain ServerName your_domain ServerAlias your_domain DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf Alias /webdav /var/www/webdav <Directory /var/www/webdav> DAV On </Directory> </VirtualHost> </IfModule>
如果您在编辑 Apache 的配置时出现任何语法错误,它将拒绝启动。 在重新启动 Apache 之前检查您的 Apache 配置是一个很好的做法。
使用 apachectl
实用程序检查配置:
sudo apachectl configtest
如果您的配置没有错误,apachectl
将打印 Syntax OK
。 收到此信息后,可以安全地重新启动 Apache 以加载新配置:
sudo systemctl restart apache2.service
您现在已将 Apache 配置为 WebDAV 服务器以提供来自 /var/www/webdav
的文件。 但是,您尚未配置或启用身份验证,因此任何可以访问您的服务器的人都可以读取、写入和编辑您的文件。 在下一部分中,您将启用和配置 WebDAV 身份验证。
第 3 步 — 向 WebDAV 添加身份验证
您将使用的身份验证方法称为摘要身份验证。 摘要式身份验证是更安全的 WebDAV 身份验证方法,尤其是与 HTTPS 结合使用时。
摘要式身份验证使用一个文件,该文件存储允许访问 WebDAV 服务器的用户的用户名和密码。 与 DavLockDB
一样,摘要文件需要存储在 Apache 可以读取和写入且无法从您的网站提供的位置。
由于您已经为此目的创建了 /usr/local/apache/var/
,因此您也将把摘要文件放在那里。
首先,使用 touch
实用程序在 /usr/local/apache/var/
创建一个名为 users.password
的空文件:
sudo touch /usr/local/apache/var/users.password
然后将所有者和组更改为 www-data
以便 Apache 可以对其进行读写:
sudo chown www-data:www-data /usr/local/apache/var/users.password
使用 htdigest
实用程序将新用户添加到 WebDAV。 以下命令添加用户 sammy:
sudo htdigest /usr/local/apache/var/users.password webdav sammy
此命令中的 webdav
是 realm 并且应该被认为是您要添加新用户的组。 它也是在用户访问您的 WebDAV 服务器时输入用户名和密码时向用户显示的文本。 您可以选择最能描述您的用例的任何领域。
htdigest
运行时会提示输入密码并确认:
OutputAdding user sammy in realm webdav New password: Re-type new password:
接下来,您将告诉 Apache 要求对 WebDAV 访问进行身份验证并使用 users.password
文件。
打开您的虚拟主机文件:
sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
然后,在 Directory
指令块中添加以下行:
/etc/apache2/sites-enabled/your_domain-le-ssl.conf
AuthType Digest AuthName "webdav" AuthUserFile /usr/local/apache/var/users.password Require valid-user
这些指令执行以下操作:
AuthType Digest
:使用摘要认证方式。AuthName "webdav"
:只允许来自webdav
领域的用户。AuthUserFile /usr/local/apache/var/users.password
:使用包含在/usr/local/apache/var/users.password
中的用户名和密码。Require valid-user
:允许访问users.password
文件中提供正确密码的任何用户。
您的 <Directory>
指令如下:
/etc/apache2/sites-enabled/your_domain-le-ssl.conf
<Directory /var/www/webdav> DAV On AuthType Digest AuthName "webdav" AuthUserFile /usr/local/apache/var/users.password Require valid-user </Directory>
接下来,启用 auth_digest
Apache 模块,以便 Apache 知道如何使用摘要身份验证方法:
sudo a2enmod auth_digest
最后,重新启动 Apache 以加载所有新配置:
sudo systemctl restart apache2.service
您现在已将 WebDAV 服务器配置为使用 HTTPS 和摘要式身份验证。 它已准备好开始向您的用户提供文件。 在下一部分中,您将从 Windows、Linux 或 macOS 访问 WebDAV 服务器。
第 4 步 — 访问 WebDAV
在此步骤中,您将使用 macOS、Windows 和 Linux(KDE 和 GNOME)的本机文件浏览器访问 WebDAV 服务器。
在您开始访问您的 WebDAV 服务器之前,您应该将一个文件放入 WebDAV 文件夹中,这样您就有一个要测试的文件。
使用文本编辑器打开一个新文件:
sudo nano /var/www/webdav/webdav-testfile.txt
添加一些文本,然后保存并退出。 现在,将此文件的所有者和组设置为 www-data
:
sudo chown www-data:www-data /var/www/webdav/webdav-testfile.txt
您现在可以开始访问和测试您的 WebDAV 服务器了。
Linux KDE
首先,打开KDE Dolphin文件管理器。 然后使用具有以下形式的 URL 编辑地址栏:
webdavs://your_domain/webdav
当您点击 ENTER 时,系统将提示您输入用户名和密码。
如果您希望 Dolphin 保留您的密码,请选中 Remember password 选项。 然后点击OK继续。 它现在将向您显示 /var/www/webdav/
目录的内容,您可以像在本地系统上一样对其进行操作。
通过抓住地址栏中的文件夹图标并将其拖动到左侧导航面板的 Remote 部分下,为您的 WebDAV 服务器添加书签。
Linux GNOME
首先,通过单击桌面右侧的图标打开 Files 应用程序。
当 Files 打开时,请执行以下操作:
- 点击+其他位置。
- 使用以下格式输入您的 WebDAV 实例的 URL:
davs://your_domain/webdav
然后,单击 连接 。 然后它将提示您使用用户名和密码对话框。
输入您的用户名和密码,然后单击 Connect 以登录到您的 WebDAV 服务器。 如果您不想在每次访问文件时都输入密码,请选中 Remember forever 选项。
您的 WebDAV 文件夹现在将在 Files 中可用,您可以在其中管理文件:
苹果系统
首先,打开 Finder 应用程序。 接下来,单击 Go 菜单,然后单击 Connect to server。
您现在将找到一个新对话框,您可以在其中输入 WebDAV 服务器的 URL。 此 URL 必须具有以下格式:
https://your_domain/webdav
单击 连接 按钮继续。 它将提示您输入用户名和密码。
单击 Connect 以完成将 WebDAV 服务器添加到系统中。
现在,您将在 Locations 部分下的 Finder 中找到您的 WebDAV 服务器。
视窗
首先,从开始菜单,打开文件资源管理器应用程序。 当它打开时,从左侧导航面板中选择 This PC。
接下来,单击顶部导航栏中的映射网络驱动器图标。
使用以下形式的 URL 输入 WebDAV 服务器的 URL:
https://your_domain/webdav
单击 Finish 以连接到您的 WebDAV 服务器。 它将提示您输入用户名和密码。
输入您的用户名和密码,然后单击确定以登录到您的服务器。 如果您不想在每次访问文件时都输入密码,请选中 记住我的凭据 选项。
您的 WebDAV 现在将显示为文件资源管理器左侧导航面板的 This PC 部分下的位置。
结论
您现在已经设置并配置了一个安全的 WebDAV 服务器来为您的用户提供您的文件。 无论您的用户在其本地系统上使用什么操作系统,他们都将能够访问和管理 WebDAV 服务器中的文件。