$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__