Собственное облачное хранилище (Apache + WebDAV)


Введение в WebDAV

WebDAV – это современный и защищённый сетевой протокол высокого уровня, работающий поверх HTTP для доступа к объектам и коллекциям объектов. Сокращение от Web-based Distributed Authoring and Versioning (http://ru.wikipedia.org/wiki/WebDAV).

Как видно из определения, протокол позволяет работать с документами на удаленном сервере.

Перечислим основные возможности протокола WebDAV:

  1. выполнение основных файловых операций над объектами на удаленном сервере;
  2. выполнение расширенных файловых операций (блокировки, поддержка версий);
  3. работа с любым типом объектов (не только файлы);
  4. поддержка метаданных (свойств) объектов;
  5. поддержка одновременной работы над объектами.

Основные области применения протокола WebDAV:

  1. совместная работа с веб-документами;
  2. сетевая файловая система;
  3. распределенная разработка программного обеспечения;
  4. унифицированный доступ к произвольному хранилищу.

Примеры реального использования WebDAV:

  1. Яндекс.Диск, DropBox и другие подобные облачные хранилища.
  2. Microsoft Explorer/Office/Outlook. Протокол WebDAV используется для осуществления работы с документами на удаленном сервере.
  3. Apache. Реализует поддержку WebDAV в модуле mod_dav.
  4. 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. Если появился запрос пароля и после авторизации видим список файлов — значит все сделали правильно.

Настройке клиентской части посвящена следующая статья.

Пробуйте, комментируйте результаты.