Apache WebDAV服务器

正如 Apache Vs NGINX 所述,NGINX核心模块功能有限,对于 WebDAV 的完整功能支持需要依赖第三方模块,部署和配置复杂。而Apache httpd服务,则在核心模块提供了丰富的功能,可以方便配置部署WebDAV服务。

备注

后续我准备将 通过WebDAV同步Joplin数据NGINX WebDAV服务器 改为Apache WebDAV,主要考虑方便配置,同时学习Apache的配置管理。

激活 WebDAV Apache模块

  • Apache web服务器提供了很多模块,通过 a2enmod 工具可以激活或关闭,使用以下命令激活:

Apache web server激活 WebDAV 模块
sudo a2enmod dav
sudo a2enmod dav_fs
  • 重启apache:

重启Apache web server
sudo systemctl restart apache2.service

配置 WebDAV

  • 创建 Joplin - 开源Markdown记事本 存储目录:

    mkdir /home/huatai/docs/joplin
    
  • WebDAV 需要存储一个数据库文件来管理 WebDAV 用户存取文件的所,这个锁文件必须被Apache能够读写,但是不能被web网站访问到以免泄露安全信息。创建目录:

    mkdir /home/huatai/docs/var
    

上述目录在Apache配置中存放 DavLock 锁文件

采用 Apache基本认证配置 方法,结合 WebDAV :

DavLockDB /home/huatai/docs/var/DavLock
<VirtualHost *:80>
	ServerAdmin webmaster@localhost

	#DocumentRoot /var/www/html
	DocumentRoot /home/huatai/docs/github.com/huataihuang/cloud-atlas/build/html
        <Directory "/home/huatai/docs/github.com/huataihuang/cloud-atlas/build/html">
            Options Indexes FollowSymLinks

            AuthType Basic
            AuthName "Restricted Content"
            AuthUserFile /etc/apache2/.htpasswd
            Require valid-user
        </Directory>

        Alias /joplin /home/huatai/docs/joplin
        <Directory "/home/huatai/docs/joplin">
            DAV on

            AuthType Basic
            AuthName "Restricted Content"
            AuthUserFile /etc/apache2/.htpasswd
            Require valid-user
        </Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

备注

你会注意到,我在 //joplin 两次配置了 Apache基本认证配置

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

我最初以为 /joplin 会集成上一级的目录配置,但是实际上并不是,需要为每个目录配置认证,否则会类似 Apache 简单配置 那样由于默认安全限制无法访问 /joplin

参考