Википедия:Как сделать копию Википедии

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
↱ ВП:ЛК
ВП:ДАМП
Данное руководство справедливо для компьютера с операционной системой Windows. Руководство для компьютера с операционной системой Linux размещено в другой статье.

Введение[править | править вики-текст]

Данная статья описывает загрузку базы данных (дампа) статей Википедии в уже установленную MediaWiki. То есть предполагается, что вы уже установили программное обеспечение MediaWiki на свой компьютер в соответствии с руководством Установка MediaWiki.

Прежде чем приступить к действиям, следует учесть, что после установки сервера приложений XAMPP (также в качестве сервера приложений можно использовать Denwer 3 или STPServer 1.0) на компьютер, подключённый к общедоступной сети, любой человек сможет получить административный доступ к базе данных через phpmyadmin! Чтобы этого избежать, установите firewall (брандмауэр) и закройте от внешнего доступа порты 80, 443 и 3306 перед началом установки. При использовании Windows XP SP2 можно просто включить встроенный брандмауэр — по умолчанию он запрещает любые соединения на любые порты.

При написании обновлённой инструкции все шаги были проверены на машине с процессором Athlon XP 2600+ и установленной системой Windows Server 2003.

Если в процессе загрузки базы данных статей возникнут какие-то проблемы, обратитесь к разделу «Возможные проблемы и способы их решения» данного руководства.

Настройка базы данных Википедии[править | править вики-текст]

На http://download.wikimedia.org/backup-index.html скачиваем дамп Русской Википедии. Так как в списке будет много различных дампов, то можно с помощью поиска (Ctrl+F) найти русские дампы, которые начинаются на ru. Например, можно с помощью поиска найти дамп ruwiki.

Понадобятся следующие дампы[править | править вики-текст]

  • pages-articles.xml.bz2 — Основной дамп содержимого всех статей, списка статей и их ревизий

SQLскрипты таблиц базы данных[править | править вики-текст]

  • category.sql.gz — список категорий
  • categorylinks.sql.gz — связи страниц с категориями
  • redirect.sql.gz — список страниц редиректов
  • pagelinks.sql.gz — связи вида страница-на-страницу
  • templatelinks.sql.gz — связи с шаблонами
  • image.sql.gz — список изображений
  • imagelinks.sql.gz — связи с изображениями
  • interwiki.sql.gz — для корректного отображения, а точнее для не отображения интервик с Википедии

Замечание: Сохраните все это в одну директорию, например, P:\LocalWiki\RunDump (pages-articles.xml.bz2 разархивировать не нужно, разархивация произойдет автоматически при импорте данных, остальные sql-скрипты нужно разархивировать).

Щелкаем на ruwiki. Открывается список успешных дампов (Dump complete). Выбираем один из дампов, например pages-meta-current.xml.bz2 или pages-articles.xml.bz2.

Обратите внимание на размер файлов!

Например, файл ruwiki-20080614-pages-meta-current.xml.bz2 имеет размер 449 Мб, а при его разархивации создается файл размером 2.9 Гб (Файл ruwiki-20081019-pages-meta-current.xml.bz2 размер 152 КБ при разархивации создается файл размером 808 КБ).

Загружаем выбранный архив.

Далее описывается последовательность действий для каждого из серверов приложений STPServer 1.0 и XAMPP.

Для сервера STPServer[править | править вики-текст]

Распакуйте архив, например, в папку C:\TEMP. Обратите внимание, у вас, наверно, будет другая дата в имени файла.

Перейдите в каталог T:\usr\local\mysql5\bin и выполните команду:

mysqld-max-nt.exe --user=root --database=wikidb < T:\home\virtual\prime\maintenance\wikipedia-interwiki.sql

Это необходимо для корректного отображения ссылок на другие языковые разделы.

Перейдите в каталог T:\home\virtual\prime\maintenance и выполните команду:

T:\usr\local\Php\php.exe importDump.php < C:\TEMP\ruwiki-20060202-pages-meta-current.xml

Это собственно сами страницы. Обратите внимание, у вас, наверно, будет другая дата в имени файла.

После того, как база импортирована, для комфортной работы лучше создать индекс для поиска и список соответствия страниц своим категориям.

Сначала нужно отредактировать один файл, необходимый для запуска скрипта rebuildall.php.

