Настройка webdav на debian

Обновлено: 08.07.2024

В статье описано как настроить MySQL аутентификацию WebDAV (модуль mod_auth_mysql) на Apache в Debian Linux. WebDAV позволяет пользователям редактировать, добавлять, скачивать файлы на сервере, без необходимости использования FTP.

Установка Apache2, WebDAV, MySQL и mod_auth_mysql

После этого включите модули WebDAV и mod_auth_mysql:

Создание виртуального хоста

Корневой каталог будет /var/www/web1/web, так что изменим дефолтный виртуальный хост /etc/apache2/sites-available/default. Или изменим уже существующий виртуальный хост.

Сделаем бекап дефолтного виртуального хоста и отредактируем:

Настройка виртуального хоста для WebDAV

Документация по mod_auth_mysql находится в /usr/share/doc/libapache2-mod-auth-mysql. Для просмотра нужно распаковать DIRECTIVES.gz и USAGE.gz:

После прочтения, создаем базу данных с именем webdav, в которой создадим таблицу mysql_auth для логинов и паролей. В дополнение к этому создадим пользователя webdav_admin для MySQL, который и будет использовать mod_auth_mysql для подключения к MySQL:

Не забудьте поменять webdav_admin_password на нужный пароль.

Конечно можно сделать еще поля, например поле определяющий активен пользователь или нет.

Делаем тестового пользователя с паролем test (шифруется MD5) и обозначаем группу testgroup:

Выходим из оболочки MySQL:

После этого отредактируем виртуальный хост /etc/apache2/sites-available/default:

Добавив следующие строки:

Если добавляли дополнительные поля в таблицы, например активацию пользователя, нужно добавить директиву Auth_MySQL_Password_Clause:

(Обязательно должен быть пробел после начала кавычек)

Сейчас любой пользователь который есть в таблице mysql_auth может войти в систему. Если нужно сделать чтобы только определенные пользователи могли логинеться, делаем:

Или добавляем разрешаем всей группе:

Наконец у вас должен получиться такой виртуальный хост:

Тестирование WebDAV

Нам нужен какой нибудь WebDAV клиент, например cadaver:

Теперь проверим работу пользователя ip\test который будет использоваться для Windows:

Поиск и устранение неполадок

Если получится ошибка похожая на:

Значит /var/lock/apache2 не принадлежащих пользователю Apache (www-data на Debian). Решаем:

Если на Windows не хочет подключаться, прося постоянно логин и пароль. Нужно явно указать порт:

Прежде всего определимся с местом хранения, так как WebDAV является расширением веб-сервера, то и данные логично разместить в /var/www, создадим там директорию webdav и назначим ее владельцем веб-сервер:

  • DAV On - включает WebDAV
  • AuthType Digest - задает тип аутентификации. Digest-аутентификация не использует пароли в открытом виде, храня и передавая MD5-хеш.
  • AuthName "dav" - имя области аутентификации, можно выбрать на собственное усмотрение
  • AuthUserFile /etc/davpasswd - файл с паролями пользователей
  • Require valid-user - разрешать доступ только прошедшим аутентификацию пользователям.

Теперь заведем пользователей WebDAV ресурса. Для этого используем утилиту htdigest, первого пользователя заводим командой:

Ключ -с указывает на необходимость создать файл паролей, если файл существует, то он будет удален и создан заново. После имени файла паролей указывается область аутентификации, в нашем случае - dav, и имя пользователя. После чего ему будет необходимо задать пароль. Второго и следующего пользователя создаем командой:

Файл паролей имеет следующую структуру:

Первой частью строки идет имя, затем область аутентификации и затем MD5-хеш пароля. Для удаления пользователя просто удалите относящуюся к нему строку.

После чего подключим необходимые модули Apache:

Проверим конфигурацию на ошибки и перезапустим сервер:

webdav-apache24-001.jpg

Для подключения WebDAV ресурса в файловую систему Windows просто выполните подключение сетевого диска с адресом сервера, не забудьте установить флаги Восстанавливать подключение при входе в систему и Использовать другие учетные данные.

webdav-apache24-003.jpg

Теперь об особенностях эксплуатации. Внутри WebDAV ресурса нет возможности разграничивать права доступа для разных пользователей, так как в реальности владельцем всех файлов является веб-сервер. Но можно создать несколько WebDAV ресурсов со своим набором пользователей каждый (используем разные имена области аутентификации).

