MediaWiki/Обновление движка вики фермы

Материал из СисадминВики (SysadminWiki.ru)
Перейти к: навигация, поиск

Обновление (upgrade) движка MediaWiki как правило дело не сложное и хорошо описано в официальной документации как на русском языке, так и более подробно на английском. Краткую пошаговую иструкцию смотрите в специальной статье на СисадминВики.


Обновление вики фермы может быть делом более кропотливым, но принцип остаётся таким же как и для обновления одиночной вики. Единственное, что добавляется - это для каждого раздела (каждой вики) необходимо запустить скрипт обновления базы данных.

Если же разница версий велика и нужно автоматизировать некоторые процессы, то понадобиться соответствующий скрипт. Ниже приведён пример такого сприпта. Код upgrade_wiki.sh выполнит следующее:

  1. создаст ссылки на новые каталоги,
  2. запишет результаты обновления в журналы
    1. $log - подробный журнал обновления каждой вики
    2. $log_brief - краткий журнал для отслеживания какие вики и как быстро были уже обновлены


Код скрипта upgrade_wiki.sh
# Upgrade wiki to 1.19.2
# Check out for the new version at http://sysadminwiki.ru/wiki/MediaWiki._Обновление_движка
# 2012.11.28 Pavel Malahov

if [ $# -ne 0 ]
then
	dir=/home/user/public_html/ru
	log=$dir/upgrade.log
	log_brief=$dir/upgrade_brief.log
	date_start=`date "+%Y-%m-%d%   %H:%M:%S"`
	dir_wiki=$dir/w-$1
	dir_mnt=$dir_wiki/maintenance	
	cmd_upd="php5 update.php --conf $dir/w-$1/LocalSettings.php"

	echo "Upgrade: $1 "				>> $log_brief
	echo "   Start: $date_start "			>> $log_brief
	
	echo "-------------------------------------------------" >> $log
	echo "===   Upgrade wiki: $1 " 				>> $log
	echo "===           Date: $date_start " 		>> $log
	echo "===       Wiki dir: $dir_wiki " 			>> $log
	echo "=== Update command: $cmd_upd " 			>> $log
	echo "-------------------------------------------------" >> $log

	echo "--- Enter wiki dir ---" 			>> $log
	cd $dir_wiki

	echo "--- Create links to new directories ---"	>> $log
	ln -s ../../w/resources/			>> $log
	ln -s ../../w/mw-config/			>> $log
	ln -s ../../w/tests				>> $log

	echo "--- Update database ---"			>> $log
	cd $dir_mnt
	$cmd_upd					>> $log

	date_end=`date "+%Y-%m-%d%   %H:%M:%S"`
	echo "-------------------------------------------------" >> $log
	echo "===     Start time: $date_start "			>> $log
	echo "===    Finish time: $date_end "			>> $log
	echo "=== Done with wiki: $1 "				>> $log
	echo "-------------------------------------------------" >> $log

	echo "    Done: $date_end "			>> $log_brief
	echo "" 					>> $log_brief

else
	echo "   Wiki upgrade script."
	echo "   Usage: upgrade_wiki.sh <wiki-name>"
fi


Перед запуском необходимо определить переменную $dir

Параметром скрипту нужно передать суффикс каталога, где лежит сайт. Например, если сайт находится в каталоге /home/user/public_html/ru/w-site1, то скрипт нужно запускать так:

$ upgrade_wiki.sh site1