Update Mediawiki ToDo

Aus Laub-Home Wiki

Hier eine kurze Auflistung was beim Update alles gemacht werden muss:

Backup der wikidb

mysqldump --databases wikidb -u root -p > /root/wikidb.dump

Kurzes Update

hier wird das Update einfach über die bestehende Installation gebügelt.

cd /usr/src/
wget http://download.wikimedia.org/mediawiki/1.22/mediawiki-1.22.1.tar.gz
tar -xzvf mediawiki-1.22.1.tar.gz -C /srv/httpd/vhosts/www.laub-home.de/htdocs --strip-components=1
cd /srv/httpd/vhosts/www.laub-home.de/htdocs/
chown -R root.root *
chown -R www-data.www-data images
chmod -R 755 images
cd maintenance
php update.php

DONE!

Entpacken des neuen Wiki

cd /usr/src/
wget http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.0.tar.gz
mkdir /srv/httpd/vhosts/www.laub-home.de/htdocs1
tar -xzvf mediawiki-1.19.0.tar.gz -C /srv/httpd/vhosts/www.laub-home.de/htdocs1 --strip-components=1
cd /srv/httpd/vhosts/www.laub-home.de/
cp -p htdocs/LocalSettings.php htdocs1/
cp -rp htdocs/images htdocs1/
chown -R root.root htdocs1
chown -R www-data.www-data htdocs1/images
chmod -R 755 htdocs1/images

Extensions aktualisieren

Hier die aktuellen Snapshots für die verwendete Mediawiki Version im Verzeichnis htdocs1/extensions abspeichern und entpacken.

cd htdocs1/extensions/
wget http://www.wikicode.org/Google1.zip
unzip Google1.zip
rm Google1.zip
cp -rp ../../htdocs/extensions/GoogleAdSense .
cp -rp ../../htdocs/extensions/googleAnalytics/ .
cp -rp ../../htdocs/extensions/Lockdown/ .
cp -rp ../../htdocs/extensions/PdfExport/ .
cp -rp ../../htdocs/extensions/CategoryTagCloud .
cp -rp ../../htdocs/extensions/ContributionCredits .
cp -rp ../../htdocs/extensions/Google1 .
cp -rp ../../htdocs/extensions/LinkAttributes .
cp -rp ../../htdocs/extensions/MobileFrontend .
cp -rp ../../htdocs/extensions/OpenSearchXml .
cp -rp ../../htdocs/extensions/SelectCategory .
cp -rp ../../htdocs/extensions/Update .
cp -rp ../../htdocs/extensions/WikiCategoryTagCloud .
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SimpleSecurity/

Adsense Menü aufklappen

htdocs1/skins/Vector/collapsibleNav.js --- near Line 200

