Инструкции по организации мирроринга библиотеки
Инструкция лежит здесь:
http://lib.ru/DOWNLOAD/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
(иметь отпатченный под 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
Glimpse - индексатор, необходимый для поиска
Для работы поиска по оглавлению библиотеки, на сервер нужно
установить _патченный_ индексатор glimpse. Скомпилируйте самостоятельно,
и положите либо в /usr/local/bin/glimpse либо в
~moshkow/public_html/bin/glimpse
Для FreeBSD,Linux,Solaris binaries версии glimpse могу прислать по запросу.
Патч для glimpse лежит здесь
http://lib.ru/WEBMASTER/locale.c
http://kulichki.com/moshkow/WEBMASTER/locale.c
Исходники glimpse - здесь:
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)
Базовая версия архива сделана в январе 2004. Изменения и
дополнения в библиотеку выкладываются раз в неделю по
понедельникам.
Updates лежат на anonymous ftp в /pub/moshkow/.library/
в заархивированном виде в формате cpio.gzip
apYYYYMMDD.cpz
(где YYYY - год, MM - месяц, DD - день создания update)
или, порезаный на кусочки по 1Mb
apYYYYMMDD.r??
Отныне генерация фтп-апдейтов переведена на автомат, архивы
готовятся еженедельно по понедельникам в 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 на утро понедельника.
Вся поддержка библиотеки основана на перловом cgi-крипте, так что
принципиальных препятствий развернуть зеркало не на Unix а на NT вроде бы
нет. За прошедшее время 4 администратора предполагали это сделать, но
сообщений об успехах я от них не получил.
Одно зеркало: 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
Last-modified: Sun, 10 Apr 2005 07:00:52 GMT