Введение в WebDAV
WebDAV — это современный и защищённый сетевой протокол высокого уровня, работающий поверх HTTP для доступа к объектам и коллекциям объектов. Сокращение от Web-based Distributed Authoring and Versioning (http://ru.wikipedia.org/wiki/WebDAV).
Как видно из определения, протокол позволяет работать с документами на удаленном сервере.
Перечислим основные возможности протокола WebDAV:
- выполнение основных файловых операций над объектами на удаленном сервере;
- выполнение расширенных файловых операций (блокировки, поддержка версий);
- работа с любым типом объектов (не только файлы);
- поддержка метаданных (свойств) объектов;
- поддержка одновременной работы над объектами.
Основные области применения протокола WebDAV:
- совместная работа с веб-документами;
- сетевая файловая система;
- распределенная разработка программного обеспечения;
- унифицированный доступ к произвольному хранилищу.
Примеры реального использования WebDAV:
- Яндекс.Диск, DropBox и другие подобные облачные хранилища.
- Microsoft Explorer/Office/Outlook. Протокол WebDAV используется для осуществления работы с документами на удаленном сервере.
- Apache. Реализует поддержку WebDAV в модуле mod_dav.
- Zope и Tomcat. WebDAV используется для управления контентом.
Создание собственного облачного хранилища на базе веб-сервера Apache и протокола WebDAV
И так, для того чтобы нам начать настраивать WebDAV, Нам необходимо иметь рабочий сервер с установленным на нем Apache. В нашем случае, мы используем Ubuntu Server 12.04 с Apache v2.2.22. Для других ОС Linux и ранних веток Apache все будет настраиваться также.
Для начала в конфигурационном файле аpache2.conf необходимо убедится что подключены следующие модули:
LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
LoadModule dav_fs_module /usr/lib/apache2/modules/mod_dav_fs.so
Теперь вставляем следующий код в конфигурацию необходимого виртуального хоста:
<VirtualHost *:80>
# либо <VirtualHost *:443>, в зависимости от применяемой политики безопасности
# …
# некоторый текст конфигурации умышленно упущен :-)
# …
<IfModule mod_dav.c>
Alias /webdav «/www/webdav/home» # создаем алиас, чтобы доступ к WebDAV был наглядным
DAVMinTimeout 1000 # желательно задать некоторый таймаут, чтобы все загружаемые файлы успели залиться на сервер в
# случае медленного или «плохого» соединения
<Directory /www/webdav/home>
Dav On # активируем WebDAV
RewriteEngine off # очень важный параметр, о нем упомянем ниже
Options +Indexes # настраиваем индексирование каталога
IndexOptions FancyIndexing
AddDefaultCharset UTF-8 # задаем кодировку по умолчанию
AuthType Basic # базовый тип авторизации (по логину и паролю)
AuthName WebDAV # зададим некоторое имя для авторизации
AuthUserFile /www/passwd/webdav_passwd.dav # сообщаем Apache, где лежит файл с паролями пользователей
Require valid-user # доступ будем давать только авторизованным пользователям
Order Deny,Allow # для пущей безопасности разрешаем доступ
Deny from all # только для конкретных IP-адресов
Allow from «IP-адрес 1»
Allow from «IP-адрес 2»
Allow from «IP-адрес N»
</Directory>
# …
# некоторый текст конфигурации умышленно упущен :-)
# …
</VirtualHost>
После редактирования конфигурационного файла, необходимо создать папки /www/webdav/home и /www/passwd и дать разрешение чтение-запись на них пользователю под которым работает Apache (в нашем случае www-data:www-data)
Дальше надо создать пользователей, которым будет разрешен доступ, делается это путем исполнения команды:
htpasswd -c /www/passwd/webdav_passwd.dav Имя_пользователя
Добавление пользователя осуществляется командой:
htpasswd /www/passwd/webdav_passwd.dav Имя_пользователя
Несколько слов о параметре RewriteEngine off. Параметр RewriteEngine on активирует средство преобразования ссылок (модуль mod_rewrite), и если этот параметр по умолчанию включен (а это бывает очень часто), то у Apache возникает проблема с распознаванием сложных имен загружаемых файлов (происходит преобразование имени файла), и в связи с этим возникает ошибка доступа при редактировании и создании нового файла в каталоге WebDAV. Поэтому RewriteEngine off необходимо добавить во все конфигурации директорий WebDAV в случае, если подключен модуль mod_rewrite. Если же модуль не подключен, то и смысла добавлять параметр нет, в таком случае параметр RewriteEngine off будет генерировать ошибку.
Готово, перезапускаем Apache и проверяем работоспособность. В нашем случае необходимо зайти браузером по адресу http(https)://адрес_сервера/webdav. Если появился запрос пароля и после авторизации видим список файлов — значит все сделали правильно.
Настройке клиентской части посвящена следующая статья.
Пробуйте, комментируйте результаты.