// In the case that we are not showing the new version, let's show the languages by default
                        if (
                                state == 'true' || id == "p-googleadsense" ||
                                ( state == null && i < 1 ) ||
                                ( state == null && version == 1 && id == 'p-lang' )
                        ) {

Update PHP Skript

cd /srv/httpd/vhosts/www.laub-home.de/htdocs1/maintenance/
php update.php

Anpassen der Sidebar

!!!Nicht mehr nötig
http://wiki.laub-home.de/index.php/MediaWiki:Sidebar

* navigation
** mainpage|mainpage
** LookOut - Webcam Overview Tool|Lookout Project
** http://lookout.laub-home.de|//Lookout
* HowTo's
** Linux|Linux HowTo's
** Windows|Windows HowTo's
** MacOS|MacOS HowTo's
** VMware|VMware HowTo's
** MediaWiki|MediaWiki HowTo's
** Sonstiges|Sonstige HowTo's
* SEARCH
* Quicklinks
** http://wiki.laub-home.de/index.php/Spezial:Suche?search=WorkInProgress&go=Seite|Unfertige HowTo's
** recentchanges-url|recentchanges
** randompage-url|randompage
** Spezial:Pdfprint|PDF-Druck
** Spezial:Dateien|Dateien
** Spezial:Alle_Seiten|Alle Seiten

Anpassen des WikiEditor

http://wiki.laub-home.de/index.php/MediaWiki:Common.js
/* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */ var button = { "imageFile": "/images/buttons/Button_pre.png", "speedTip": "<pre>", "tagOpen": "<pre>", "tagClose": "</pre>", "sampleText": "pre text" }; mwCustomEditButtons.push(button); var button1 = { "imageFile": "/images/buttons/Button_Br.png", "speedTip": "<br>", "tagOpen": "<br>", "tagClose": "", "sampleText": "" }; mwCustomEditButtons.push(button1); var button2 = { "imageFile": "/images/buttons/Button_code.png", "speedTip": "<code>", "tagOpen": "<code>", "tagClose": "</code>", "sampleText": "code text" }; mwCustomEditButtons.push(button2); var buttonsource = { "imageFile": "/images/buttons/Button_Source.png", "speedTip": "<syntaxhighlight>", "tagOpen": "<syntaxhighlight lang=bash>", "tagClose": "</syntaxhighlight>", "sampleText": "source text" }; mwCustomEditButtons.push(buttonsource); var button4 = { "imageFile": "/images/buttons/Button_headline2.png", "speedTip": "==", "tagOpen": "==", "tagClose": "==", "sampleText": "Ü2 text" }; mwCustomEditButtons.push(button4); var button5 = { "imageFile": "/images/buttons/Button_headline3.png", "speedTip": "===", "tagOpen": "===", "tagClose": "===", "sampleText": "Ü3 text" }; mwCustomEditButtons.push(button5); var button6 = { "imageFile": "/images/buttons/Button_strike.png", "speedTip": "<strike>", "tagOpen": "<strike>", "tagClose": "</strike>", "sampleText": "strike text" }; mwCustomEditButtons.push(button6); // WikiEditor Buttons var customizeToolbar = function() { // FIRST $('#wpTextbox1').wikiEditor('addToToolbar', { section: 'advanced', group: 'format', tools: { "brtext": { label: '<br>', type: 'button', icon: '/images/buttons/Button_Br.png', action: { type: 'replace', options: { pre: "<br>", } } } } }); $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'main', 'group': 'insert', 'tools': { 'pretext': { label: '<pre>', type: 'button', icon: '/images/buttons/Button_pre.png', action: { type: 'encapsulate', options: { pre: "<pre>", periMsg: "insert pre text here", post: "</pre>" } } } } }); $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'main', 'group': 'insert', 'tools': { 'sourcetext': { label: '<syntaxhighlight>', type: 'button', icon: '/images/buttons/Button_Source.png', action: { type: 'encapsulate', options: { pre: "<syntaxhighlight lang=bash>", periMsg: "insert source text here", post: "</syntaxhighlight>" } } } } }); $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'advanced', 'group': 'format', 'tools': { 'codetext': { label: '<code>', type: 'button', icon: '/images/buttons/Button_code.png', action: { type: 'encapsulate', options: { pre: "<code>", periMsg: "insert code text here", post: "</code>" } } } } }); $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'advanced', 'group': 'format', 'tools': { 'hline': { label: 'Horizontal line', type: 'button', icon: '/images/buttons/Button_hr.png', action: { type: 'encapsulate', options: { pre: "----", ownline: true } } } } }); $('#wpTextbox1').wikiEditor('addToToolbar', { section: 'advanced', group: 'format', tools: { "strikethrough": { label: 'Strike', type: 'button', icon: '/images/buttons/Button_strike.png', action: { type: 'encapsulate', options: { pre: "<s>", post: "</s>" } } } } }); // LAST }; /* Check if we are in edit mode and the required modules are available and then customize the toolbar */ if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) { mw.loader.using( 'user.options', function () { if ( mw.user.options.get('usebetatoolbar') ) { mw.loader.using( 'ext.wikiEditor.toolbar', function () { $(document).ready( customizeToolbar ); } ); } } ); }

Maintenance Skript Memory anpassen

maintenance/Maintenance.php

'memory-limit', 'max'

nach

'memory-limit', 'default'
        public function memoryLimit() {
                $limit = $this->getOption( 'memory-limit', 'default' );
                $limit = trim( $limit, "\" '" ); // trim quotes in case someone misunderstood
                return $limit;
        }

Tests

  • Login
  • Bearbeiten
  • Test auf SimpleSecurity
  • Test auf Lockdown
  • Editor Test
  • PDFDrucken testen
  • Durch ein paar Seiten klicken
  • Schauen ob die Rahmen beim Geshi drumherum sind

Probleme

Debugging

Nach dem Update kommt es in zusammen Spiel mit der PHP open_base_dir Restriktion zu folgender Fehlermeldung:

Error creating thumbnail: Unable to save thumbnail to destination
Fehler beim Erstellen des Vorschaubildes: Die Miniaturansicht konnte nicht am vorgesehenen Ort gespeichert werden

Seit neueren Mediawiki Versionen (1.20.3 auf jeden Fall schon) Kann dieser Fehler damit behoben werden die Variable $wgTmpDirectory in der LocalSettings.php zu setzten. Ich habe das Ganze in den image Folder gelegt und hier ein tmp Folder angelegt:

mkdir /srv/httpd/vhosts/wiki.laub-home.de/htdocs/images/tmp/
chown www-data.www-data /srv/httpd/vhosts/wiki.laub-home.de/htdocs/images/tmp/

LocalSettings.php

# Temp Dir für Bildvorschau setzten
$wgTmpDirectory = "/srv/httpd/vhosts/wiki.laub-home.de/htdocs/images/tmp/";

!!!Achtung, die Lösung ist veraltet. Es handet sich hier um folgenden Bug: https://bugzilla.wikimedia.org/show_bug.cgi?id=36475 Und wird folgendermaßen gefixt:
includes/GlobalFunctions.php

--- includes/GlobalFunctions.php.orig	2012-05-03 12:11:55.045022532 +0200
+++ includes/GlobalFunctions.php	2012-05-03 12:17:02.499062078 +0200
@@ -2491,7 +2491,16 @@
 		}
 	}
+	if (ini_get('upload_tmp_dir')!==false) {
+		$tmp = ini_get('upload_tmp_dir');
+		if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
+			return $tmp;
+		}
 	}
 	if( function_exists( 'sys_get_temp_dir' ) ) {
-		return sys_get_temp_dir();
+		$tmp = sys_get_temp_dir();
+		if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
+			return $tmp;
+		}
+	}
 	# Usual defaults
 	return wfIsWindows() ? 'C:\Windows\Temp' : '/tmp';

Die Funktion sollte dann so aussehen:

function wfTempDir() {
        foreach( array( 'TMPDIR', 'TMP', 'TEMP' ) as $var ) {
                $tmp = getenv( $var );
                if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
                        return $tmp;
                }
        }
        if (ini_get('upload_tmp_dir')!==false) {
                $tmp = ini_get('upload_tmp_dir');
                if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
                        return $tmp;
                }

        }
        if( function_exists( 'sys_get_temp_dir' ) ) {
                $tmp = sys_get_temp_dir();
                if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
                        return $tmp;
                }
        }
        # Usual defaults
        return wfIsWindows() ? 'C:\Windows\Temp' : '/tmp';
}