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.
Schlagwort: Howto
MySQL InnoDB, InnoDB Plugin vs. MYISAM
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/
Rekursive SQL-Abfragen
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 wirdselect 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ülltUNION ALL — feste SQL Ausdruck für die Rekursionselect 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
[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
Apache, PHP und MySQL auf UTF-8 umstellen
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
Backup mit rsync
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.
Skype unter Debian 64-Bit installieren
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
FlashPlayer unter Debian installieren
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
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
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
SSH Public-Key login
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