2021年4月22日星期四

Linux下搭建WebDAV服务器

 

首先介绍一下WebDAV

1.简而言之,WebDAV是一种HTTP1.1的扩展协议,可以在像操作本地文件夹一样操作服务器上的文件夹,还可以支持版本控制。

2.WebDAV的优势: 一套自己定义的安全完善的身份验证机制。穿墙 HTTPS传送数据,使用一个TCP连接传送所有文件,方便的客户端工具,和局域网中的文件共享一样简单使用。

开始前先确保你的server上安装了apache2,然后就是启动webdav服务。


sudo a2enmod dav_fs

sudo a2enmod dav

sudo a2enmod dav_lock

创建一个可以共享目录并授权给apache

sudo mkdir /var/www/webdav 

sudo chown www-data:www-data /var/www/webdav

创建一个存放密码的目录并创建登陆用户;

sudo mkdir /var/webdavpasswd

创建用户

sudo htpasswd -c /var/webdavpasswd/passwd.dav admin

授权密码目录给apache

sudo chown www-data:www-data -R /var/webdavpasswd

设置密码文件读写权限

sudo chmod 640 /var/webdavpasswd/passwd.dav

最后写入Apache2配置文件并重启一下apach2。

配置虚拟主机:

sudo vim /etc/apache2/sites-available/webdav.conf

在文件中插入以下内容并保存(示例)

 <VirtualHost *:448>

       ServerName example.com
       ServerAlias example.com

         SSLEngine on
         SSLCertificateFile       /etc/ssl/fullchain.crt
         SSLCertificateKeyFile              /etc/ssl/private.pem

         DocumentRoot  /mnt/
  Alias  /webdav /mnt

         <Directory  /mnt/>
             DAV On
      Options +Indexes 
             IndexOptions FancyIndexing
             AddDefaultCharset UTF-8
      AuthType Basic
      AuthName "WebDav"
      AuthUserFile /var/webdavpasswd/passwd.dav
      Require valid-user
      Order allow,deny
             Allow from all 
         </Directory>

 </VirtualHost>

启用已创建站点配置文件::

a2ensite webdav.conf

测试配置文件语法:

sudo apachectl configtest

添加开放端口:

sudo vim /etc/apache2/ports.conf

在文件中插入以下内容并保存(示例)

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80
Listen 83

<IfModule ssl_module>
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

重新加载apache2

systemctl reload apache2

验证

使用命令行 cadaver 进入登录

sudo apt-get install cadaver

cadaver http://127.0.0.1:80/webdav