Еще более серьезной проблемой является блокировка открытых файлов, что может приводить к потере данных при совместном редактировании. Несмотря на то, что WebDAV поддерживает блокировки открытых файлов, не все клиенты корректно с ними работают, например, Nautilus Gnome3 корректно обрабатывает такие ситуации, выдавая предупреждение:

webdav-apache24-004.jpg

А Проводник Windows позволяет перезаписывать файлы без предупреждения. Поэтому используйте WebDAV для совместной работы с большой осторожностью, убедившись, что ваш клиент или приложение корректно работают с блокировками.

Также учтите, что несмотря на то, что все файлы хранятся удаленно, файловый менеджер воспринимает их как локальные, а следовательно листинг папок, содержащих большое количество файлов может оказаться замедленным, особенно если они содержат мультимедийное содержимое, для которого система будет создавать эскизы, поэтому для WebDAV ресурсов лучше использовать представление в виде списка или таблицы, но не значков и, тем более, эскизов.

Как видим, настройка WebDAV на базе веб-сервера Apache очень проста и не занимает много времени.

Настраиваем веб-сервер на базе Apache в Debian / Ubuntu Server

Веб-сервер Apache без преувеличения можно назвать стандартом де-факто в интернет. Большинство популярных систем управления сайтами и иных веб-приложений разрабатываются таким образом, чтобы работать с данным веб-сервером "из коробки". Поэтому, если вам нужен веб-сервер широкого применения, то Apache будет лучшим выбором. В данной статье мы расскажем, как установить и настроить полноценный веб-сервер на базе Debian / Ubuntu Server.

Сразу скажем, Apache по многим параметрам, таким как скорость работы или потребление ресурсов, не является лидером среди веб-серверов, но выгодно отличается тем, что на нем гарантированно будет работать любое веб-приложение или сайт без дополнительных настроек и доработок. Добавим сюда гибкость и простоту в настройках, хорошую документацию и низкий порог вхождения. В общем, если вы не знаете какие конкретные выгоды даст вам применение альтернативного веб-сервера, смело выбирайте Apache.

Кроме самого веб-сервера нам понадобится система управления базами данных, в данной отрасли стандартом де-факто давно является MySQL, и один из скриптовых языков для работы веб-приложений, на сегодняшний день пальму первенства уверенно держит PHP. Все вместе образует классическую связку, именуемую еще LAMP-сервер, аббревиатура расшифровывается как: Linux - Apache - MySQL - PHP.

Для установки мы будем использовать платформу Debian / Ubuntu. Системы, в зависимости от релиза, отличаются набором ПО, но все изложенное ниже будет одинаково применимо к любой из них. Существующие отличия будут оговорены отдельно. На момент написания статьи актуальны следующие релизы систем и версии ПО:

  • Debian 8 Jessie: Apache 2.4.10, PHP 5.6.7, MySQL 5.5.43
  • Debian 7 Squeeze: Apache 2.2.22, PHP 5.4.39, MySQL 5.5.43
  • Ubuntu Server 14.04 LTS: Apache 2.4.7, PHP 5.5.9, MySQL 5.5.43
  • Ubuntu 12.04 LTS: Apache 2.2.22, PHP 5.3.10, MySQL 5.5.43

Все вышеуказанные выпуски содержат относительно современные версии ПО, но есть некоторые особенности. Так входящий в состав Ubuntu 14.04 и Debian 8, Apache 2.4 имеет достаточно серьезные отличия от Apache 2.2 и не все CMS (системы управления контентом, "движки") и веб-приложения умеют работать с ним, особенно это касается старых версий. Так, например, вы не сможете использовать Apache 2.4 для веб-доступа к базам 1С:Предприятие. Поэтому, если вы решили выбрать версию 2.4 - уточните совместимость с нею всех планируемых к размещению CMS и веб-приложений.

Кроме того, MySQL из состава Ubuntu Server 12.04 / 14.04 не работает внутри контейнеров OpenVZ, которые широко используются для предоставления услуги VPS. Проблема решается заменой MySQL из репозитория на версию от MySQL Community (разработчики) или один из форков, например, MariaDB.

С учетом вышесказанного оптимальным выбором нам представляется использование в качестве платформы веб-сервера Debian 7, как наиболее совместимую с существующими веб-приложениями и не имеющую серьезных проблем.

Мы не будем останавливаться на установке и подготовке серверной ОС, более подробно вы можете ознакомиться с этим процессом в наших статьях для Debian и Ubuntu Server. Также не забудьте правильно настроить язык и региональные стандарты системы. Все приведенные ниже действия следует выполнять с правами суперпользователя, например, с помощью команды sudo.

Установка Apache

Установка веб-сервера предельно проста:

Для проверки его работы наберите в браузере IP-адрес сервера, и вы увидите стандартную страницу заглушку:

LAMP-Debian-Ubuntu-001.jpg

Для Apache 2.4 она выглядит несколько иначе, но смысл от этого не меняется.

Настройки сервера содержатся в /etc/apache2/apache2.conf, к которому подключаются дополнительные файлы из директорий mods-enabled и sites-enabled. При этом никто не мешает вам внести все указанные настройки непосредственно в apache2.conf - все будет работать, но это резко снижает удобство администрирования, так как требует постоянной правки основного файла конфигурации, в то время как настройки во внешних файлах легко включаются и отключаются при помощи специальных инструментов.

С этой целью каталоги mods-enabled и sites-enabled не содержат файлов конфигурации, а только символические ссылки на директории mods-available и sites-available, где следует располагать сами файлы. Как понятно из названий, в данных каталогах находятся настройки модулей и виртуальных хостов. Если с модулями дело приходится иметь редко, то управлять таким образом виртуальными хостами, т.е. сайтами, очень удобно.

Следующий вопрос, который следует решить, это права доступа к файлам и папкам сайта. По умолчанию их владельцем должен являться веб-сервер (пользователь и группа www-data), в противном случае скрипты могут работать неожиданным образом или не работать вообще. Более удобно и безопасно запускать содержимое сайтов от имени пользователя, а не веб-сервера. Для этого установим следующий пакет:

В Ubuntu 14.04 при установке данного пакета вы можете столкнуться с ошибкой:

Это известный баг, для его исправления выполните:

Если мы заглянем в папку sites-enabled, то увидим там уже готовую конфигурацию для сайта по умолчанию, т.е. того, что будет показано при наборе IP-адреса сервера. Данная настройка указывает на папку /var/www или /var/www/html для Apache 2.4, где расположена страница заглушка. После того как вы добавите свои сайты, выводиться будет первый по списку сайт.

Теперь создадим файл виртуального хоста и приступим к его заполнению:

Для Apache 2.4 файлы конфигурации обязательно должны иметь расширение .conf, поэтому команда будет выглядеть следующим образом.

Внутри разместите следующий текст:

Разберем содержимое более подробно. Начинается секция виртуального хоста с ее определения <VirtualHost 1.2.3.4:80>, где указывается IP-адрес и порт, на котором данный хост работает, если вы хотите принимать соединения на всех сетевых интерфейсах, то вместо адреса поставьте "звездочку" - *. Внутри секции располагаются следующие директивы:

  • ±Includes - разрешает / запрещает SSI (Server Side Includes -- включения на стороне сервера), в нашем случае выключено в целях безопасности. Имеет смысл включать только в том случае, если ваш сайт явно требует данной опции.
  • ±Indexes - разрешает / запрещает показывать содержимое каталога при отсутствии индексного файла, отключено в целях безопасности.
  • ±ExecCGI - разрешает / запрещает выполнение сценариев CGI, отключаем в целях безопасности.

За ней следует директива AllowOverride, которая устанавливает использование директив из файлов .htaccess, по умолчанию сервер устанавливает для /var/www данную директиву в None, что запрещает использовать директивы .htaccess во всех вложенных директориях. Для того чтобы разрешить использование директив .htaccess установите данную директиву в All, что разрешит использовать в .htaccess любые директивы.

Этим список доступных опций (как и директив) не исчерпывается, но их рассмотрение выходит за рамки данной статьи и будет рассмотрено в отдельном материале. Вы можете самостоятельно ознакомиться с ними в официальной документации.

Закрываем открытые секции: </Directory> и </VirtualHost>, затем сохраняем файл. Конфигурация виртуального хоста готова.

Чтобы включить сайт необходимо сделать символьную ссылку на файл конфигурации в каталоге sites-enabled, а, чтобы выключить - удалить эту ссылку. Это можно сделать вручную, при помощи команды ln -s, или использовать специальную утилиту apache:

