Инструкции по организации мирроринга библиотеки Инструкция лежит здесь: http://lib.ru/DOWNLOAD/mirroring.txt ║ mirroring.txt Условия организации зеркала Условий пока никаких не выдвигается, кроме вполне естественных: 1. Прислать мне url зеркала 2. Сообщить email-адрес ответственного за зеркало 3. Ставить ВСЕ апдейты библиотеки по мере поступления и без задержки. 4. Не исключена вероятность изменений в библиотеке, которые потребуется проводить быстро и на всех зеркалах. Посему - гарантируйте, что "срочные апдейты" будут ставиться незамедлительно, As Soon As Possible. Масштаб предприятия По состоянию на 23 января 2004 библиотека состоит из 40 тысяч файлов, размер - 4.6 Gb, темп прироста - 50-100Mb в месяц. Посещаемость базового зеркалa (lib.ru) - до 40 Gb трафика, 500,000 запросов, 35-40 тысяч человек в сутки, Посещаемость всех остальных зеркал оценить можно как 30 - 500 человек в день каждое. Подробности Все файлы библиотеки лежат на anonymous ftp в в заархивированном виде. Все лежит в формате cpio.gz одним файлом liYYMMDD.cpz ( ок. 2Гб ) (где YY - год, MM - месяц, DD - день создания архива) а так же этот же архив порезанный на кусочки liYYMMDD.r01, liYYMMDD.r02 и т.д. Чтобы раскрутить все это безобразие - иметь Unix-машину в любым httpd сервером и программами perl, gzip, glimpse, лежащими в каталоге /usr/bin или /usr/local/bin Патч для кирилизации glimpse лежит в http://lib.ru/WEBMASTER/locale.c ║ ../WEBMASTER/locale.c (иметь отпатченный под KOI8 glimpse необязательно - просто без него не будет работать search. ) Инсталляция библиотеки 1. Создать usera moshkow UID=555 HOME=/home/moshkow 2. Вскрыть в его HOME архив cd ~moshkow cat li20040123.cgz | gunzip | cpio -idmv cat li??????.r?? li??????.r??? | gunzip | cpio -idmv все содержимое библиотеки должно упасть в каталог ~moshkow/public_html/ все тексты лежат в ~moshkow/public_html/book/ суммарный "тоннаж" (на январь 2004-го) примерно 4700 Mb 3. Встать в каталог, где у сервера лежат cgi-bin скрипты, и закинуть в него CGI скрипт html-KOI Скрипты могут называться так: koi, win, lat, alt, iso, mac Либо html-KOI, html-windows, html-volapuk, html-alt, html-mac, html-iso_8859_5 Либо koi.cgi, win.cgi, lat.cgi, alt.cgi, iso.cgi, mac.cgi по вкусу. cd /usr/local/etc/httpd/cgi-bin # или где там еще ? cd /home/httpd/cgi-bin # или где там еще ? ln -s /home/moshkow/public_html/bin/html-KOI.pl koi ln -s koi win ln -s koi lat ln -s koi alt ln -s koi iso ln -s koi mac Примечание: чтоб в cgi-bin директорию можно было класть симлинки, в acces.conf httpd сервера на cgi-директории должна быть прописана опция FollowSymLinks примерно так: <Directory /home/httpd/cgi-bin> Options FollowSymLinks </Directory> 4. Остается юзать: http://your.host.name/cgi-bin/koi/ .... либо http://your.host.name/cgi-bin/html-KOI/ .... А если вставить в conf/srm.conf примерно такие строки: ScriptAlias /library/koi /home/moshkow/public_html/bin/koi ScriptAlias /library/win /home/moshkow/public_html/bin/win ScriptAlias /library/lat /home/moshkow/public_html/bin/lat ScriptAlias /library/alt /home/moshkow/public_html/bin/alt ScriptAlias /library/iso /home/moshkow/public_html/bin/iso ScriptAlias /library/mac /home/moshkow/public_html/bin/mac то к библиотеке можно будет обращаться так: http://your.host.name/library/koi/ 5. Пункт 1 выполнять необязательно, но в этом случае необходимо в начале файла html-KOI отредактировать константы задающие фактическое расположение файлов библиотеки. 6. Убедитесь, что у вас есть /usr/bin/perl 7. Все файлы библиотеки - в кодировке koi8, поэтому использование их без cgi-скрипта html-KOI на виндовс-машинах может быть не очень удобно О внутреннем формате библиотеки Формат хранения библиотеки описан тут: http://lib.ru/WEBMASTER/libformat.txt ║ ../WEBMASTER/libformat.txt Glimpse - индексатор, необходимый для поиска Для работы поиска по оглавлению библиотеки, на сервер нужно установить _патченный_ индексатор glimpse. Скомпилируйте самостоятельно, и положите либо в /usr/local/bin/glimpse либо в ~moshkow/public_html/bin/glimpse Для FreeBSD,Linux,Solaris binaries версии glimpse могу прислать по запросу. Патч для glimpse лежит здесь http://lib.ru/WEBMASTER/locale.c ║../WEBMASTER/locale.c http://kulichki.com/moshkow/WEBMASTER/locale.c Исходники glimpse - здесь: ftp://ftp.cs.arizona.edu/glimpse/glimpse-4.1.src.tar.gz ║ ftp://ftp.cs.arizona.edu/glimpse/glimpse-4.1.src.tar.gz http://kulichki.com/moshkow/SOFTWARE/glimpse-4.1.src.tar.gz Об экономии дисков: сжатие файлов библиотеки При желании сэкономить дисковое пространство вебсервера можно за-gzip-ить некоторые TXT-файлы библиотеки. Библиотечный скрипт умеет определять такие случаи и автоматически guzip-ить сжатые файлы. На зеркале с большой посещаемостью я бы этого делать все же не рекомендовал - CPU жрется... И еще в сжатых файлах не работает поиск и What-s-new... Ниже пример команды, сжимающей все текстовые файлы размером больше 100Kb и изменившиеся более двух месяцев назад. su - moshkow cd ~moshkow find public_html/book -type f -size +200 \ -mtime +60 -name "*.txt" -exec gzip {} \; -print Library installation(english version) Feel free to point to my mistakes in this paragraph. Sorry for my bad english. 1. Create user moshkow UID=555 HOME=/home/moshkow 2. Extract archieve in moshkow's HOME directory cd ~moshkow cat li??????.r?? li??????.r??? | gunzip | cpio -idmv all content of library goes to ~moshkow/public_html/ all e-texts goes to ~moshkow/public_html/book/ full size of library at (Feb 1998) ~ 500 Mb 3. Link cgi-script html-KOI to your sgi-directory You can name scripts as koi, win, lat, alt, iso, mac Or koi.cgi, win.cgi, lat.cgi, alt.cgi, iso.cgi, mac.cgi on your taste cd /usr/local/etc/httpd/cgi-bin # (or where it is?) cd /home/httpd/cgi-bin # (or where it is?) ln -s /home/moshkow/public_html/bin/html-KOI koi ln -s koi win ln -s koi lat ln -s koi alt ln -s koi iso ln -s koi mac Note: Your cgi-directory should have permition for using symlink in it so add into acces.conf Option FollowSymLinks for cgi-directory some like: <Directory /home/httpd/cgi-bin> Options FollowSymLinks </Directory> 4. And now - you can use it: http://your.host.name/cgi-bin/koi/ .... Also you can insert into conf/srm.conf somethiing like: ScriptAlias /library/koi /home/moshkow/public_html/bin/koi ScriptAlias /library/win /home/moshkow/public_html/bin/win ScriptAlias /library/lat /home/moshkow/public_html/bin/lat ScriptAlias /library/alt /home/moshkow/public_html/bin/alt ScriptAlias /library/iso /home/moshkow/public_html/bin/iso ScriptAlias /library/mac /home/moshkow/public_html/bin/mac And now - you can use it with url: http://your.host.name/library/koi/ 6. You should have perl (or symlink to real location of perl) at /usr/bin/perl Борьба с русским Апачем Всю русификацию библиотечный скрипт делает сам. В русском Апаче нужно отключить все перекодирующие функции касающиеся библиотеки. Возможно поможет в httpd.conf: <Directory /home/moshkow/public_html> CharsetTurnOff on CharsetMatchLanguage on </Directory> Или в httpd.conf <IfModule mod_charset.c> ... # CharsetDisable directive turns off all charset processing. <Directory /home/moshkow/public_html/bin> CharsetDisable on </Directory> ... </IfModule> Или создать в /home/moshkow/public_html файл .htaccess и в него вписать строчки (какие? см. русапач-doc) Update Базовая версия архива сделана в январе 2004. Изменения и дополнения в библиотеку выкладываются раз в неделю по понедельникам. Updates лежат на anonymous ftp в /pub/moshkow/.library/ в заархивированном виде в формате cpio.gzip apYYYYMMDD.cpz (где YYYY - год, MM - месяц, DD - день создания update) или, порезаный на кусочки по 1Mb apYYYYMMDD.r?? Установка update'ов Отныне генерация фтп-апдейтов переведена на автомат, архивы готовятся еженедельно по понедельникам в 5 утра. Размещаются со стандартными названиями файлов. apYYYYMMDD.cpz где YYYYMMDD - дата создания апдейта а так же с фиксированным именем apLAST.cpz Повторять эту операцию раз в неделю по понедельникам: 1. Сftpить очередной apTODAY.cpz или apYYMMDD.cpz 2. Вскрыть архив в домашнем каталоге юзера moshkow su moshkow cd ~moshkow cat apTODAY.cpz | gunzip | cpio -idmv все эти действия можно выполнить командой /home/moshkow/public_html/bin/libraryadmin -getlast # естественно, разумнее всего фрагмент программы, отвечающий # за апдейты вытащить в отдельный командный файл и зарядить его # в crontab на утро понедельника. Библиотека и Windows-NT Вся поддержка библиотеки основана на перловом cgi-крипте, так что принципиальных препятствий развернуть зеркало не на Unix а на NT вроде бы нет. За прошедшее время 4 администратора предполагали это сделать, но сообщений об успехах я от них не получил. Одно зеркало: http://www.belpsb.minsk.by/moshkow/ ║ http://www.belpsb.minsk.by/moshkow/ работает под NT, запустил его вебмастер webmaster@belpsb.minsk.by Ежедневный апдейт по email Я рассылаю ежедневные апдейты по почте на выделенные адреса по договоренности с администраторами. Формат: uudecode - gzip - cpio Размер - 1-7Мб в письме. Поэтому сендмейл должен принимать письма не менее чем в 8Мб за раз. В стандартном sendmail.cf обычно стоит max 1Mb На приеме надо пропускать приходящее письмо сквозь скрипт, который запускается под UID moshkow . (И ни в коем случае - не под root !!!) Сам скрипт можно прицепить на выделенный адрес либо через .procmailrc или .forward или на /etc/aliases Иногда в sendmail.cf бывает запрещено исполнение скриптов в форварде и алиасах. Убедитесь, что с этимне будет проблем. Адрес сообщить мне, я включу его в рассылку. Пример возможного /usr/locale/sbin/script: #!/bin/sh TMP=/tmp/$$ mkdir $TMP cd $TMP || exit 1 sed -e '/^begin [0-9]/ s%/%_%g' |\ uudecode cd ~moshkow if zcat $TMP/* > /dev/null ; then if zcat $TMP/* | cpio -it > /dev/null ; then zcat $TMP/* | cpio -idmv "public_html/*" rm -rf $TMP else echo bad archieve fi else echo bad gzip archieve fi | mail -s "mirror.firm.ru report" mirroradmin moshkow@ipsun.ras.ru