Piwik: „LOAD DATA INFILE“ aktivieren

Piwik hat in seinen (optionalen) Systemvoraussetzungen den Punkt „Datenbankfähigkeiten: LOAD DATA INFILE“ stehen, was bei mir partout nicht verfügbar sein wollte.
Nachdem ich mir den Mechanismus etwas genauer angeschaut hatte, war meine grösste Befürchtung, dass ich Probleme bekomme, weil Datenbank-Server und Webserver in diesem Fall getrennte Systeme (jeweils Debian Wheezy) sind. Das konnte aber schnell zerstreut werden, da der Befehl mit dem Zusatz LOCAL (also: LOAD DATA LOCAL INFILE) genau diesen Umstand berücksichtigt und von Piwik automatisch als Fallback verwendet wird, sobald der erste Versuch scheitert.

Dafür müssen nur ein Paar kleine Konfigurationen vorgenommen werden:

Auf dem System des Datenbank-Servers muss in der Konfigurations-Datei /etc/mysql/my.cnf in dem Block [mysqld] local-infile aktiviert sein:

[mysqld]
local-infile=1

Das gleiche gilt für den Client-Server, also unser Webserver, nur diesmal in dem Block [mysql]:

[mysql]
local-infile=1

Ausserdem muss man aufpassen, dass genügend (Lese?-)Rechte auf dem Verzeichnis bzw den Dateien liegen, die ausgelesen werden sollen. Das war bei meinem Setup gar kein Problem, da PHP als FCGI-Modul geladen wird – und zwar mit den Rechten des jeweiligen System-Users für die jeweilige Webpräsenz.

Ein Test im phpMyAdmin hatte auch gar kein Problem, eine Testdatei einzulesen – einzig Piwik hat sich geweigert und behauptet, dass meine MySQL-Version diesen Befehl nicht unterstützt!

Dafür musste ich die Konfigurations-Datei von Piwik piwik/config/config.ini.php bearbeiten und den MySQL-Adapter auf MYSQLI umstellen:

[database]
adapter=MYSQLI

Jetzt zeigt mir Piwik diesen Punkt mit einem grünen Häkchen als „unterstützt“ an :-)
Ob die Einstellung für meinen Server notwendig war, lässt sich bezweifeln, da diese Performance-Optimierung für sehr grosse Datenmengen vorgesehen ist – was bei mir derzeit nicht wirklich der Fall ist…

iRedMail: DKIM-Signatur für weitere Domains

Bei der Installation von iRedMail wird automatisch eine DKIM-Signatur für die Haupt-Domain generiert, fügt man aber neue Domains hinzu, hat man über das Admin-Tool keine Möglichkeit, hier neue DKIM-Signaturen anzugeben oder gar zu generieren.

Hier hilft das offizielle iRedMail-Wiki: www.iredmail.org

Für mein System, eine Standard-iRedMail-Installation mit MySQL unter Debian Wheezy, bedeutete es folgende Vorgehensweise:

Zuerst einen Privaten Key in dem dafür vorgesehenen Ordner generieren (mit den entsprechenden Systemrechten):

cd /var/lib/dkim/
amavisd-new genrsa new_domain.com.pem
chmod 0644 new_domain.com.pem

Zu beachten ist hier nur, dass es in Wheery „amavisd-new“ heisst.

Jetzt in der amavisd-Konfiguration /etc/amavis/conf.d/50-user die Signatur zuweisen:

dkim_key("new_domain.com", "dkim", "/var/lib/dkim/new_domain.com.pem");

Der nächste Punkt laut Wiki besagt, die Domain-Map noch anzupassen, aber die steht bei uns in der MySQL-Datenbank und sollte da schon aktuell sein, sobald man im Admin-Tool die neue Domain angibt.

Zuletzt den amavisd-Service neu starten:

service amavis restart

Um jetzt an den öffentlichen Key zu kommen, bzw. die entsprechende DNS-Konfiguration zu erhalten:

amavisd-new showkeys new_domain.com

Wie man mit der Ausgabe des letzten Kommandos weiter umgeht, sollte dem Leser hier schon bekannt sein – das ist eine Frage der DNS-Konfiguration, die mit dem Artikel hier nichts mehr zu tun hat.

@-Zeichen und Backslash in GitHub’s Editor Atom

