$Id: README 27 2019-07-23 11:26:37Z abalama $ App::DistSync v1.04 and later This document written in Windows-1251 charset ============================================= КОРОТКО О ПРОЕКТЕ ----------------- App::DistSync - готовое решение для синхронизации двух и более WEB ресурсов между собой. Данный проект отлично зарекомендовал себя в синхронизации сайтов на которых размещаются дистрибутивы программного обеспечения. ВОЗМОЖНОСТИ ----------- - Синхронизация каталогов и файлов (репликация) - Простой механизм добавления файлов на ресурс - обычное копирование - Отсутствие необходимости конфигурирования, работа программы настраивается редактированием дескрипторных файлов - Возможность динамического добавления новых ресурсов (зеркал) - Установка проекта средствами CPAN или в ручном режиме через make install ЗАВИСИМОСТИ ----------- Перед началом установки, Вам необходимо проверить наличие следующих пакетов, установленных в Вашей системе где будет "работать" App::DistSync: - gcc последней версии - perl v5.10 или выше (рекомендуется не ниже v5.12) - libwww (p5-libwww / perl-libwww) - libnet - httpd (apache) или nginx УСТАНОВКА --------- Установка выполняется двумя путями. Первый - автоматизированный; второй - ручной. В автоматизированном режиме для установки достаточно выполнить команду: # cpan install App::DistSync или (для ActivePerl): # ppm install App-DistSync В ручном режиме Вам потребуется выполнить следующий набор операций: - Скачать дистрибутив с CPAN или официальный релиз с сайта SourceForge: https://metacpan.org/pod/App::DistSync http://search.cpan.org/~abalama/ https://sourceforge.net/projects/app-distsync/ - Разархивировать полученный архив, и перейти в извлеченную папку с помощью командной строки консоли - Находясь в извлеченной папке выполнить последовательно следующие команды: perl Makefile.PL make make test make install В процессе установки система предложит установить необходимые модули (пакеты), их не так много и большая часть уже установлена на Вашей системе. ИНИЦИАЛИЗАЦИЯ ------------- Процесс инициализации создает структуру каталога ресурса. О файлах входящих в эту структуру см. в следующем разделе. Для инициализации следует выполнить следующую команду: # distsync -D /var/www/dist.mysite.com/path init Опция -D указывает на ресурс, который будет объявлен зеркалом и там развернется структура системных файлов, необходимых для работы СТРУКТУРА КАТАЛОГА РЕСУРСОВ --------------------------- Каталог WEB-ресурса это корневой каталог зеркала, где размещена структура файлов ресураса. На одном WEB-сервере может размещаться несколько ресурсов, иеющие различные URI и каталоги. В каталоге WEB-ресурса размещается ряд систеных файлов описанных ниже. Данные файлы описывают весь механизм работы процесса синхронижации, потому следует очень тчательно подходить к вопросу изменения данных файлов. Некоторые файлы не подлежат изменению и редактировать напрямую их не следует. META НЕ РЕДАКТИРУЕМЫЙ YAML файл содержащий информацию о текущем ресурсе (каталоге на WEB сервере) и дате последней синхронизации MANIFEST НЕ РЕДАКТИРУЕМЫЙ файл, создаваемый автоматически при каждом запуске программы и отражающий текущую структуру каталога. По окончании синхронизации этот файл создается а в файле META модифицируется значение поля mtime. Структура файла: DIRNAME/FILENAME MTIME SIZE MTIME_AS_STRING Следует заметить, что имена каталогов и файлов отделяются друг от друга с помощью слеша (/). Все пути относительны каталога самомго ресурса. Данное правило распространяется на все файлы MANIFEST.* и MIRRORS. MANIFEST.SKIP Редактируемый файл, соедержит по умолчанию список текущих системных файлов, а также тех, которые не следует учитывать при создании файла MANIFEST. Все файлы перечисленные в этом списке НЕ БУДУТ синхронизироваться с зеркалами. Список файлов игнорируемых совместно со списком данного файла: META MANIFEST MANIFEST.DEL MANIFEST.SKIP MANIFEST.LOCK README Структура файла: DIRNAME/FILENAME COMMENT MANIFEST.DEL Редактируемый файл, содержит в себе имена файлов, которые следует удалить с ресурса в указанное dtime время. В процессах синхронизации список обрабатывается также как в случае с файлом MANIFEST.SKIP. DTIME - это смещение относительно времени модификации самого файла MANIFEST.DEL. По умолчанию, значение равное "+3d". Файл MANIFEST.DEL не синхронизируется, но удаленные ресурсы его скачивают, и мгновенно удаляют файлы объявленного списка у себя. По окончании процесса удаления старых файлов данный фал MANIFEST.DEL удаляется. Структура файла: DIRNAME/FILENAME DTIME MIRRORS Список URI ресурсов (зеркал). Адрес текущего ресурса должен быть также в данном файле. Файл MIRRORS должен скачиваться ресурсом аналогично всем остальным файлам. Файл является редактируемым. Есть хитрость - при начале процесса синхронизации происходит создание контрольного файла MANIFEST.LOCK. Данный файл содержит в себе "секретный ключ". Первым делом скачивается он, если он есть. И если скачавши его получено содержимое в виде нашего собственного ключа, то синхронизация данного каталога прекращается, т.к. удалось распознать самого себя. Далее, данный распознанный URI вносится в META файл. Таким образом ресурс распознает сам себя. Структура файла: URI COMMENT MANIFEST.LOCK НЕ РЕДАКТИРУЕМЫЙ системный файл. Создается в процессе начала работы программы. Если ДРУГАЯ программа на ДРУГОМ ресурсе встречает данный файл, то она перестает выполнять синхронизацию с данным хостом. Помимо этого файл содержит в себе токен-ключ, который укажет программе создавшей этот файл что происходит обращение к текущему ресурсу, и обработку следует прекратить а текущий адрес нужно внести в META. Использование данного файла предотвращает одновременный запуск копии синхронайзера на одном и том же ресурсе. MANIFEST.TEMP НЕ РЕДАКТИРУЕМЫЙ системный файл. Данный файл содержит в себе временные данные, скаченные с удаленных ресурсов. README Редактируемый файл, содержит краткое описание данного ресурса. Файл опционален и не является обязательным НАЧАЛО РАБОТЫ ------------- После успешной инициализации - переходим к редактированию системных файлов. Если Вы уже создали ранее зеркало, то Вам достаточно будет отредактировать список зеркал, который следует модифицировать, добавив в него адрес нового ресурса. Файл списка зеркал - MIRRORS. Помимио этого, вновь созданный файл MIRRORS следует передать на сервер любого из зеркал, объявленных в исходном файле MIRRORS. Это необходио для того, чтобы другие зеркала смогли пользоваться новым, Вами созданным зерклом. Далее необходио выполнить первую синхронизацию. Для этого следует выполнить команду: # distsync -D /var/www/dist.mysite.com/path sync -d Данная команда выполнит первую синхронизацию. Процесс может быть долгим, т.к. роизойдет скачивание всех файлов зеркал. Ключ -d позволит контролировать процесс на экране Вашей консоли. Существует ряд ключевых опций команды: -D DATADIR Данная опция (ключ) определяет локальную папку текущего ресурса, в которую будут помещаться все файлы. Для уточнения синтаксиса всегда можно воспользоваться командой: # distsync -h ПРОМЫШЛЕННОЕ ИСПОЛЬЗОВАНИЕ -------------------------- После того, как удаленные ресурсы смогут обратиться к вновь созданному зеркалу, можно смело приступать к включению ресурса в работу, для выполнения в автоматическом режиме. Для этого существует несколько способов и один из активно применяемый - cron. Вот таким образом может выглядеть задача по выполнению автоматической синхронизации: 37 * * * * /usr/bin/distsync -D /var/www/dist >/dev/null 2>>/var/log/distsync.log Задача говорит, что необходимо выполнять синхронизацию строго в 37 минут каждого часа Всю информацию об ошибках, можно смотреть в файле /var/log/distsync.log Для добавления новых файлов в синхронизируемое зеркало, достаточно просто скопировать его в каталог назначения. Также можно по необходимости создавать подкаталоги. Для удаления файлов следует редактировать файл MANIFEST.DEL, далее система сделает все сама. По желанию после добавления строк в MANIFEST.DEL можно удалить файл с диска физически. Для изменения файла (обновления), также, достаточно скопировать его в требуемый каталог/подкаталог, заменив тем самым прежний файл. Следует заметить, что НЕЛЬЗЯ переименовывать и перемещать файлы и папки, т.к. при следуюшей синхронизации будет автоматически созданы отсутствующие файлы и на других зерклах будут создны новые созданные файлы и папки. __END__