Ряд ресурсов Всемирной паутины (e. g., Википедия; домашние страницы некоторых проектов в сфере разработки свободного программного обеспечения, etc.) представлен в виде т. н. вики — систем, состоящих из трех основных компонент:

  • содержимого, представленного в виде кода на некотором упрощенном языке разметки (Creole, Markdown, Textile, etc.);

  • визуализирующей машины, преобразующий содержимое этих страниц в понятных пользовательскому агенту Всемирной паутины язык разметки (главным образом, XHTML или HTML);

  • редактора, ориентированного на использование через тот же пользовательский агент.

В результате, основным условием изменения страниц становится (помимо, очевидно, желания лиц, обслуживающих ресурс) доступ к Всемирной паутине — что требуется и для чтения этих страниц.

Иногда, бывает удобно получить копию («зеркало») такого ресурса, — e. g., для просмотра в отсутствии доступа к Internet, для проверки правок перед передачей их на основной ресурс, etc. Немногие из вики-машин дают такую возможность; одна из таких — Ikiwiki, на основе которой создан данный ресурс Всемирной паутины.

В данной работе предлагается создать «клон» данного ресурса. Также рассмотрено создание копии хранилища системы управления редакциями (СУР) Git и установка Web-интерфейса для него на основе Gitweb.

Создание копии Git-хранилища

Для создания копии Git-хранилища исходного ресурса можно воспользоваться следующей командой:

$ git clone \
      http://gray.siamics.net/~ivan/archives/git/networks-2011-iki.git/ \
      /var/public/users/ivan/src/networks-2011-git/iki 

При этом, целевая директория (/var//networks-2011-git/iki) не должна существовать, но должна существовать ее родительская директория (/var//networks-2011-git.) При необходимости, создайте последнюю используя команду mkdir.

Для проверки корректности выполнения команды, сделайте текущей директорию копии хранилища командой cd и извлеките из журнала сообщение, описывающее последнюю из редакций (текущей ветви), а также короткие описания последних не более чем восьми редакций, e. g.:

$ git log -n 1 --pretty=fuller 

$ git log -n 8 --pretty=fuller 

Вывод последней из команд внесите в личный журнал.

Создание копии вики-ресурса

При наличии копии соответствующего хранилища СУР, создание копии вики-ресурса сводится к созданию конфигурационного файла, подобного networks-2011.pl (в данном образце потребуется изменить по меньшей мере имя системы-сервера HTTP, с фиктивного www.example.com на фактически используемое), и выполнению команды, подобной:

$ ikiwiki --refresh --setup ~/.ikiwiki/networks-2011.pl \
      && rsync -c -vb -rOtH --suffix=.~"$(date +%s)"~ \
             --backup-dir=.rsync-backup \
             -- tmp/networks-2011-iki/ \
             /var/public/users/"$USER"/networks-2011/ 

(Чтобы упростить задачу, мы отказались от возможности редактирования полученной копии через Web-интерфейс. Возможности вносить изменения через Git-хранилище, однако, полностью сохранены.)

По окончанию работы программы, удостоверьтесь, что в целевой директории Ikiwiki созданы .xhtml-файлы. В каких-либо двух из них найдите элемент с идентификатором (id) pagebody и сохраните несколько следующих за началом этого элемента строк в личном журнале.

Установка интерфейса Gitweb

Установить Gitweb можно скопировав в некоторую, доступную через HTTP, директорию, следующие из поставляемых с ней файлов: git-favicon.png, git-logo.png, gitweb.css. Также, потребуется создать файлы gitweb.cgi и gitweb_config.perl, содержащие код, подобный нижеследующему:

#!/bin/sh
### gitweb.cgi --- Invoke real gitweb.cgi  -*- Sh -*-
exec /usr/lib/cgi-bin/gitweb.cgi
### gitweb.cgi ends here

### gitweb_config.perl --- Gitweb configuration  -*- Perl -*-
$projectroot
    = ("/var/public/users/" . $ENV{"USER"} . "/archives/git");
$git_temp       = "/tmp";
# $home_link    = ("/~" . $ENV{"USER"} . "/");
$home_text      = "indextext.html";
$projects_list  = $projectroot;
$stylesheet     = "gitweb.css";
$logo           = "git-logo.png";
$favicon        = "git-favicon.png";
### gitweb_config.perl ends here

Кроме того, для gitweb.cgi должно быть разрешено исполнение:

$ chmod -v -- +x gitweb.cgi 

Файл же archives/git/networks-2011-iki.git может быть, в данном случае, символьной ссылкой на ../../src/networks-2011-git/iki/.git, создать которую можно командой $ ln -sv --.

Проверьте работу Gitweb, направив пользовательский агент Всемирной паутины по соответствующему URI. Результат отметьте в личном журнале.


Local variables:
coding: utf-8
fill-column: 64
ispell-local-dictionary: "russian"
End: