Archiv

Artikel Tagged ‘Howto’

WordPress – You are not allowed to call this page directly.

15. April 2010 3 Kommentare

Das aktivierte WordPress Plugin NextGEN ImageFlow hat mir nicht mehr erlaubt unter Einstellungen das Autoupdate auszuführen bzw.  die update-core Seite aufzurufen.

Fehlermeldung:

You are not allowed to call this page directly.

Lösung:

NextGEN ImageFlow deaktivieren und die Funktionen stehen wieder zur Verfügung.

KategorienHowto Tags: , ,

MySQL InnoDB, InnoDB Plugin vs. MYISAM

20. Dezember 2009 Keine Kommentare

InnoDB bietet:

  • Transaktionen
  • Locking auf Zeilen Ebene
  • Speicherung in Tablespaces
  • Referenzielle Integrität
  • Primärschlüssel
  • Datensatz-Cache

InnoDB Plugin bietet zustätzlich:

  • Erweiterungen zur Performance und Skalierbarkeit

    • Schnelleres Locking für bessere Skalierbarkeit auf Multi-Prozessor-Systemen
    • Nutzung von mehren skalierbaren Memory Alloziierern
    • dynamische Kontrolle von INSERT Buffering, adaptive Hash-Indexierung und Thread-Nebenläufigkeit
  • Schnelle Index-Erstellung: Index erstellen oder löschen ohne Daten zu kopieren
  • Datenkompremierung, Verkleinerung von Tabellen zur Reduzierung von I/O und Speicherverbrauch
  • Neues Zeilenformat: fully off-page storage von long BLOB, TEXT und VARCHAR Spalten
  • Dateiformatmanager: Zuständig für Auf- und Abwärtskompatibilität
  • INFORMATION_SCHEMA Tabellen: Informationen über Kompression und Locking
  • Weitere Änderungen für erhöhte Flexibilität, bessere Handhabung und  Ausfallsicherheit

    • Dynamische Kontrolle über viele Konfigurationsparameter
    • TRUNCATE TABLE Wiederherstellung der *.ibd Datei um Speicher zurückzugewinnen
    • “Strict mode” um Fehler zu vermeiden
    • Kontrolle über die statistischen Beurteilungen des Optimizers
    • Besseres Error Handling wenn Indexe verworfen werden

Und MyISAM bietet:

  • Locking auf Tabellenebene
  • Speicherung in getrennten Dateien (eine pro Tabelle)
  • Volltextindizierung
  • Daten-Komprimierung

Den Status der Tabelle kann man mit folgendem Befehl ermitteln:

SHOW TABLE STATUS LIKE ‚Tabellenname‘

Zur Laufzeit ist es problemlos möglich den Typen der Datenbank-Tabelle zu ändern:

ALTER TABLE `tabellen_name` TYPE=MYISAM
ALTER TABLE `tabellen_name` TYPE=InnoDB

Fazit:

MyISAM dürfte noch einen Performancevorteil gegenüber dem InnoDB Plugin in haben. Für welchen Datenbanktyp man sich schließlich entscheidet liegt oft an der Art der Applikation, die darauf zugreift. Sollten Features wie z.B. Transaktionssicherheit keine Rolle spielen, dann kann die Entscheidung auf MYISAM fallen. Jedoch hat mich das neue InnoDB Plugin von den Features als auch von der Performance überzeugt, dass ich mich dafür entschieden habe.

Quellen:
http://www.innodb.com/products/innodb_plugin/features/

KategorienDatenbank, Howto, MySQL Tags: , , ,

Rekursive SQL-Abfragen

20. Dezember 2009 Keine Kommentare

Am Ende Jahres 2009 stand ich vor der Problematik, dass meine Applikation mit mehr als 3000 Benutzern und mehreren Terra-Byte an Daten immer mehr an Performance verlor.

Besonders die Administratoren bedanken sich, bei Aufrufzeiten von über einer Minute für jeden Seitenwechsel, beim System.

So begann ich erstmal die  in Java geschriebenen objektorientierten, rekursiven Methoden Schritt für Schritt aufzulösen.

Der Ist-Wert vor dem Umbau lag bei bis zu 870 SQL-Anfragen pro Seitenaufbau, nach dem Umbau lang er konstant bei 5 Aufrufen und einer Performanceoptimierung von circa 700%.

