Debian下用Apache2搭建WebDAV

unsplash.com

1.说明

WebDAV 是轻量的,比较方便的远程文件管理工具。可用于替代 FTP。且不要求安装专门的客户端,用浏览器就可以访问。

因此也可以方便地用于传输文件至手机、分享文件给其他人等等。特别是去打印店时,可以替代 U盘。

很多软件也直接支持使用 WebDAV 进行数据备份或者同步。个人最初尝试 WebDAV 就是为了给 OmniFoucs 进行数据同步。

WebDAV 有多种搭建方式,比如最简单的直接用 docker。这里选用 Apache2。

2.安装Apache2

首先更新 apt-get 再使用其安装 apache2

apt-get update
apt-get install apache2

激活 WebDAV 相关组件

a2enmod dav_fs
a2enmod dav

3.配置WebDAV

安装 vim 用于后续配置编辑

apt-get install vim -y

创建配置文件

vi /etc/apache2/sites-available/webdav.conf

用以下配置

DavLockDB /var/www/mywebdav/DavLock
  <VirtualHost *:80>
      ServerAdmin root@localhost
      DocumentRoot /var/www/mywebdav/webdav
      Alias /webdav /var/www/mywebdav/webdav
      <Directory "/var/www/mywebdav">
         DAV On
         Options Indexes MultiViews
         AllowOverride None
         Order allow,deny
         allow from all
         AuthType Basic
         #登陆 WebDAV 使用的用户名,可修改
         AuthName "pp"
         AuthUserFile /var/www/mywebdav/passwd.dav
         Require valid-user 
      </Directory>
 </VirtualHost>

Esc,输入:wq回车保存退出

创建软链接至 enable 文件夹

ln -s /etc/apache2/sites-available/webdav.conf /etc/apache2/sites-enable/webdav.conf

创建虚拟主机目录

mkdir -p /var/www/mywebdav/webdav

赋予权限

chown -R www-data /var/www/mywebdav/webdav

创建密钥文件,最后关键字为登陆用户名。输入后要求输入两遍密码

htpasswd -c /var/www/mywebdav/passwd.dav pp

最后重启 apache2

service apache2 restart

4.测试

有很多种 WebDAV 的连接方式,可以直接浏览器输入 http://服务器ip或域名/webdav。正常情况下应该会出现要求输入用户名和密码的弹窗,并且输入成功后能看到空的目录。

如果用 Mac 的话,可以使用 Finder ,Command+K

输入 http://服务器ip或域名/webdav

尝试上传、删除、下载一些文件,看看是否一切正常。

5.反向代理为https

由于 WebDAV 通常对安全和加密有一些需求,建议使用 https。

有多种方式用 https,比如直接在 apache2 配置中进行修改,可参考:

DavLockDB /var/www/mywebdav/DavLock
VirtualHost *:443>
     ServerAdmin root@localhost
     ServerName webdav.pangruitao.com

     SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM 
     SSLHonorCipherOrder on
#证书相关文件目录
    SSLCertificateFile cert/webdav.pangruitao.com/webdav.pangruitao.com_public.crt 
     SSLCertificateKeyFile cert/webdav.pangruitao.com/webdav.pangruitao.com.key 
     SSLCertificateChainFile cert/webdav.pangruitao.com/webdav.pangruitao.com_chain.crt
 
     DocumentRoot /var/www/mywebdav/webdav
     Alias /webdav /var/www/mywebdav/webdav
    <Directory "/var/www/mywebdav">
         DAV On
         Options Indexes MultiViews
         AllowOverride None
         Order allow,deny
         allow from all
         AuthType Basic
         #登陆 WebDAV 使用的用户名,可修改
         AuthName "pp"
         AuthUserFile /var/www/mywebdav/passwd.dav
         Require valid-user 
     </Directory>
     ErrorLog /var/log/httpd/mywebdav_error.log
     CustomLog /var/log/httpd/mywebdav_access.log common
</VirtualHost>

#将80的请求转至443,可以不用
<VirtualHost :80> 
     ServerAdmin root@localhost 
     ServerName webdav.pangruitao.com 
     RewriteEngine on 
     RewriteCond %{SERVER_PORT} !^443$ 
     RewriteRule ^(.)$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>

也可以使用反向代理达到 https 的目的,详见:

6.资料

https://www.howtoforge.com/setting-up-webdav-with-apache2-on-debian-etch

发表评论