Перейдите в каталог T:\home\virtual\prime, переименуйте файл LocalSettings.sample в LocalSettings.php и в нем замените строки:

$wgDBadminuser = 'wikiadmin';

$wgDBadminpassword = 'adminpass';

на

$wgDBadminuser = 'Ваш логин к БД';

$wgDBadminpassword = 'Ваш пароль к БД';

Теперь перейдите в каталог T:\home\virtual\prime\maintenance и запустите полную переиндексацию:

T:\usr\local\Php\php.exe rebuildall.php

По окончании процесса переиндексации идём на http://prime и наслаждаемся собственной Википедией.

Для сервера XAMPP[править | править вики-текст]

Распакуйте архив, например, в папку C:\Program files\xampp\. Обратите внимание, у вас, наверно, будет другая дата в имени файла.

Перейдите в каталог C:\Program files\xampp\mysql\bin и выполните команду:

mysql --user=root --database=wikidb < "C:\Program files\xampp\htdocs\wikipedia\maintenance\wikipedia-interwiki.sql"

Это необходимо для корректного отображения ссылок на другие языковые разделы.

Перейдите в каталог C:\Program files\xampp\htdocs\wikipedia\maintenance и выполните команду:

"C:\Program files\xampp\php\php.exe" importDump.php < "C:\Program files\xampp\ruwiki-20060202-pages-meta-current.xml"

Это собственно сами страницы. Обратите внимание, у вас, наверно, будет другая дата в имени файла.

После того, как база импортирована, для комфортной работы лучше создать индекс для поиска и список соответствия страниц своим категориям.

Сначала нужно отредактировать один файл, необходимый для запуска скрипта rebuildall.php. Перейдите в каталог C:\Program files\xampp\htdocs\wikipedia\, переименуйте файл LocalSettings.sample в LocalSettings.php и в нем замените строки:

$wgDBadminuser = 'wikiadmin';

$wgDBadminpassword = 'adminpass';

на

$wgDBadminuser = 'root';

$wgDBadminpassword = '';

Теперь перейдем в каталог C:\Program files\xampp\htdocs\wikipedia\maintenance и запускаем полную переиндексацию:

"C:\Program files\xampp\php\php.exe" rebuildall.php

и идем пить кофе … на компьютере с процессором Celeron 2600 выполнение этого шага заняло около двух часов.

