Apache2 + webdav on ubuntu

[toc]

系统环境

  • Ubuntu 20.04.2
  • Apache/2.4.41 (Unix)

安装Apache

安装Apache

1
sudo apt-get install apache2

禁用默认页面

1
2
sudo a2dissite 000-default.conf
sudo service apache2 reload

配置虚拟主机

此时,我们需要使用ServerName:webdav.local.conf和附加的目录/var/www/webdav配置虚拟主机。为此,请导航至/etc/apache2/sites-available/

1
cd /etc/apache2/sites-available/

并创建一个名为webdav.local.conf的新站点配置文件,其内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<VirtualHost *:80>
ServerAdmin webmaster@localhost
Servername webdav.local

DocumentRoot /var/www/webdav
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/webdav/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>

完成后,我们需要创建一个适当的/var/www/webdav/目录:

1
sudo mkdir /var/www/webdav

将所有者更改为apache:

1
sudo chown www-data.www-data /var/www/webdav

并启用新网站webdav.local.conf

1
sudo a2ensite webdav.local.conf

为了测试它,我们可以创建一些简单的index.html文件:

1
sudo sh -c 'echo "Welcome from WebDAV.local" > /var/www/webdav/index.html'

最后重新加载apache2网络服务器:

1
sudo service apache2 reload

WebDAV设置

启用WebDAV模块

1
sudo a2enmod dav_fs

重启apache服务器

1
sudo service apache2 restart

基本配置

创建目录

1
sudo mkdir /var/www/webdav/svn

使它可被apache写入也很重要,否则会出现403 Forbidden错误

1
sudo chown www-data.www-data /var/www/webdav/svn/

并为我们的新虚拟主机webdav.local启用WebDAV。这可以通过将以下行添加到webdav.local.conf的代码块中来完成:

1
2
3
4
Alias /svn /var/www/webdav/svn
<Location /svn>
DAV On
</Location>

以上是通过启用WebDAV的目录/var/www/webdav/svn进行访问的,可通过http://(domain/ip)/svn进行访问。对现有的/etc/apache2/sites-available/webdav.local.conf配置文件进行上述修改,然后重新启动apache Web服务器。这是现阶段整个/etc/apache2/sites-available/webdav.local.conf文件的外观:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<VirtualHost *:80>
ServerAdmin webmaster@localhost
Servername webdav.local

DocumentRoot /var/www/webdav
<Directory />
Options FollowSymLinks:
AllowOverride None
</Directory>
<Directory /var/www/webdav/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

Alias /svn /var/www/webdav/svn
<Location /svn>
DAV On
</Location>

</VirtualHost>

测试工具(非必须)

现在该测试我们的配置了。一种方法是将浏览器指向http://webdav.local/svn,甚至更好的方法是使用cadaver工具。首先使用以下命令安装cadaver

1
sudo apt-get install cadaver

使用dd创建相同的数据文件以上传到您的WebDAV目录并上传:

1
2
3
4
5
6
7
8
9
10
11
12
13
dd if=/dev/zero of=mydata.dat bs=1M count=10
# 输出
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.075726 s, 138 MB/s

cadaver http://webdav.local/svn

dav:/svn/> put mydata.dat
Uploading mydata.dat to `/svn/mydata.dat':
Progress: [=============================>] 100.0% of 10485760 bytes succeeded.
dav:/svn/> quit
Connection to `webdav.local' closed.

到此,基本的WebDAV服务器就配置完成并且可以使用了

具有身份验证的WebDAV

如果打算将WebDAV服务器部署在远程主机上,则建议至少执行一些基本身份验证。幸运的是,使用**htpasswd**命令并重新配置我们现有的/etc/apache2/sites-available/webdav.local.conf配置文件。

首先创建一个目录,您要在其中存储webdav的密码文件。这是您选择的位置。在本教程中,我使用/usr/local/apache2/

1
sudo mkdir /usr/local/apache2/

然后,使用htpasswd创建一个新的密码文件,所有用户都将通过该文件进行身份验证。

1
sudo htpasswd -c /usr/local/apache2/webdav.passwords [usernaem]

如果您需要添加更多用户,请使用上述语法,但是忽略-c选项,因为它将覆盖您现有的文件。
现在,身份验证文件已经准备就绪,我们需要将身份验证添加到当前的/etc/apache2/sites-available/webdav.local.conf配置文件中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<VirtualHost *:80>
ServerAdmin webmaster@localhost
Servername webdav.local

DocumentRoot /var/www/webdav
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/webdav/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

Alias /svn /var/www/webdav/svn
<Location /svn>
DAV On
AuthType Basic
AuthName "webdav"
AuthUserFile /usr/local/apache2/webdav.passwords
Require valid-user
</Location>

</VirtualHost>

从现在开始,如果您尝试访问WebDAV服务器,则需要先进行身份验证。