Dabei kam mit besonders die Verwendung von rekursiven SQL-Abfragen auf der Datenbank entgegen, um die in Ordner gruppierten Objekte hierachisch auflösen zu können.

Voraussetzung:

DIRECTORY-Table: DIRECTORY_ID, PARENT_ID

LEVEL eine Integer oder Long Variable zur Beendigung des SQL im Fehlerfall infinite LOOP

Rekursive SQL-Abfrage:

with r (groupid,groupparentid, level) AS ( — feste Syntax:  erstes Ergebnis wird in der temporären Tabelle r vorgehalten wird
select dto.DIRECTORY_ID, dto.PARENT_ID, 1 AS level from DIRECTORY-Table dto where PARENT_ID IN ( ‚1‘,’2′,’3′)  — mit der ersten SQL-Anfrage, die die Tabelle r füllt
UNION ALL — feste SQL Ausdruck für die Rekursion
select dt. DIRECTORY_ID,dt.PARENT_ID,r.level +1 from DIRECTORY-Table dt,r where dt.PARENT_ID = r.groupid and r.groupid IS NOT NULL and r.level <= LEVEL  — zweite SQL-Abfrage mit der Rekursivebedingung und der Verwendung des Ergebnis des ersten SQL-Statements
)
select * from DIRECTORY-Table g,r where g.GROUP_ID = r.groupid) — letzendliches SELECT-Statement für das zurückzugebende Ergebnis
Anmerkung:
Die Variable LEVEL mit der Abbrechbedingung im zweiten SQL-Statement ist nicht notwendig, aber dringend zu empfehlen. Sollten mal Datensätze auf sich gegenseitig verweisen und so eine Endlosschleife entstehen bricht die Rekursion in der definierten Tiefe von LEVEL ab, da ja keine normale Abbruchbedingung mit leerer Ergebnismenge des 2. SQL-Statements zustande kommt. Sollte diese nicht definiert werden, kommt es auf die Datenbank darauf an, wie es mit der Infinit-Loop umgeht.

[Quellen]

http://www.mayeruli.de/db2/rekursives-sql.html

http://www.thomas.teufl.eu/blog/2007/09/27/t-sql-rekursive-abfragen/

http://www.orafaq.com/node/1879

KategorienHowto, SQL Tags: , , ,

Apache, PHP und MySQL auf UTF-8 umstellen

10. November 2009 Keine Kommentare

Eine kurze Anleitung, wie Apache2, PHP5 und MySQL5 auf UTF-8 unter Debian sicherstellt.

Apache2

Änderung in der Datei /etc/apache2/apache2.conf vornehmen:

AddDefaultCharset utf-8

bzw. kann man auch in Debian in der Datei /etc/apach2/conf.d/charset diese Änderung vornehmen

PHP

Änderung in der Datei /etc/php5/apache2/php.ini vornehmen:

[PHP]
default_charset = “utf-8?
[mbstring]
mbstring.language = utf-8
mbstring.internal_encoding = utf-8
mbstring.http_input = utf-8
mbstring.http_output = utf-8

MySQL

Änderungen in der Datei /etc/mysql/my.cnf vornehmen:

[client]
default-character-set = utf8
[mysqld]
default-character-set = utf8
character-set-server = utf8
collation-server= utf8_general_ci
init_connect = ‘SET collation_connection = utf8_general_ci’
init_connect = ‘SET NAMES utf8?
[mysqldump]
default-character-set = utf8
[mysqlimport]
default-character-set = utf8
[mysql]
default-character-set = utf8

Anmerkung:

Voraussetzung für die Umstellung ist die UTF8 Konvierung von Dateien und Datenbanken.

Linux Tool für die Konvertierung von Dateien ist z.B. iconv

KategorienDatenbank, Howto, MySQL Tags: , ,

Backup mit rsync

25. September 2009 Keine Kommentare

Backup mit rsync:

rsync -avz -exclude=*tar.* -e ssh root@ip-adresse:/usr/local/share /usr/local/share/BACKUP/backup_01

Synchronisierung des Verzeichnis (/usr/local/share) auf dem entfernten Rechner (Den fehlenden Slash am Ende beachten!) in das lokale Verzeichnis(/usr/local/share/BACKUP/backup_01) über ssh.