По окончании процесса переиндексации идём на свою собственную Википедию (http://localhost/wikipedia/) и наслаждаемся.

Импорт дампов БД википедии для LAMP сервера на Ubuntu/Debian[править | править вики-текст]

Использование MWDumper[править | править вики-текст]

MWDumper — родная утилита проекта mediawiki, написанная на java и предназначенная для того же, для чего и importDump.php — импортирования дампов Википедии. Однако в отличие от последнего, MWDumper работает на порядок быстрее, так как позволяет сконвертировать XML-дамп в SQL-скрипт. Минусы — отсутствие поисковых индексов базы, рубрикации и других спец/мета-данных. Скачать последнюю JAR-сборку MWDumper можно отсюда, либо же воспользоваться исходным кодом и собрать вручную. Для работы утилиты необходим установленный JRE, рекомендуется версия 1.6 и выше.

Конвертирование базы осуществляется достаточно просто:

java -jar mwdumper.jar --format=sql:1.5 dump.xml > dump.sql

где --format=sql:1.5 — формат SQL-схем MediaWiki версии 1.5 и выше (для версий 1.4 и ниже используйте --format=sql:1.4), а dump.xml — исходный распакованный XML-дамп Википедии. По окончании процесса вы должны получить готовый SQL-скрипт.

Импортирование скрипта лучше всего осуществлять через CLI-утилиту MySQL — mysql.exe:

mysql.exe --user=root --password=rootpass
use wikidb
source X:\путь\до\dump.sql

где:

  • rootpass — пароль для root-аккаунта MySQL
  • wikidb — ваша база данных для установленной MediaWiki
  • X:\путь\до\dump.sql — полный путь до сконвертированного SQL-файла

Процесс импортирования данных скрипта должен пройти достаточно быстро, даже для дампа с несколькими миллионами страниц. По окончании его вы получите копию содержимого всех страниц дампа. Если для вас этого достаточно — все, на этом процесс создания копии завершен. Ежели вам нужен рабочий полнотекстовый поиск, индексация, статистика, рубрикация и т. д. — необходимо запустить соответствующий скрипт rebuildall.php. Вы найдете его там же, где и importDump.php:

X:\путь\до\PHP.EXE rebuildall.php

Процесс индексации займет очень долгое время (в зависимости от размера базы — от нескольких часов до нескольких дней; индексация current-дампа Википедии от 7 декабря 2009 займет не один день) и требует очень много свободного места на диске с БД MySQL (40Gb для вышеупомянутого дампа).

Решение проблем:

  • При конвертировании XML-дампа в SQL вы получаете скрипт с таблицами без префиксов, поэтому, если вы используете префиксы в БД вашей копии mediawiki — вам придется переустановить оную без использования префиксов для таблиц БД. Или же, как вариант, использовать скрипт для добавления префиксов к названиям таблиц в SQL-дампе
  • Для импортирования дампов такого большого объема не стоит использовать утилиты вроде MySQL Query Browser, используйте только консольную версию и только вручную.

Обновление базы данных[править | править вики-текст]

Скачав новый, более свежий дамп базы проделываем шаги из пункта Настройка базы данных за исключением выполнения скрипта wikipedia-interwiki.sql

Заключение[править | править вики-текст]

Другое программное обеспечение, используемое для установки:

  • WinRAR (платный) или 7-Zip (свободный) для распаковки архива bz2
  • Файловый менеджер (например, стандартный «проводник», Far Manager или Total Commander)

Дополнение: возможные проблемы и способы их решения[править | править вики-текст]

На шаге индексации лично у меня (FDSC) в самом начале происходили ошибки. Далее я привожу руководство, как с ними справиться. Если кто-то знает, как их избежать более корректно — напишите. Я сам не знаком с MySQL и мог что-то неправильно сделать.

Сould not open input file: inportdump.php[править | править вики-текст]

Появилось при выполнении команды

"C:\Program files\xampp\php\php.exe" importDump.php < "C:\Program files\xampp\ruwiki-20060202-pages-meta-current.xml"

Скажите как решить данную проблему

Ответ: Проверьте правильность написания имени файла «importDump.php»

Сообщение Unknown variable 'database=wikidb'[править | править вики-текст]

Может появиться при выполнении команды:

mysql --user=root --database=wikidb < T:\home\virtual\prime\maintenance\wikipedia-interwiki.sql

Этот SQL-запрос можно выполнить с помощью утилиты администрирования phpmyadmin.

Запустите панель и выберите базу данных wikidb. Далее нужно выбрать закладку SQL, нажать на кнопку Обзор и найти файл wikipedia-interwiki.sql

После этого нажмите на нижнюю кнопку Пошел. Появится сообщение, что SQL-запрос был удачно выполнен.

Сообщение MySQL functions missing, have you compiled PHP with the --with-mysql option?[править | править вики-текст]

Может появиться при выполнении команды импорта базы:

T:\usr\local\Php\php.exe importDump.php < C:\TEMP\ruwiki-20060202-pages-meta-current.xml

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

Шаг 1. Запустить следующую команду с указание пути к файлу php.ini (опция -c).

Например:

T:\usr\local\Php\php.exe -c T:\usr\local\Apache\bin\php.ini importDump.php < C:\TEMP\ruwiki-20060202-pages-meta-current.xml

Шаг 2. Проверьте с помощью следующей команды список загружаемых модулей:

T:\usr\local\Php\php -m

В списке должен быть модуль mysql. Если этого модуля в списке нет, то базу импортировать не удастся.

Шаг 3. Проверьте, что в файле php.ini разрешен запуск модуля php_mysql.dll:

extension=php_mysql.dll

Впереди этой строки НЕ ДОЛЖНО быть знака; (точка с запятой).

Шаг 4. Проверьте содержимое папки, в которой хранятся динамически загружаемые расширения PHP (PECL). Размещение этой папки определено в файле php.ini:

extension_dir = "/usr/local/PHP/PECL"

Данная папка должна содержать файл php_mysql.dll

Шаг 5. Скопируйте файлы php_mysql.dll и libmysql.dll в папку C:\WINDOWS\SYSTEM32

Скопируйте файл php.ini в папку C:\WINDOWS.

Попробуйте еще раз выполнить команду импорта базы.

Если после описанных шагов так и не удалось импортировать базу, обратитесь к специалистам.

Отказ в соединении с базой данных[править | править вики-текст]

Если у вас выводится сообщение о отказе в соединении с базой данных.

1. Проверьте, запущен ли у Вас MySQL. Для этого запустите из директории, куда вы установили xampp файл ....\xampp\xampp-control.exe (ярлык должен быть на рабочем столе, если нет - найдите сам файл). Две верхние кнопки должны быть с надписью Stop, напротив слов Apache и MySql должны быть слова Running. Если это не так, запустите приложения кнопками Start.

2. При настройке Wiki в полях Database name, DB username и DB password должны быть установлены такие же значения, как и при создании нового пользователя и базы данных при настройке MySQL. Database name соответствует имени создаваемой в MySQL базе, Имя пользователя — DB user name, Пароль — DB password. Если у Вас не так — самое лёгкое: сотрите базу данных (в администраторе MySQL) и каталог с данными wikipedia (…\xampp\htdocs\wikipedia) и проделайте соответствующие шаги заново.

Если это не помогает (у меня не помогло, в чём дело — не знаю), сделайте следующее (это помогло):

1. Для ВСЕХ пользователей MySQL в phpmyadmin сотрите пароли Это делается так: привилегии -> на экране таблица пользователей. В ней для любого пользователя жмём значок справа (редактировать привилегии). Далее находим заголовок «Изменить пароль». Отмечаем «без пароля» и нажимаем кнопку с надписью «пошёл». Далее повторяем процедуру для всех оставшихся пользователей.

Внимание! Не запускайте сервера Apache и MySQL без паролей при подключении к internet.

2. В файле …\xampp\htdocs\wikipedia\LocalSettings.php найдите строки вида

$wgDBserver         = "localhost";
$wgDBname           = "wikidb";
$wgDBuser           = "wikiuser";
$wgDBpassword       = "password";
$wgDBprefix         = "";

Напишите $wgDBpassword = "", тем самым обнулив пароль. Так как Вы работаете на ПК без подключения к internet, а не сервере, пароль всё равно не нужен.

Превышение max_allowed_packet[править | править вики-текст]

Может выводится сообщение о превышении размера запроса над величиной переменной max_allowed_packet.

1. Остановите сервер MySQL. Аналогично первому пункту, используем С:\Program files\xampp\xampp-control.exe, нажимаем вторую сверху кнопку с надписью «Stop» (напротив слов MySQL: Running). Если кнопка имеет надпись «Start», ничего делать не надо: сервер не запущен.

2. В командной строке переходим в каталог C:\Program files\xampp\mysql\bin.

3. Набираем команду:

mysqld.exe --max_allowed_packet=134217728

Нажимаем Enter, далее, окно консоли можно закрыть. Число справа — максимальный размер пакета. Вы можете ввести и другое число (в примере — 128 Мб). По умолчанию размер пакета 1 Мб.

Неправильная заглавная страница[править | править вики-текст]

В отличие от всех других страниц, Заглавная страница содержит страницу по умолчанию, а не ожидаемую копию из Википедии. Это связано с тем, что страница в архиве старше страницы вновь установленной Википедии. Старую страницу можно найти в истории правок. Заодно можно поупражняться в редактировании и восстановить страницу.

Заглавной страницей может быть назначена любая вновь созданная или уже имеющаяся страница с вашего ВИКИсайта. Достаточно указать ссылку на странице /index.php/MediaWiki:Mainpage

Ошибки при запуске importDump.php[править | править вики-текст]

Следующее предупреждение:

Warning: xml_parse(): Unable to call handler in_() in /var/www/includes/Import.php on line 437 

возникает из-за изменений в xsd схеме формата xml файла. Скачайте последнюю ревизию файла по этой ссылке: http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/Import.php?view=log и замените ей оригинал в папке /includes.

Если же вы получаете ошибку, в теле которой упоминаются zend и Preprocessor_DOM.php — скорее всего у вас активирован zend compatibility mode в настройках PHP (директива zend.ze1_compatibility_mode установлена в on). Отключите ее (обязательно глобально) и перезапустите WEB-сервер.

Примечания[править | править вики-текст]

Можно также использовать программу WikiTaxi http://www.wikitaxi.org/delphi/doku.php/products/wikitaxi/index

См. также[править | править вики-текст]