Ich habe letztens den (inzwischen) OpenSource-Editor „Atom“ von GitHub für mich entdeckt. Der steckt noch in der Beta-Phase, ist aber modular aufgebaut und es gibt schon zahlreiche Plugins dafür. Im Grossen und Ganzen ist er sehr an den Sublime Text Editor angelehnt und diverse Features, die man von Sublime noch vermissen könnte (wie z.B. die Minimap-Scroll-Leiste oder Highlighting von Wörtern) sind durch Plugins nachrüstbar.

Dass der Editor noch in der Betaphase ist, merkt man daran, dass z.B. Zeichen wie @ oder Backslash nicht out-of-the-box auf einer deutschen Tastatur (unter Windows) funktionieren, da die Standard-Tastaturbelegung des Editors (oder die Belegung von Standard-Plugins) diese Tastenkombinationen schon für diverse Funktionen beanspruchen.

Zuerst hatte ich die jeweiligen Core-Konfigurations-Dateien angepasst, wofür man aber teilweise ggf. Admin-Rechte benötigt. Ausserdem wird bei jedem Update möglicherweise die Datei wieder überschrieben.
Inzwischen habe ich aber herausgefunden, wie man vorhandene Tastenkombinationen nicht nur überschreiben kann, sondern auch auf den System-Zustand zurücksetzen kann. Dafür gib es die Keymap-Konfigurations-Datei im Benutzerverzeichnis (Benutzerverzeichnis\.atom\keymap.cson).

Ich habe folgende Konfigurationen (für die derzeit aktuelle Version 0.138.0) eingetragen um die Tasten wie gewohnt benutzen zu können:

'atom-workspace atom-text-editor:not(.mini)':
  'ctrl-alt-[': 'native!'
'.platform-darwin .editor, .platform-win32 .editor, .platform-linux .editor':
  'alt-ctrl-q': 'native!'
'.platform-win32 .editor, .platform-linux .editor':
  'ctrl-alt-shift-Q': 'autoflow:reflow-selection'

Danach AltGr-R (bzw. Strg-Alt-R) drücken, um die Konfiguration zu laden und fertig.

Nachtrag (17.2.2015):
Mit der Version 0.179.0 sieht meine aktualisierte Konfigurationsdatei so aus:

'atom-workspace atom-text-editor:not([mini])':
  'ctrl-alt-[': 'native!'
'atom-text-editor':
  'ctrl-shift-B': 'git-blame:toggle'
'.platform-win32 atom-text-editor, .platform-linux atom-text-editor':
  'ctrl-alt-q': 'native!'
'.platform-win32 .editor, .platform-linux .editor':
  'ctrl-alt-shift-Q': 'autoflow:reflow-selection'

Leider habe ich aber jetzt das Problem, dass der Backslash ein Zusammenklappen des aktuellen Code-Blocks verursacht und ich habe bisher noch keine Möglichkeit gefunden, das zu verhindern. Ist nicht übermässig tragisch, aber manchmal ärgerlich.

Passwort in Kimai zurücksetzen

Habe gerade einem Admin-Kollegen geholfen, in seine Kimai-Installation wieder reinzukommen.
Datenbank- und File-Systemzugriff war vorhanden, von daher nur eine Frage, in welcher Form das Passwort gespeichert ist.

Die Lösung: In der Datei includes/autoconf.php gibt es eine Zeile, in der ein $password_salt gesetzt wird.
Dieses nehmen wir und schreiben es vor und hinter das gewünschte neue Passwort und jagen es durch die MD5-Funktion (z.B. in MySQL). Sodann tragen wir dieses zum gewünschten Benutzer in der Tabelle kimai_usr ins Feld pw ein.

Beispiel:
neues Passwort=meinpasswort
$password_salt in includes/autoconf.php: ABCDEFG

in MySQL:
select md5('ABCDEFGmeinpasswortABCDEFG');

liefert als Ergebnis: 4b42ec596d78e884beafbe29387b38a2

Diese Zeichenkette ins pw-Feld des gewünschten Benutzers der Tabelle kimai_usr eintragen und fertig. Jetzt sollte man sich mit dem Passwort ‚meinpasswort‘ eintragen können.

Value ‚0000-00-00′ can not be represented as java.sql.Date

