介绍
WebDAV是HTTP协议的扩展,允许用户在服务器上管理文件. 有许多方法可以使用WebDAV服务器. 例如,您可以通过将它们上传到WebDAV服务器来与同事共享Word或Excel文档。 您甚至可以通过给他们一个URL来与家人和朋友分享您的音乐收藏。 所有这一切都可以实现,而不需要他们安装任何东西。
在远程服务器上管理文件有很多方法。 WebDAV 对其他解决方案有几个优点,例如 FTP或 Samba。 在本文中,我们将讨论如何配置您的 Apache 服务器以允许来自 Windows、Mac 和 Linux 的本地 WebDAV 访问。
为什么要使用 WebDAV?
WebDAV 提供了几个优点:
- 在所有主要操作系统(Windows,Mac,Linux)的原生集成;无需安装第三方软件来使用WebDAV。 * 支持部分转移。 * 更多选择的身份验证。 使用HTTP意味着 NTLM, Kerberos(protocol)), LDAP,等等都是可能的。
根据您的情况,WebDAV可能是满足您的需求的最佳解决方案。
为什么要使用Apache?
有很多在Linux上支持WebDAV的Web服务器。然而,Apache有一个最合适的WebDAV协议的实现,在写作时,WebDAV在 Nginx和 Lighttpd工作,但只有部分。
前提条件
你需要一个 Ubuntu 14.04 服务器。
在我们开始之前,让我们先创建一个具有 sudo 访问的用户。 您可以运行命令作为** root** ,但由于安全问题而不建议。 有一个很好的文章关于 在Ubuntu 14.04上添加用户如果您想了解更多信息。
创建一个用户
当您首次创建一个数字海洋实例时,您将获得身份证,允许您登录为 root . 作为** root** ,让我们先添加一个名为** alex** 的用户。
1adduser alex
您将被要求为用户创建一个密码 alex 如下所示。
1Adding user `alex' ...
2Adding new group `alex' (1000) ...
3Adding new user `alex' (1000) with group `alex' ...
4Creating home directory `/home/alex' ...
5Copying files from `/etc/skel' ...
6Enter new UNIX password:
7Retype new UNIX password:
8passwd: password updated successfully
9Changing the user information for alex
10Enter the new value, or press ENTER for the default
11 Full Name []:
12 Room Number []:
13 Work Phone []:
14 Home Phone []:
15 Other []:
16Is the information correct? [Y/n] y
向用户授予 sudo 特权
创建新用户后,下一步是向用户授予 alex sudo 特权.假设您仍然登录为** root** ,请通过键入下面的命令将用户** alex** 添加到** sudo** 组中。
1usermod -aG sudo alex
sudo 组中的用户获得了** sudo** 特权,现在您可以作为用户** alex** 退出并登录。
第一步:安装Apache
讓我們得到 Apache安裝。
1sudo apt-get update
2sudo apt-get install apache2
Apache Web 服务器必须安装并运行。
步骤二:设置 WebDAV
有三个步骤来设置 WebDAV. 我们指定一个位置,启用必要的模块,并配置它。
准备地址
我们需要指定一个文件夹来服务WebDAV. 我们将为此创建一个新的目录 /var/www/webdav
. 您还需要将所有者更改为 www-data
(您的Apache用户),以便让Apache写入它。
1sudo mkdir /var/www/webdav
2sudo chown -R www-data:www-data /var/www/
允许模块
接下来,我们使用(http://man.he.net/man8/a2enmod)启用 WebDAV 模块。
1sudo a2enmod dav
2sudo a2enmod dav_fs
Apache 模块位于/etc/apache2/mods-available
下方,创建了从/etc/apache2/mods-available
到/etc/apache2/mods-enabled
的象征链接。
配置
在 /etc/apache2/sites-available/000-default.conf
打开或创建配置文件,使用您喜爱的文本编辑器。
1nano /etc/apache2/sites-available/000-default.conf
在第一行中,添加 DavLockDB 指令配置:
1DavLockDB /var/www/DavLock
以及 VirtualHost 部分中的 Alias 和** Directory** 指令:
1Alias /webdav /var/www/webdav
2
3<Directory /var/www/webdav>
4 DAV On
5</Directory>
文件在编辑后应该是这样的。
1DavLockDB /var/www/DavLock
2<VirtualHost *:80>
3 # The ServerName directive sets the request scheme, hostname and port that
4 # the server uses to identify itself. This is used when creating
5 # redirection URLs. In the context of virtual hosts, the ServerName
6 # specifies what hostname must appear in the request's Host: header to
7 # match this virtual host. For the default virtual host (this file) this
8 # value is not decisive as it is used as a last resort host regardless.
9 # However, you must set it for any further virtual host explicitly.
10 #ServerName www.example.com
11
12 ServerAdmin webmaster@localhost
13 DocumentRoot /var/www/html
14
15 # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
16 # error, crit, alert, emerg.
17 # It is also possible to configure the loglevel for particular
18 # modules, e.g.
19 #LogLevel info ssl:warn
20
21 ErrorLog ${APACHE_LOG_DIR}/error.log
22 CustomLog ${APACHE_LOG_DIR}/access.log combined
23
24 # For most configuration files from conf-available/, which are
25 # enabled or disabled at a global level, it is possible to
26 # include a line for only one particular virtual host. For example the
27 # following line enables the CGI configuration for this host only
28 # after it has been globally disabled with "a2disconf".
29 #Include conf-available/serve-cgi-bin.conf
30
31 Alias /webdav /var/www/webdav
32
33 <Directory /var/www/webdav>
34 DAV On
35 </Directory>
36</VirtualHost>
37
38# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
DavLockDB指令指定了DAV Lock数据库的名称。 它应该是一个通往文件的路径。 该文件不需要创建。 该目录应该由Apache服务器编写。
该指令地图(https://httpd.apache.org/docs/2.4/mod/mod_alias.html)请求到 http://your.server/webdav
到 /var/www/webdav
文件夹。
該指令(https://httpd.apache.org/docs/current/mod/core.html# directory)告訴 Apache 啟用 WebDAV for the /var/www/webdav
文件夹. 您可以從 Apache 文件中了解更多關於 mod_dav。
如果您重新启动 Apache 服务器,您将有一个没有身份验证的 WebDAV 服务器。
重启 Apache 服务器如下:
1sudo service apache2 restart
测试
没有身份验证的 WebDAV 仅允许用户阅读访问. 为了测试,让我们创建一个样本文件。
1echo "this is a sample text file" | sudo tee -a /var/www/webdav/sample.txt
一个名为 sample.txt 的文本文件应该在** /var/www/webdav** 中创建,它应该包含文本 This is a sample text file。
现在我们可以尝试从外部计算机登录. WebDAV 服务器应该在 http://<your.server.com>/webdav 。
在 Mac 上,打开 Finder . 在菜单栏中,找到** Go** ,然后选择连接到服务器
选项。
选择作为客人连接
选项,然后单击连接
。
如果您连接到该共享文件系统并输入webdav
文件夹,您应该能够看到以前创建的sample.txt
文件。
步骤三:添加身份验证
没有身份验证的 WebDAV 服务器不安全. 在本节中,我们将使用 Digest 身份验证计划添加身份验证到您的 WebDAV 服务器。
基本身份验证还是Digest身份验证?
本表说明了不同操作系统上的不同身份验证方案的兼容性. 请注意,如果您使用 HTTPS,我们假定您的 SSL 证书有效(不是自签)。
如果您正在使用 HTTP ,请使用 Digest authentication因为它将在所有操作系统上工作。 如果您正在使用** HTTPS** ,您可以选择使用 Basic authentication。
我们将涵盖 Digest 身份验证方案,因为它可以在所有操作系统上运行,而不需要SSL证书。
Digest 身份验证
让我们生成存储用户密码的文件(称为 users.password
) 在 Digest 身份验证中,有一个 realm 字段,它作为用户的名称空间。
要生成 digest 文件,我们必须安装依赖。
1sudo apt-get install apache2-utils
接下来我们将添加用户,使用下面的命令来生成用户密码文件。
1sudo htdigest -c /etc/apache2/users.password webdav alex
这将用户 alex 添加到密码文件中,应该有一个密码提示,以创建** alex** 的密码。
对于随后的用户添加,您应该删除 c 旗帜. 这里是另一个例子,添加一个名为** chris** 的用户。
1sudo htdigest /etc/apache2/users.password webdav chris
我们还需要允许Apache读取密码文件,所以我们改变了所有者。
1sudo chown www-data:www-data /etc/apache2/users.password
创建密码文件后,我们应该在 /etc/apache2/sites-available/000-default.conf
对配置进行更改。
将下列行添加到 Directory 指令中
1AuthType Digest
2AuthName "webdav"
3AuthUserFile /etc/apache2/users.password
4Require valid-user
最终版本应该是这样的(评论删除)。
1DavLockDB /var/www/DavLock
2
3<VirtualHost *:80>
4 ServerAdmin webmaster@localhost
5 DocumentRoot /var/www/html
6
7 ErrorLog ${APACHE_LOG_DIR}/error.log
8 CustomLog ${APACHE_LOG_DIR}/access.log combined
9
10 Alias /webdav /var/www/webdav
11
12 <Directory /var/www/webdav>
13 DAV On
14 AuthType Digest
15 AuthName "webdav"
16 AuthUserFile /etc/apache2/users.password
17 Require valid-user
18 </Directory>
19</VirtualHost>
mod_authn模块包含验证指令的定义。
AuthType 指令指示 Apache 对于 /var/www/webdav
目录,应该使用 Digest** 方案进行身份验证。
Digest 身份验证需要为** realm** 设置一个值,我们将其设置为** webdav** .** Realm** 作为一个名称空间。当您有具有相同名称的用户时,您可以使用不同的** realm** 值将其分开。
使用 AuthUserFile 指令来表示密码文件的位置。
Require 指令指出,只有验证自己的有效用户才能访问该目录。
最后,启用 Digest 模块并重新启动服务器,以便设置生效。
1sudo a2enmod auth_digest
2sudo service apache2 restart
步骤四:访问文件
我们将展示如何从Mac,Windows和Linux(Ubuntu)的原始文件浏览器访问您的WebDAV服务器,我们将展示仅在Mac上的文件和文件夹操作,因为简短,尽管您可以从所有操作系统中添加,编辑和删除服务器上的文件。
您还可以通过互联网访问文件,使用Web浏览器。
您可能需要驱动驱动器并重新连接到它,如果您在我们添加身份验证之前测试过它。
◎ Mac
在 Mac 上,打开 Finder . 在菜单栏中,找到** Go** ,然后选择连接到服务器
选项。
输入服务器地址. 它应该是 http://<your.server>/webdav . 点击** 连接** 。
您将被要求提供一个用户名和pssword. 输入我们在服务器上创建的用户之一,并按 Connect 。
一旦连接,目录应该出现在 Finder 中。
您可以复制和保存文件到webdav
目录,并创建子目录. 以下是服务器上的目录的初始状态:
您可以添加或重命名文件并创建新的目录,与Finder完全相同,下面是最终结果。
窗口
在 Windows 中,打开 文件探测器 在左侧栏中,您应该找到 ** 网络** 图标。
右键单击网络
图标,它应该显示带有选项地图网络驱动器
的背景菜单。
在文件夹中输入服务器地址. 它应该是 http://<your.server>/webdav . 如果您的登录不同,请选择** 连接使用不同的凭证** 。
您将被要求输入用户名和密码,然后按OK
。
一旦连接,它应该显示为网络驱动器在你的 文件浏览器 的左侧栏。
Linux(Ubuntu)
我们正在使用Ubuntu 14.04作为我们的Linux桌面操作系统. 在Ubuntu上,打开 文件 .在左侧的侧栏上有一个** 连接到服务器** 选项。
请输入服务器地址. 它应该是 dav://<your.server>/webdav . 点击** 连接** 。
您将被要求输入用户名和密码,然后按 连接 。
一旦连接,目录应该出现在 网络 列表下。
结论
在本文中,我们已经讨论了如何在Ubuntu 14.04上使用Apache设置WebDAV服务器,我们还讨论了如何配置Digest身份验证以确保服务器。