KategorienLinux, Open Source, Security Tags: , ,

Skype unter Debian 64-Bit installieren

25. September 2009 Keine Kommentare

Beim Start von Skype habe ich folgende Fehlermeldungen erhalten:

skype: error while loading shared libraries: libasound.so.2: cannot open shared object file: No such file or directory

und

skype: error while loading shared libraries: libQtDBus.so.4: cannot open shared object file: No such file or directory

Lösung des Problems ist die Installation folgender Pakete:

apt-get install lib32asound2 ia32-libs lib32gcc1 lib32ncurses5 lib32stdc++6 lib32z1 ia32-libs-gtk

KategorienHowto, Linux Tags: , , ,

FlashPlayer unter Debian installieren

23. September 2009 1 Kommentar

Voraussetzung:
/etc/apt/source.list:

deb http://ftp2.de.debian.org/debian/ testing main contrib non-free
deb-src http://ftp2.de.debian.org/debian/ testing main contrib non-free

apt-get update
apt-get install flashplugin-nonfree

Update über:

/usr/sbin/update-flashplugin-nonfree –install

httptunnel – TCP-Verbindungen

16. September 2009 Keine Kommentare

Unter Homepage httptunnel können sie die Client- & Server-Software herunterladen.

httptunnel eignet sich für Netzwerke, die aus verschiedensten Gründen nur noch die http-Ports 80 und 443 zulassen.

Mit Hilfe von httptunnel können bliebige Ports über http getunnelt werden.

Das Konzept basiert auf einem Client-/Serverarchitektur. Die Anfrage werden an den Client über konfigurierbaren Port lokal gestellt. Der Client leitet die Anfragen an die konfigurierte IP-Adresse über Port 80 bzw. 443 weiter.

hts -F IP-Adresse:443 22

Der Server wartet auf Anfragen auf Port 80 bzw. 443 und leitet die Anfragen an den eigentlichen Dienst auf dem Server weiter.

Beispiel: httptunnel für ssh

Der ssh-Client verbindet sich auf einen lokalen Port (z.B. localhost:23333)

htc -F 23333 IP-Adresse:443

Der httptunnel-Client htc lauscht auf konfigurierten lokalen Port und verpackt eingehende Daten in http und leitet sie an die konfigurierte IP-Adresse (z.B. 192.168.0.1 an Port 443) weiter.
Damit werden die Daten über einen Port weitergeleitet, der in jedem Netz zur Verfügung steht und sich vom normalen Datenverkehr über http kaum unterscheidet. Ausnahme sind Firewall-Systeme, die Protokollanaylse betreiben. Diese kommen werden jedoch kaum eingesetzt, da der Ressourcenverbrauch momentan noch zu hoch ist.
Der httptunnel-Server hts wiederum lauscht auf dem Port 443 auf eingehenden Daten, entfernt die http-Protokoll-Anteile und leitet diese an Port 22 für ssh weiter.
Der ssh-Server auf dem gleichen Server lauscht auf Port 22 auf Daten und verarbeitet diese.

Canonical Redirect .htaccess Apache2 für WordPress

14. September 2009 Keine Kommentare

Canonical Hostname Redirect (non-www to www):
This solution will redirect any page requested via a non-www domain to the same URL with the www domain, and as such it can be placed in the DocumentRoot of your site and will be enforced globally:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]

Apache2 rewrite guide
Apache2 htaccess Tutorial

KategorienLinux, Open Source Tags: , ,

SSH Public-Key login

25. Mai 2006 Keine Kommentare

Anmeldung über Public/Privat-Key-Verschlüsselung

Auf dem Rechner(Quelle) von dem man sich später aus zu einem anderen Rechner(Ziel) verbinden will den private&public Key erzeugen:

ssh-keygen -t rsa -b 4096

Public Key auf Ziel-Rechner kopieren:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-system

Oder, wenn ssh-copy-id nicht vorhanden ist, dann kann man die gleiche Aktion folgendermaßen ausführen:

cat ~/.ssh/*.pub | ssh user@remote-system ‚umask 077; cat >>.ssh/authorized_keys‘

oder in einzelnen Schritten hier

KategorienLinux, Security Tags: , , ,