Back to blog
2 min read
在OS X上搭建WebDAV

OmniFocus 发布了 2.0 版本,同步功能只支持 Omni Sync 和 WebDAV。Omni Sync 的速度实在太慢,于是我决定自己搭建 WebDAV 服务。

OS X 自带 Apache,只需修改配置文件即可启用 WebDAV。

首先进入 Apache 的目录,修改 httpd.conf。

cd /etc/apache2
sudo vim httpd.conf

取消 Include /private/etc/apache2/extra/httpd-dav.conf 这一行的注释,保存,退出。

进入 Apache extra 目录,修改 WebDAV 的配置文件。

cd /etc/apache2/extra
sudo vim httpd-dav.conf

将 httpd-dav.conf 中默认的 Alias 和 Directory 修改为以下内容:

DavLockDB "/usr/var/DavLock"

Alias /webdav "/usr/var/webdav/"

<Directory "/usr/var/webdav/">
   Options Indexes MultiViews
   AddDefaultCharset UTF-8
   AllowOverride None
   <IfModule mod_authz_core.c>
       # Apache 2.4
       Require all granted
   </IfModule>
   <IfModule !mod_authz_core.c>
       # Apache 2.2
       Order allow,deny
       allow from all
   </IfModule>

   Dav On
   AuthType Basic
   AuthName "WebDAV Server"
   AuthUserFile "/usr/webdav.passwd"
   Require valid-user
   <LimitExcept GET OPTIONS>
      require user omni
   </LimitExcept>
</Directory>

然后需要创建 WebDAV 用户账户。

sudo htpasswd -c /usr/webdav.passwd omni

创建的用户名为 omni,创建过程中设定密码。

然后建立相关目录并设置权限。

sudo mkdir -p /usr/var
sudo mkdir -p /usr/var/webdav
sudo chown -R www:www /usr/var
sudo chown -R www:www /usr/var/webdav
sudo chgrp www /usr/webdav.passwd

# restart apache

sudo apachectl restart

打开 OmniFocus,输入 WebDAV 服务器地址,执行一次 File -> Replace Server Database 。iOS 版本的 OmniFocus 同理。

升级到 Yosemite 之后发现 Apache 运行出错,使用 sudo apachectl configtest 命令对配置文件进行检查,发现由于 Apache 版本升级,默认配置文件没有加载所需模块。修改 httpd.conf 加载对应模块即可。

本文参考了 How to enable webdav on your mac for iwork on ipad,在 OS X 10.9 的 System Preference 中已经没有 Web Sharing 选项。