Habe gestern das Problem gehabt, per Quantum DB in Eclipse auf eine MySQL-Datenbank zugreifen zu müssen, in der Date-Felder mit dem Wert ‚0000-00-00′ belegt waren, was anscheinend ein Problem für den MySQL-Connector darstellt. Der meldet sich dann nur noch mit dem Text aus der Überschrift und SQL State: S1009 und Error Code: 0 und verweigert die Ausgabe der Suchanfrage.

Die vorläufige Lösung für mich bestand darin, die Connection URL um den Parameter zeroDateTimeBehavior=convertToNull zu erweitern, sodass solche Datums-Werte in NULL umgewandelt werden, da ‚0000-00-00′ kein valides Datum ist.

Die Connection URL sieht dann etwa so aus:
jdbc:mysql://host:3306/database?zeroDateTimeBehavior=convertToNull

Das reicht mir aktuell, um damit weiterarbeiten zu können, da ich nur SELECTs auf die Datenbank absetzen muss. Wie sich diese Einstellung verhält, wenn man in die Datenbank schreibt, muss sich erst noch zeigen.

VMWare Server: Gast-System kann bei NAT zwar nach draussen pingen, bekommt aber ansonsten keine Verbindung zustande

Habe gerade das Problem gehabt, dass ein Debian-Gastsystem in VMWare (Windows 7 Host) von draussen erreichbar war, DNS auflösen und nach aussen pingen konnte, aber selbst keine Verbindungen aufbauen konnte (wget, telnet, ssh).

Nach vielen Stunden der Suche, konnte mein Kollege sich daran erinnern, dass er das Problem schonmal hatte und gelöst hatte, indem man die vmnat.exe im Verzeichnis c:\Windows\SysWOW64\ durch eine neuere Version ersetzt, die z.B. beim VMWare Player dabei ist.

Die Datei kann man sogar im laufenden System ersetzen, sofern man vorher den Dienst „VMWare NAT Service“ beendet und nach dem Ersetzen wieder startet.
Danach klappts auch wieder mit dem Netzwerk. Ich musste dafür bei mir nichtmal das Gastsystem beenden.

Apache2 Reverse Proxy mit Client-IPs

Die Ausgangslage: Ich habe immer wieder mal das Problem, eine Webseite (bzw einen kompletten Virtual Host) auf einen neuen Server umzuziehen. Der häufigste Grund dafür ist eine veraltete Server-Software zu aktualisieren (z.B. von Debian Etch oder Lenny auf Debian Squeeze). In diesen Fällen gehe ich oft so vor, dass ich auf dem neuen Server die gleiche Virtual Host Konfiguration einrichte, wie auf dem Alten. Normalerweise habe ich hier auf beiden Systemen einen Apache2 Webserver, daher sollte das relativ einfach zu übertragen sein. Das hat zum einen den Vorteil, dass ich auf dem Zielsystem gleich testen kann, ob die Webseite noch so funktioniert, wie gewünscht, zum anderen kann ich per Reverse Proxy Konfiguration auf dem alten Server die Webseite schon vom neuen Server holen, obwohl die DNS-Einstellung der Domain noch nicht abgeschlossen ist – und zwar ohne dass der gemeine Webseiten-Besucher davon etwas mitbekommt.
„Apache2 Reverse Proxy mit Client-IPs“ weiterlesen

Piwik 1.3: Internal Server Error 500

Gestern kam das Update für Piwik auf die Version 1.3 heraus, das ich heute morgen versucht habe über die automatische Update-Funktion zu installieren.
Leider kam ziemlich bald nach dem Klick auf den Button ein „Internal Server Error 500″ und Piwik war quasi nicht mehr zugänglich.
Ein nachträgliches manuelles Update brachte das selbe Ergebnis und eine komplette Neu-Installation führte zu dem selben Problem, sobald ich die Datenbank-Verbindung angegeben hatte…
„Piwik 1.3: Internal Server Error 500″ weiterlesen

Piwik 1.2: One-Click-Update mit Umweg

Habe heute gesehen, dass die neue Version 1.2 von Piwik veröffentlicht wurde und habe natürlich sofort versucht, diese zu Installieren. Dafür bietet Piwik ein nettes Feature an: das One-Click-Update. Wäre auch eine super Sache, wenn es tatsächlich so funktionieren würde. Leider mag diese Form des Updates auf meinem System (Debian Lenny amd64, PHP Version 5.2.6-1) nicht mehr seit der Version 1.0 so arbeiten.
„Piwik 1.2: One-Click-Update mit Umweg“ weiterlesen