Данная команда включит сайт, для выключения введите:

В качестве опции команде передается имя конфигурационного файла из sites-available, в случае Apache 2.4 без расширения. После каждого такого действия веб-сервер необходимо перезапустить:

Чтобы проверить работу виртуального хоста разместите в его корневой директории любой html-файл и обратитесь к серверу по имени домена (при этом А-запись домена должна быть настроена и указывать на ваш веб-сервер).

Например, создадим индексный файл:

И разместим в нем строку:

В итоге в браузере вы должны увидеть следующее:

LAMP-Debian-Ubuntu-002.jpg

Установка PHP

Если веб-сервер был нужен вам для размещения статического содержимого или сторонних веб-приложений, например, публикации баз 1С:Предприятия, то дальше можно не читать. Но если вы собираетесь создать сайт на основе популярных CMS - вам потребуется поддержка скриптового языка PHP, на базе которого разработаны большинство современных "движков".

Важно! В современных дистрибутивах используется более новая версия PHP7, чтобы работать с новой версией языка вместо php5 в приведенных ниже командах следует указывать php7.x или просто php, например, вместо php5-imagick нужно набрать php7.0-imagick или php-imagick.

Будет установлен сам интерпретатор и необходимые для работы с веб-сервером модули. Модули позволяют гибко изменять функциональность PHP, управление модулями осуществляется аналогично Apache, когда конфигурации модулей располагаются в одной директории, а для их подключения делается символьная ссылка в другую.

По умолчанию PHP устанавливается с базовым набором модулей, который удовлетворяет большинство потребностей, однако применяемая вами CMS может требовать дополнительных модулей, которые нужно будет установить отдельно.

Например, для работы с графикой вам потребуется поддержка графической библиотеки GD2, поэтому установим соответствующий модуль:

После чего не забудьте перезапустить веб-сервер:

Кстати, GD2, на наш взгляд не самый лучший выбор, в актив библиотеки можно записать низкое потребление ресурсов и высокую скорость работы, но по качеству работы с изображениями она уступает альтернативной утилите imagemagick, иногда значительно. Поэтому имеет смысл установить обе утилиты и выбрать ту, работа которой наиболее вам подойдет. Если ресурсы сервера позволяют, то предпочтительно использовать imagemagick.

Установим утилиту и модуль PHP для нее:

Для проверки работы PHP создадим в корневой директории сайта специальный скрипт:

И внесем в него следующий текст:

Миниатюра изображения для LAMP-Debian-Ubuntu-003.jpg

Установка MySQL

СУБД MySQL - третий необходимый компонент полноценного веб-сервера, основное назначение базы данных - хранение информации сайта, как пользовательской, так и служебной. При этом по важности СУБД превосходит все остальные компоненты, так как потеря базы данных равносильна потере всей информации вашего ресурса.

Установим сервер баз данных и модуль PHP для работы с ним:

Важно! В свежих выпусках Debian (и его производных) вместо пакета mysql-server следует установить mariadb-server, который полностью совместим с MySQL.

В процессе установки вам будет предложено ввести пароль для суперпользователя MySQL (root), которого не следует путать с суперпользователем системы.

LAMP-Debian-Ubuntu-004.jpg

Для удобного управления базами данных имеет смысл установить phpMyAdmin - удобную веб-утилиту для управления сервером MySQL:

LAMP-Debian-Ubuntu-005.jpg

В Ubuntu 14.04 мы столкнулись с небольшой проблемой, утилита сообщила нам, что расширение mcrypt не найдено, хотя соответствующий модуль PHP был установлен среди зависимостей.

LAMP-Debian-Ubuntu-006.jpg

Проверим. В /etc/php5/apache2/conf.d ссылка на данный модуль отсутствует, в то время как в /etc/php5/mods-available нужный файл есть. Следовательно, модуль установлен, но, по какой-то причине, не подключен. Возможно это связано с Apache 2.4 и тогда подобная ситуация может иметь место и в Debian 8.

Однако ничего страшного не произошло, все что нам нужно - это подключить модуль, создав символьную ссылку:

LAMP-Debian-Ubuntu-007.jpg

Никаких дополнительных настроек MySQL сервер не требует, благо кодировка UTF-8 стала стандартом де-факто. В принципе на этом можно закончить, но все базы данных размещаемые на сервере будут работать с правами суперпользователя MySQL, что небезопасно. Поэтому следует создать пользователей сервера баз данных с ограниченными правами, чтобы они могли управлять только своими базами.

