Справка:Содержание — различия между версиями
Olga2 (обсуждение | вклад) |
|||
(не показана 41 промежуточная версия 3 участников) | |||
Строка 1: | Строка 1: | ||
==Апгрейд движка== | ==Апгрейд движка== | ||
− | + | # Скачиваем новую версию движка. | |
− | + | # Делаем на http-сервере копию папки с сайтом | |
− | + | # Делаем на sql-сервере копию базы данных сайта. Не забываем дать права движку на эту БД. | |
− | + | # Копируем новую версию движка поверх копии сайта | |
− | + | # В LocalSettings.php копии сайта прописываем вместо оригинальной бд её копию. | |
+ | # Запускаем апгрейд базы данных (из папки maintenance выполняем команду php update.php) | ||
+ | # По очереди проверяем расширения и включаем их (работоспособность сайта можно проверить, сделав временно под него виртуальный хост с записью его имени в /etc/hosts на своем терминале). | ||
+ | # Переключаем сайт на новый движок | ||
+ | ==Подробная инструкция по апгрейду== | ||
+ | # Сайт wiki.tlib.ru крутится на Mediawiki. Находится он в директории /var/www/mediawiki. Если забыл/не знал - смотри /etc/httpd.conf (искать нужный виртуальный хост и смотреть значение директивы Directory). Название базы указано в файле /var/www/Mediawiki/LocalSettings.php. | ||
+ | # Новая версия Mediawiki обычно лежит по адресу http://www.mediawiki.org/wiki/Download Распаковка tar.gz-архива: <pre>tar xzf имя-архива.tar.gz</pre> | ||
+ | # Для копирования папки можно применить следующую команду <pre>cp -r имя-папки имя-копии-папки</pre> | ||
+ | # Для копирования базы данных можно применить следующие команды: | ||
+ | > mysqldump -u db_user_name -h db_server_host -P db_server_port --password="db_user_password" db_name >wikitlib.sql | ||
+ | > mysql -u user_name -p | ||
+ | % create database copyofwikitlibdb; | ||
+ | % GRANT ALL PRIVILEGES ON copyofwikitlibdb.* TO db_user_name@'localhost' identified by 'db_user_password'; | ||
+ | % quit | ||
+ | > mysql -u root -p copy_of_db < wikitlib.sql | ||
+ | Есть и другие варианты, Ренат, см. инструкцию в Exchange. | ||
+ | # В LocalSettings.php находим и правим след. строчку: <pre>$wgDBname = "ИМЯ БАЗЫ ДАННЫХ";</pre> подставляем сюда имя копии базы данных. Проверяем, что пользователь $wgDBuser имеет к ней доступ. | ||
+ | # Копируем файлы нового движка поверх копии сайта. Заходим в папку копии сайта / maintenance. Запускаем update.php для апдейта схемы БД. | ||
+ | cp -r mediawiki-1.18 copy_of_wiki_tlib_folder | ||
+ | cd /maintenance | ||
+ | php update.php | ||
+ | # Заходим на сайт. Если сайт упал, то заходим в LocalSettings.php и по очереди отключаем расширения. В конфиге это все строчки вида <pre>require_once("$IP/extensions/Cite/Cite.php");</pre>. Чтобы отключить расширение, нужно закомментировать строчку, например, так:<pre>//require_once("$IP/extensions/Cite/Cite.php");</pre> | ||
+ | Находим комбинацию расширений, при которой сайт не падает. Лучше всего заходить при этом на страницы, где эти расширения применены, или в песочницу. Проверяем загрузку файлов. Проверяем создание нового пользователя. | ||
+ | |||
+ | ===Перечень установленных расширений=== | ||
+ | <table border='1'> | ||
+ | <tr><th>Расширение</th><th>Смысл</th></tr> | ||
+ | <tr><td>ParserFunctions</td><td>Добавляет условные операторы к викитексту</td></tr> | ||
+ | <tr><td>MediaFunctions</td><td>adds several parser functions to MediaWiki which provide access to properties and metadata of various media files in both local and remote repositories</td></tr> | ||
+ | <tr><td>Variable</td><td>allows you to define a variable on a page, use it later in that same page or included templates, change its value, possibly to a value given by an expression in terms of the old value, etc.</td></tr> | ||
+ | <tr><td>swf</td><td>Вставка swf-роликов</td></tr> | ||
+ | <tr><td>PostForm</td><td>Отображение и отправка форм с сайта</td></tr> | ||
+ | <tr><td>Popup</td><td>Вставка картинки - ссылки на попап с увеличенным изображением</td></tr> | ||
+ | <tr><td>GalleryTable</td><td>Публикация картинок в виде галереи</td></tr> | ||
+ | <tr><td>ImageReference</td><td>Картинка-ссылка (устаревший функционал) - нужно включать три файла: extensions/ImageLinkPF.php,ImageReference/ImageReference.php и ImageReference/IRef</td></tr> | ||
+ | <tr><td>Deleteuser</td><td>Спецстраница для удаления участников</td></tr> | ||
+ | <tr><td>Cite</td><td>Добавляет теги <ref[ name=id]> и <references/> для сносок</td></tr> | ||
+ | <tr><td>Lockdown</td><td>Права групп на пространства имен. <br />$wgGroupPermissions['*']['edit'] = true;<br /> | ||
+ | $wgNamespacePermissionLockdown['*']['edit'] = array('user');<br /> | ||
+ | $wgNamespacePermissionLockdown[NS_TALK]['edit'] = array('*');</td></tr> | ||
+ | <tr><td>ConfirmEdit</td><td>Простая реализация CAPTCHA</td></tr> | ||
+ | <tr><td>Google Maps</td><td>Нужно указывать GoogleMapsKey и дефолтные координаты в конфиге</td></tr> | ||
+ | <tr><td>SimpleAntiSpam</td><td>Добавляет на форму простую проверку на спам и ботов</td></tr> | ||
+ | </table> | ||
+ | |||
+ | Из установленных расширений ConfirmEdit и GoogleMaps в версии 1.17 конфликтуют, поэтому функциональность ConfirmEdit урезана. Это значит, что это расширение не вызывается при попытке сохранить исправленную страницу. | ||
+ | Чтобы урезать функционал, нужно найти и исправить в файле /extensions/ConfirmEdit/ConfirmEdit.php следующий кусок кода: | ||
+ | |||
+ | <pre> | ||
+ | $wgCaptchaTriggers = array(); | ||
+ | $wgCaptchaTriggers['edit'] = false; // Would check on every edit | ||
+ | $wgCaptchaTriggers['create'] = false; // Check on page creation. | ||
+ | $wgCaptchaTriggers['sendemail'] = false; // Special:Emailuser | ||
+ | $wgCaptchaTriggers['addurl'] = false; // Check on edits that add URLs | ||
+ | $wgCaptchaTriggers['createaccount'] = true; // Special:Userlogin&type=signup | ||
+ | $wgCaptchaTriggers['badlogin'] = true; // Special:Userlogin after failure | ||
+ | </pre> | ||
+ | |||
+ | Также в настоящий момент не работает расширение одновременной загрузки нескольких файлов - MultipleUpload. | ||
==Изменения, вносимые в движок== | ==Изменения, вносимые в движок== | ||
Строка 20: | Строка 78: | ||
$text = strlen( trim( $oldtext ) ) > 0 ? "{$subject}{$text}\n\n{$oldtext}" : "{$subject}{$text}"; | $text = strlen( trim( $oldtext ) ) > 0 ? "{$subject}{$text}\n\n{$oldtext}" : "{$subject}{$text}"; | ||
} | } | ||
+ | |||
+ | ==Особенности перехода с версии 1.17 на версию 1.18== | ||
+ | # В LocatlSettings.php меняет тип кэширования с CACHE_ACCEL на CACHE_ANYTHING | ||
+ | # Комментируем расширения MediaFunctions.php, DeleteUser.php, SimpleAntiSpam.php, GoogleMaps.php. | ||
+ | # В файле /includes/ProfilerStub.php комментируем функции wfProfileIn и wfProfileOut. | ||
+ | # В файле includes/upload/UploadBase.php комментируем 560-565 строчки (проверку на наличие дупликатов в архиве) | ||
+ | # Если на линукс-машине вдруг не установлен apc, устанавливаем его так: | ||
+ | <pre> | ||
+ | yum groupinstall "Development Tools" | ||
+ | yum install pcre_devel | ||
+ | yum install php-devel | ||
+ | pecl install apc | ||
+ | </pre> | ||
+ | При установке apc (последняя команда) будут запрошены установки. Можно их выбрать по умолчанию (т.е. все время жать Enter) |
Текущая версия на 13:53, 8 июля 2013
Содержание |
[править] Апгрейд движка
- Скачиваем новую версию движка.
- Делаем на http-сервере копию папки с сайтом
- Делаем на sql-сервере копию базы данных сайта. Не забываем дать права движку на эту БД.
- Копируем новую версию движка поверх копии сайта
- В LocalSettings.php копии сайта прописываем вместо оригинальной бд её копию.
- Запускаем апгрейд базы данных (из папки maintenance выполняем команду php update.php)
- По очереди проверяем расширения и включаем их (работоспособность сайта можно проверить, сделав временно под него виртуальный хост с записью его имени в /etc/hosts на своем терминале).
- Переключаем сайт на новый движок
[править] Подробная инструкция по апгрейду
- Сайт wiki.tlib.ru крутится на Mediawiki. Находится он в директории /var/www/mediawiki. Если забыл/не знал - смотри /etc/httpd.conf (искать нужный виртуальный хост и смотреть значение директивы Directory). Название базы указано в файле /var/www/Mediawiki/LocalSettings.php.
- Новая версия Mediawiki обычно лежит по адресу http://www.mediawiki.org/wiki/Download Распаковка tar.gz-архива:
tar xzf имя-архива.tar.gz
- Для копирования папки можно применить следующую команду
cp -r имя-папки имя-копии-папки
- Для копирования базы данных можно применить следующие команды:
> mysqldump -u db_user_name -h db_server_host -P db_server_port --password="db_user_password" db_name >wikitlib.sql > mysql -u user_name -p % create database copyofwikitlibdb; % GRANT ALL PRIVILEGES ON copyofwikitlibdb.* TO db_user_name@'localhost' identified by 'db_user_password'; % quit > mysql -u root -p copy_of_db < wikitlib.sql
Есть и другие варианты, Ренат, см. инструкцию в Exchange.
- В LocalSettings.php находим и правим след. строчку:
$wgDBname = "ИМЯ БАЗЫ ДАННЫХ";
подставляем сюда имя копии базы данных. Проверяем, что пользователь $wgDBuser имеет к ней доступ. - Копируем файлы нового движка поверх копии сайта. Заходим в папку копии сайта / maintenance. Запускаем update.php для апдейта схемы БД.
cp -r mediawiki-1.18 copy_of_wiki_tlib_folder cd /maintenance php update.php
- Заходим на сайт. Если сайт упал, то заходим в LocalSettings.php и по очереди отключаем расширения. В конфиге это все строчки вида
require_once("$IP/extensions/Cite/Cite.php");
. Чтобы отключить расширение, нужно закомментировать строчку, например, так://require_once("$IP/extensions/Cite/Cite.php");
Находим комбинацию расширений, при которой сайт не падает. Лучше всего заходить при этом на страницы, где эти расширения применены, или в песочницу. Проверяем загрузку файлов. Проверяем создание нового пользователя.
[править] Перечень установленных расширений
Расширение | Смысл |
---|---|
ParserFunctions | Добавляет условные операторы к викитексту |
MediaFunctions | adds several parser functions to MediaWiki which provide access to properties and metadata of various media files in both local and remote repositories |
Variable | allows you to define a variable on a page, use it later in that same page or included templates, change its value, possibly to a value given by an expression in terms of the old value, etc. |
swf | Вставка swf-роликов |
PostForm | Отображение и отправка форм с сайта |
Popup | Вставка картинки - ссылки на попап с увеличенным изображением |
GalleryTable | Публикация картинок в виде галереи |
ImageReference | Картинка-ссылка (устаревший функционал) - нужно включать три файла: extensions/ImageLinkPF.php,ImageReference/ImageReference.php и ImageReference/IRef |
Deleteuser | Спецстраница для удаления участников |
Cite | Добавляет теги <ref[ name=id]> и для сносок |
Lockdown | Права групп на пространства имен. $wgGroupPermissions['*']['edit'] = true; $wgNamespacePermissionLockdown['*']['edit'] = array('user'); |
ConfirmEdit | Простая реализация CAPTCHA |
Google Maps | Нужно указывать GoogleMapsKey и дефолтные координаты в конфиге |
SimpleAntiSpam | Добавляет на форму простую проверку на спам и ботов |
Из установленных расширений ConfirmEdit и GoogleMaps в версии 1.17 конфликтуют, поэтому функциональность ConfirmEdit урезана. Это значит, что это расширение не вызывается при попытке сохранить исправленную страницу. Чтобы урезать функционал, нужно найти и исправить в файле /extensions/ConfirmEdit/ConfirmEdit.php следующий кусок кода:
$wgCaptchaTriggers = array(); $wgCaptchaTriggers['edit'] = false; // Would check on every edit $wgCaptchaTriggers['create'] = false; // Check on page creation. $wgCaptchaTriggers['sendemail'] = false; // Special:Emailuser $wgCaptchaTriggers['addurl'] = false; // Check on edits that add URLs $wgCaptchaTriggers['createaccount'] = true; // Special:Userlogin&type=signup $wgCaptchaTriggers['badlogin'] = true; // Special:Userlogin after failure
Также в настоящий момент не работает расширение одновременной загрузки нескольких файлов - MultipleUpload.
[править] Изменения, вносимые в движок
[править] Создание новой секции сверху страницы при нажатии на плюсик
В файле includes/Article.php нужно найти и поправить след. строчку:
if ( $section == 'new' ) { $subject = $summary ? wfMsgForContent( 'newsectionheaderdefaultlevel', $summary ) . "\n\n" : ; /* //закомментировать этот кусок кода $text = strlen( trim( $oldtext ) ) > 0 ? "{$oldtext}\n\n{$subject}{$text}" : "{$subject}{$text}"; */ //вместо него добавить нижнюю строчку $text = strlen( trim( $oldtext ) ) > 0 ? "{$subject}{$text}\n\n{$oldtext}" : "{$subject}{$text}"; }
[править] Особенности перехода с версии 1.17 на версию 1.18
- В LocatlSettings.php меняет тип кэширования с CACHE_ACCEL на CACHE_ANYTHING
- Комментируем расширения MediaFunctions.php, DeleteUser.php, SimpleAntiSpam.php, GoogleMaps.php.
- В файле /includes/ProfilerStub.php комментируем функции wfProfileIn и wfProfileOut.
- В файле includes/upload/UploadBase.php комментируем 560-565 строчки (проверку на наличие дупликатов в архиве)
- Если на линукс-машине вдруг не установлен apc, устанавливаем его так:
yum groupinstall "Development Tools" yum install pcre_devel yum install php-devel pecl install apc
При установке apc (последняя команда) будут запрошены установки. Можно их выбрать по умолчанию (т.е. все время жать Enter)