Mac – замечательная вещь. Отличное железо, отличная операционная система. Просто работаешь, не задумываясь ни о чём. Но как только нужно сделать шаг в сторону или копнуть на хоть на пару сантиметров вглубь, как начинается такие сложности, что уже и не рад красотам и тоскливо вспоминаешь о Linux.
Итак, дана простейшая задача – нужно синхронизировать базу OmniFocus по WebDAV с OS X Lion Server, установленным на Mac mini Server.
С первого взгляда ничего особенного. В сервере
Но нет. Тыканья-тыканьями, а вот какой URL вводить в Omnifocus для доступа к WebDAV? Пока не зашёл в консоль и не заглянул в файл /etc/apache2/httpd_webdavsharing.conf, я не мог догадаться до “очевиднейшего” URL https://server.domain.com/webdav/.
Следующий этап заключался в поисках полного URL к нужной мне папке. Тоже не составило особого труда – Finder/Go/Connect to Server, ввод URL, взгляд на расшаренные папки.
Создание отдельного каталога для синхронизации, ввод URL в настройках OmniFocus – всё очевидно:
Нажатие кнопки Sync провозглашает начало тёмных веков: “Unable to synchronize database with server”…
Попытка переименования каталога приводит к ошибке:
Не думайте, я не первый год за консолью. chmod 777 на родительский каталог был выставлен после первой неудачной попытки, но ничего не изменилось.
Чтение логов Apache (tail -f /var/log/apache2/*log) показало любопытные строки (а именно код 502 Bad gateway):
"MOVE /webdav/ctrld/Sync/untitled%20folder/ HTTP/1.1" 502 256 "-" "WebDAVFS/1.9.0 (01908000) Darwin/11.2.0 (x86_64)" "PROPFIND /webdav/ctrld/Sync/._untitled%20folder HTTP/1.1" 404 233 "-" "WebDAVFS/1.9.0 (01908000) Darwin/11.2.0 (x86_64)"
Увеличение LogLevel до debug:
$ sudo vim /etc/apache2/httpd.conf #LogLevel warn LogLevel debug $ sudo apachectl restart
Повтор попытки – логи не говорят ни о чём.
Задумчивость, попытки найти варианты решения в Google. Сообщение в форуме Omnigroup “
Приступ ностальгии по Linux. Достал рабочую конфигурацию WebDAV со своего Ubuntu Server. Модифицировал и вставил её в конец httpd_webdavsharing.conf (да, именно этот файл включается в sites/0000_any_443_.conf, что даёт шансы на доступ к WebDAV по https). Само собой, вы должны использовать свои данные, а не копировать мои:
$ sudo vim /etc/apache2/httpd_webdavsharing.conf DavLockDB /var/tmp/DavLock Alias /secretplace /Users/ctrld/Sync <Directory /Users/ctrld/Sync> DAV On AuthType Digest AuthName "UserWebDAV Gateway" Require valid-user </Directory>
Здесь тоже было сказано много лестных слов об Apache для Mac (было убито минут 15 на попытки понять, почему сервер не стартует), но эту часть я опущу.
Не забыл поставить разрешение, дающее право записи для Apache (правильные права несколько другие, но ради простоты я сделал именно так):
$ chmod 777 ~/Sync
Рестарт Apache
$ sudo apachectl restart
Настройка нового URL в OmniFocus:
Нажатие на Sync, и всё заработало (конечно же, производится аутентификация пользователя, это само собой разумеется):
"PUT /secretplace/OmniFocus.ofocus/...client-write-in-progress-... HTTP/1.1" 201 311 "-" "OmniFocus/77.75.9 Darwin/10.7.2" "MOVE /secretplace/OmniFocus.ofocus/...client-write-in-progress-... HTTP/1.1" 201 289 "-" "OmniFocus/77.75.9 Darwin/10.7.2"
OmniFocus на Mac работает, настроил iPhone – и здесь всё в порядке.
Задача решена. Но помните – ручные правки конфигов не приветствуются в OS X Server. Любое обновление Server.app может привести к потере ручных изменений. Поэтому сохраняйте копию конфига и будьте готовы восстановить его, если синхронизация перестанет работать.
Как временное решение данный рецепт вполне подходит. Посмотрим, будет ли исправлена ошибка в очередном обновлении Server.app. Кстати, подскажите, как открыть Bug Report в Apple?