Откроем phpMyAdmin и перейдем на страницу Привилегии (Пользователи), где выберем Добавить нового пользователя.

LAMP-Debian-Ubuntu-009.jpg

Это позволит лишний раз не отвлекаться на установку прав, а просто создавать базы с именами вида ivanov_base1 или petrov_base2, предоставляя соответствующим пользователям полные права на них, а также быстро определять принадлежность баз данных. В тоже время данная настройка не является догмой, вы можете поступать на свое усмотрение. Остальные параметры оставляем по умолчанию.

Для проверки создадим базу данных phpMyAdmin - Базы данных - Новая база данных.

LAMP-Debian-Ubuntu-010.jpg

При создании БД обращайте внимание на кодировку. Сегодня большинство движков и веб-приложений работают с UTF-8 (utf8_general_ci), однако старые версии движков могут использовать национальные кодировки, поэтому нужно будет правильно указать их еще на стадии создания базы, в противном случае, залив в базу, созданную в UTF-8 дамп в кодировке Windows-1252 вместо русских букв на сайте окажутся "крякозяблики".

LAMP-Debian-Ubuntu-011.jpg

Создав базу, проверим ее привилегии, нажав одноименную ссылку рядом с именем базы.

LAMP-Debian-Ubuntu-012.jpg

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

На этом настройку можно считать законченной и приступать к эксплуатации сервера. Несмотря на то, что описанная конфигурация является базовой, ее возможностей вполне достаточно для размещения и нормальной работы практически любой современной CMS массового применения и мы будем использовать данный сервер как эталонный для наших следующих материалов по данной теме.

webdav-logo

Инструкция размещенная на данной странице начинающему пользователю покажется сложной. Есть также страничка c русским переводом для подключения по WebDav на Ubuntu. Но и она тоже не полная. Поэтому было принято решение написать новую инструкцию, для Debian подобных систем.

загружаем свежую версию архива WebDAVCloudMailRu-*-dotNetCore31.zip и распаковываем ее в директории, которая будет служить установочной. Все операции я буду проводить через терминал. Вы же можете делать так, как вам будет удобнее.

Требования к Linux системе: RHEL, Ubuntu 20.04, Ubuntu 18.04, Ubuntu 16.04, Ubuntu 14.04, Debian 10, Debian 9, Fedora 28, Fedora 27, CentOS / Oracle, OpenSUSE Leap, SLES

  • зарегистрировать ключ Майкрософт;
  • зарегистрировать репозиторий продуктов;
  • установить необходимые зависимости.

Откройте терминал и выполните приведенные ниже команды.

Устанавливаем библиотеку SDK

Можно посмотреть справочную информацию, что мы установили

При появлении ошибки Unable to locate package dotnet-sdk-2.2 , можно попробовать следующую команду

Выбор порта и запуск эмулятора

Выбираем порт, который мы собираемся использовать для подключения к Облаку, в моем примере это 8888, тогда запуск сервиса из командной строки терминала должен быть

Эта команда будет работать, если ее запустить, например в терминале, в той же директории, где мы распаковали архив WebDAVCloudMailRu-*-dotNetCore31.zip

Для того чтобы команда работала при каждой загрузке Debian, необходимо добавить её в список приложений, загружаемых автоматически.

Полный путь для запуска приложения выглядит следующим образом:

path-to — ваш путь к wdmrc.dll файлу.

Теперь перезагружаем Debian и переходим к следующему шагу.

Подключение к эмулятору по протоколу WebDAV из файлового менеджера

В файловом менеджере жмём ctrl+L и в строку вписываем dav://127.0.0.1:8888 жмём enter, система запросит логин и пароль к облаку, вводим (чтобы не набирать это снова и снова, необходимо выбрать пункт сохранения логина и пароля)

webdav

и в результате — вы в своём облаке.

Если вы используете davfs2, отключите использование метода LOCK. Для этого выставите опции use_locks в значение 0 в конфигурационном файле /etc/davfs2/davfs2.conf (расположение файла может варьироваться в зависимости от используемого дистрибутива).

Для запуска в автоматическом режиме можно использовать автозапуск в fstab

Также необходимо создать директорию /home/CloudDisk

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.

Читайте также: