Настройка webdav на debian
В статье описано как настроить 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 ресурса в файловую систему Windows просто выполните подключение сетевого диска с адресом сервера, не забудьте установить флаги Восстанавливать подключение при входе в систему и Использовать другие учетные данные.
Теперь об особенностях эксплуатации. Внутри WebDAV ресурса нет возможности разграничивать права доступа для разных пользователей, так как в реальности владельцем всех файлов является веб-сервер. Но можно создать несколько WebDAV ресурсов со своим набором пользователей каждый (используем разные имена области аутентификации).
Еще более серьезной проблемой является блокировка открытых файлов, что может приводить к потере данных при совместном редактировании. Несмотря на то, что WebDAV поддерживает блокировки открытых файлов, не все клиенты корректно с ними работают, например, Nautilus Gnome3 корректно обрабатывает такие ситуации, выдавая предупреждение:
А Проводник 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-адрес сервера, и вы увидите стандартную страницу заглушку:
Для 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-файл и обратитесь к серверу по имени домена (при этом А-запись домена должна быть настроена и указывать на ваш веб-сервер).
Например, создадим индексный файл:
И разместим в нем строку:
В итоге в браузере вы должны увидеть следующее:
Установка 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 создадим в корневой директории сайта специальный скрипт:
И внесем в него следующий текст:
Установка MySQL
СУБД MySQL - третий необходимый компонент полноценного веб-сервера, основное назначение базы данных - хранение информации сайта, как пользовательской, так и служебной. При этом по важности СУБД превосходит все остальные компоненты, так как потеря базы данных равносильна потере всей информации вашего ресурса.
Установим сервер баз данных и модуль PHP для работы с ним:
Важно! В свежих выпусках Debian (и его производных) вместо пакета mysql-server следует установить mariadb-server, который полностью совместим с MySQL.
В процессе установки вам будет предложено ввести пароль для суперпользователя MySQL (root), которого не следует путать с суперпользователем системы.
Для удобного управления базами данных имеет смысл установить phpMyAdmin - удобную веб-утилиту для управления сервером MySQL:
В Ubuntu 14.04 мы столкнулись с небольшой проблемой, утилита сообщила нам, что расширение mcrypt не найдено, хотя соответствующий модуль PHP был установлен среди зависимостей.
Проверим. В /etc/php5/apache2/conf.d ссылка на данный модуль отсутствует, в то время как в /etc/php5/mods-available нужный файл есть. Следовательно, модуль установлен, но, по какой-то причине, не подключен. Возможно это связано с Apache 2.4 и тогда подобная ситуация может иметь место и в Debian 8.
Однако ничего страшного не произошло, все что нам нужно - это подключить модуль, создав символьную ссылку:
Никаких дополнительных настроек MySQL сервер не требует, благо кодировка UTF-8 стала стандартом де-факто. В принципе на этом можно закончить, но все базы данных размещаемые на сервере будут работать с правами суперпользователя MySQL, что небезопасно. Поэтому следует создать пользователей сервера баз данных с ограниченными правами, чтобы они могли управлять только своими базами.
Откроем phpMyAdmin и перейдем на страницу Привилегии (Пользователи), где выберем Добавить нового пользователя.
Это позволит лишний раз не отвлекаться на установку прав, а просто создавать базы с именами вида ivanov_base1 или petrov_base2, предоставляя соответствующим пользователям полные права на них, а также быстро определять принадлежность баз данных. В тоже время данная настройка не является догмой, вы можете поступать на свое усмотрение. Остальные параметры оставляем по умолчанию.
Для проверки создадим базу данных phpMyAdmin - Базы данных - Новая база данных.
При создании БД обращайте внимание на кодировку. Сегодня большинство движков и веб-приложений работают с UTF-8 (utf8_general_ci), однако старые версии движков могут использовать национальные кодировки, поэтому нужно будет правильно указать их еще на стадии создания базы, в противном случае, залив в базу, созданную в UTF-8 дамп в кодировке Windows-1252 вместо русских букв на сайте окажутся "крякозяблики".
Создав базу, проверим ее привилегии, нажав одноименную ссылку рядом с именем базы.
Как видим, все правильно, полные права на базу имеет указанный в имени пользователь и суперпользователь root, хотя никаких настроек доступа при создании базы мы не указывали.
На этом настройку можно считать законченной и приступать к эксплуатации сервера. Несмотря на то, что описанная конфигурация является базовой, ее возможностей вполне достаточно для размещения и нормальной работы практически любой современной CMS массового применения и мы будем использовать данный сервер как эталонный для наших следующих материалов по данной теме.
Инструкция размещенная на данной странице начинающему пользователю покажется сложной. Есть также страничка 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, система запросит логин и пароль к облаку, вводим (чтобы не набирать это снова и снова, необходимо выбрать пункт сохранения логина и пароля)
и в результате — вы в своём облаке.
Если вы используете davfs2, отключите использование метода LOCK. Для этого выставите опции use_locks в значение 0 в конфигурационном файле /etc/davfs2/davfs2.conf (расположение файла может варьироваться в зависимости от используемого дистрибутива).
Для запуска в автоматическом режиме можно использовать автозапуск в fstab
Также необходимо создать директорию /home/CloudDisk
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Читайте также: