IDempiere Wiki Server

From iDempiere
Jump to: navigation, search

Here are some notes how I set up the iDempiere Wiki server farm.

Sorry - my notes were in german. But since I am the only root administrator there was no need to translate. Use Google translate if you are curious. :-)


Backup des Wikiservers

Ein tägliches Backup des Wikiservers wird auf dem Cloudserver nach /root/backup/postgres/ (bzw. /home/idempiere/databasebackup/) gespeichert. Von dort sollte es in regelmäßigen Abständen weiterkopiert und damit gespeichert werden.

Wer das Wiki komplett speichern will, sollte noch zusätzlich die Upload-Verzeichnisse unter /home/idempiere/wiki/w*/images/ sichern.


Einrichten neuer Sprachen

Apache-Alias einrichten

Als erstes muss dem Apache Webserver mitgeteilt werden, das er eine entsprechende URL auf das neu anzulegende Wiki weiterleitet. Dazu geht man als root-Benutzer in die Datei /etc/apache2/sites-available/wiki_idempiere_org und erzeugt dort im oberen Teil eine neue Alias-Zeile entsprechend den bereits vorhandenen:

 ...
 Alias /de /home/idempiere/wiki/w-de/index.php

Mit

 /etc/init.d/apache2 restart

startet man dann den Webserver neu, damit er die geänderte Datei auch benutzt.

Wiki-Installation (in PHP) kopieren

Als Benutzer "idempiere" macht man nun folgendes:

 cd wiki
 mkdir w-de  (z.B. für deutsch)
 cd w-de
 ls ../../mediawiki | perl -pe 's/^(.*)$/ln -s ..\/..\/mediawiki\/$1 \./' | bash
 rm images
 mkdir images
 chmod a+rw images

Dadurch hat man eine Symlink-Kopie des eigentlichen Installations-Verzeichnisses, so das alle Wikis immer garantiert auf demselben Quellcode aufsetzen. Die individuelle Konfiguration des Wikis steht in der "LocalSettings.php" (die erst im nächsten Schritt über die Web-Installation erzeugt wird) und das Upload-Verzeichnis (das ich unter den Wikis getrennt halte) ist auch individuell (und vom Apache-Benutzer "www-data" beschreibbar).

Wiki-Datenbank einrichten

Um das Wiki einzurichten, startet man es nun mit der URL wiki.idempiere.org/w-de/ Man erhält eine Startseite mit Blümchen, die einen auffordert, die Installation zu starten. Im folgenden INstallationsassistenten gibt man nun sinnvolle Werte ein:

  • Die "Sprache" ist die Installationssprache und sollte sinnvollerweise deutsch (oder englisch) sein.
  • Die "Wiki-Sprache" ist die Zielsprache unseres Wikis (also z.B. klingonisch für das "kl"-Wiki)
  • Der Datenbank-Typ ist PostgreSQL
  • Die Datenbank ist "idempiere"
  • Der Datenbank-Benutzer ist "idempiere"
  • Das Datenbank-Passwort ist geheim ;-)
  • Das Schema ist "de" für das deutsche Wiki und "kl" für das klingonische etc.
  • Der Name des Wikis ist "iDempiere de"
  • Das Administratorkonto ist vollkommen egal, da wir später sowieso die Benutzertabellen wieder löschen (Das Passwort darf aber nicht gleicht dem Benutzernamen sein)
  • Profil der Benutzerberechtigungen sollte "Erstellung eines Benutzerkontos nötig" sein.
  • Lizenz ist "Creative Commons mit Namensnennung, Weitergabe unter glecihen Bedingungen"
  • Bei EMails alles erlauben und die Mailadresse des Administrators angeben
  • keine Erweiterungen anklicken (geschieht später von Hand)
  • Das Hochladen von Dateien ermöglichen

Nachdem man die Installation so abgeschlossen hat, erhält man eine LocalSettings.php-Datei. Diese Datei muss in das Verzeichnis "~/wiki/w-de/" auf dem Server kopiert werden. Dort müssen jedoch noch einige Änderungen hinzugefügt werden.

 scp Downloads/LocalSettings.php idempiere@wiki.idempiere.org:wiki/w-de/

Anpassungen in LocalSettings.php

Folgende Änderungen habe ich dann an dieser Datei vorgenommen und ganz am Ende der Datei angefügt:

 $wgGroupPermissions['*']['edit'] = false;
 require_once( "$IP/extensions/googleAnalytics/googleAnalytics.php" );
 $wgArticlePath = "/de/$1";
 $wgSharedDB = "shared";   
 $wgSharedTables[] = array( 'user', 'user_properties', 'interwiki' );
 $wgShowExceptionDetails = true;
 $wgLogo = "$wgServer/iDempiereLogo150x150.png";
 $wgFavicon = "$wgServer/favicon.ico";
 $wgEnableScaryTranscluding = true;

(in der dritten Zeile den Ländercode anpassen)

Hierdurch wird unter anderem aktiviert, das einige Datenbank-Tabellen "geshared" werden. Damit das auch funktioniert, müssen alle Datenbank-Contraints, die sich auf die ursprünglichen (ungeshareten) Tabellen beziehen, löschen. Die einfachste Lösung, das zu bewerkstelligen, ist, indem man die entsprechenden Tabellen löscht und dabei "kaskadierendes Löschen" wählt. Das macht man im neuen Schema "de" mit den Tabellen "mwuser" und "user_properties".


Interwikimap aktualisieren

Man muss einen Interwikilink einrichten, um von einer Sprache in die andere verlinken zu können (http://www.mediawiki.org/wiki/Manual:Guide_to_setting_up_interwiki_linking#Language_links). Leider habe ich es bisher nicht geschafft, die Interwiki-Tabelle zu teilen, weshalb alle Interwiki-Links überall eingetragen werden müssen.

  insert into fr.interwiki (iw_prefix, iw_url, iw_local, iw_trans, iw_api, iw_wikiid) VALUES('adempiere', 'http://wiki.adempiere.com/$1',1,1,'','');
  insert into fr.interwiki (iw_prefix, iw_url, iw_local, iw_trans, iw_api, iw_wikiid) VALUES('idempiere', 'http://wiki.idempiere.org/wiki/$1',1,1,'','');
  insert into fr.interwiki (iw_prefix, iw_url, iw_local, iw_trans, iw_api, iw_wikiid) VALUES('lugkr',     'http://www.lug-kr.de/wiki/$1',1,1,'','');
  insert into fr.interwiki (iw_prefix, iw_url, iw_local, iw_trans, iw_api, iw_wikiid) VALUES('de', 'http://wiki.idempiere.org/de/$1',1,1,'','');
  insert into fr.interwiki (iw_prefix, iw_url, iw_local, iw_trans, iw_api, iw_wikiid) VALUES('en', 'http://wiki.idempiere.org/en/$1',1,1,'','');
  ...
  insert into de.interwiki (iw_prefix, iw_url, iw_local, iw_trans, iw_api, iw_wikiid) VALUES('fr', 'http://wiki.idempiere.org/fr/$1',1,1,'','');
  insert into en.interwiki (iw_prefix, iw_url, iw_local, iw_trans, iw_api, iw_wikiid) VALUES('fr', 'http://wiki.idempiere.org/fr/$1',1,1,'','');
  ...


Administratoren setzen

Die Tabelle der Administratoren wird für jedes Wiki getrennt verwaltet. So kann man spezielle Administratoren für einzelne Sprachen einrichten. Die Admins setzt man dann mit einem Befehl wie diesem (hier werden die drei Personen als Admin gesetzt, die bisher das Wiki verwalten):

INSERT INTO de.user_groups (ug_user, ug_group) VALUES
  (2, 'sysop'),(2, 'bureaucrat'),
  (4, 'sysop'),(4, 'bureaucrat'),
  (25, 'sysop'),(25, 'bureaucrat');


Wiki maintenance

Wie Thomas Thiessen bemerkte, erscheinen auf der Seite http://wiki.idempiere.org/w-de/index.php?title=Kategorie:Seiten_mit_defekten_Dateilinks viel zu viele Einträge mit schlecht verlinkten Seiten. Offensichtlich können einige Indexe der Mediawiki-Datenbank schonmal aus der Reihe fallen. Um das zu beheben, kann man ab und an folgenden Befehl auf dem Server aufrufen:

 idempiere@cloud1:~/wiki/w-de$ php maintenance/rebuildall.php --conf LocalSettings.php

(ähnliches gilt natürlich für andere Sprachen)