Archiv der Kategorie: Artikel

WordPress Performance verbessern

Vor einiger Zeit wurde auf Noupe.com ein Artikel zum Thema WordPress-Performance veröffentlicht – 13 Great WordPress Speed Tips & Tricks for MAX Performance. Im folgenden findet ihr eine kleine Zusammenfassung des Artikels (und 2 zusätzliche Tipps von mir :-)):
1.WordPress stets aktuell halten- gerade der Sprung von einer älteren Version auf die neuen 2.7er-Versionen von WordPress kann die Performance stark steigern
2.Unnötige PlugIns entfernen und benötigte stets aktuell halten- selbst wenn man die Funktionalität eines PlugIns nicht nutzt kostet jedes installierte PlugIn Rechenzeit weil WordPress z.B. prüfen muss ob es aktiviert ist, etc. – von daher sollte man keine PlugIns installieren die man nicht nutzt. Installierte PlugIns sollte man stets aktuell halten – alleine schon wegen potentieller Sicherheitslücken und zum Teil besserer Performance.
3.Die Menge an ausgeführten PHP-Code und Datenbankabfragen reduzieren – man sollte nach Möglichkeit unnötige Datenbankabfragen und die Ausführung von Datenbankabfragen verhindern indem man z.B. auf statisches HTML ausweicht (siehe auch 7. !)
4.Die Datenbank optimieren und reparieren – man sollte immer darauf achten, dass die WP-Datenbank sowohl optimiert als auch repariert ist. Ich empfehle hierfür das WP-Optimize PlugIn (siehe 14.).
5.Nutzung eines Image-Hosting Services – wenn man das nötige Kleingeld dafür übrig hat, sollte man CSS-Dateien, JavaScript-Dateien und Bilder auf einen Dienst wie Amazon S3 auslagern. Das reduziert einerseits die Bandbreite die auf dem eigenen Server verbraucht wird als auch die Prozessorlast auf dem eigenen Server.
6.Optimiere alle Bilder – man sollte alle Bilder die man auf der Seite benutzt optimieren. Dafür gibt es z.B. Online-Dienste wie smushit.com oder auch Shrink-O-Matic (eine Adobe-AIR Anwendung) die Bilder ohne sichtbaren Qualitätsverlust verkleinern können.
7.WP-SuperCache nutzen – das WP-SuperCache PlugIn reduziert die Serverlast drastisch indem es einen Großteil der Seite als statische HTML-Seiten erzeugt und diese ausliefert statt jedes mal die Datenbank abzufragen.
8.PHP Speedy WP benutzen – dieses PlugIn bindet PHP Speedy in WP ein – eine Bibliothek die die zu übertragende Datenmenge durch Kompression stark verringert. ACHTUNG! Das PlugIn arbeitet nicht ohne Anpassungen mit WP SuperCache zusammen! Am besten lest ihr den Artikel auf Noupe für mehr Details!
9.WP CSS – diese PlugIn komprimiert CSS Dateien und liefert diese aus statt der normalen Version
10.DB Cache – speichert Ergebnisse von Datenbankabfragen im Dateisystem zwischen
11.Nutzung der AJAX Libraries API- diese API ist ein Angebot von Google die es erlaubt die ”großen” JavaScript-Frameworks (jQuery, prototype, dojo, usw.) von den Google-Servern aus einzubinden statt sie auf dem eigenen Server zu hosten. Dies hat den Vorteil, dass die Google-Server im Allgemeinen besser ans Internet angebunden sind als die eigenen  Außerdem speichern Browser die Bibliothek zwischen – was ein Vorteil ist wenn viele Seiten diesen Mechanismus nutzen da die Bibliothek nur einmal geladen wird
12.Die Anzahl Datenbank-Queries und die Seitenladezeit anzeigen- wenn man seine WP-Installation optimiert sollte man sich diese Werte anzeigen lassen um ggf. sofort zu sehen was die Optimierungen bringen (mehr Infos + Code findet sich bei Noupe)
13.Optimize DB nutzen- dieses PlugIn bietet eine ähnliche Funktionalität wie das weiter oben erwähnte WP-Optimize.
14.WP-Optimize nutzen- dieses PlugIn kann einerseits die Datenbank optimieren aber zusätzlich noch ein paar Dinge mehr. Das PlugIn kann z.B. Artikel-Revisionen löschen, Spam-Kommentare aus der Datenbank entfernen, uvm.
15.Anzahl Artikel-Revisionen reduzieren- In den neueren Versionen legt WordPress bei Änderungen an Artikeln Kopien der Artikel in der Datenbank an. Dies ist nützlich um z.B. bequem einen älteren Stand eines Artikels wiederherzustellen wenn man z.B. aus Versehen einen Teil gelöscht hat oder Ähnliches. Das Problem ist, dass WP standardmässig bis zu 10 Versionen eines Artikels in der Datenbank anlegt und dadurch sehr viel “Müll” in der Datenbank entsteht. Daher empfehle ich das Revision Control PlugIn. Mit ihm kann man das Revisionsmanagement bequem in der Admin-Oberfläche von WP konfigurieren (an-/abschalten, Anzahl der Revisionen für Seiten und Artikel festlegen). Durch weniger Revisionen wird die Datenbank entlastet.

WordPress erfreut sich von Version zu Version immer größere Beliebtheit. Leider sieht man auch immer heufiger Blogs die aus sicht der Geschwindigkeit zu wünschen übrig lassen. Die Ursach hierfür liegt meistens am Blog selber. Es gibt einige Punkte die beachtet werden sollten.

  1. WordPress stets aktuell halten, ab Version 2.7  wurde die Performens deutlich gesteigert.
  2. Nur wirklich benötigte PlugIns verwenden und stets aktuell halten. „Weniger ist meist mehr“, da  jedes installierte PlugIn Rechenzeit kostet.
  3. PHP-Code und Datenbankabfragen reduzieren,  oder Seiten nur über einen Cach bedienen.
  4. Die Mysql Datenbank per cron immer optimieren und reparieren lassen.
  5. Nur optimierte  Bilder verwenden, Bilder sollten nur die benötigt Größe haben, Tip Blogdesk hilft hierbei.
  6. WP-Cache nutzen, ab Version 2.8 ist dieser besser als  WP-SuperCache. Beide PlugIns reduziert die Serverlast drastisch.

8.PHP Speedy WP benutzen – dieses PlugIn bindet PHP Speedy in WP ein – eine Bibliothek die die zu übertragende Datenmenge durch Kompression stark verringert. ACHTUNG! Das PlugIn arbeitet nicht ohne Anpassungen mit WP SuperCache zusammen! Am besten lest ihr den Artikel auf Noupe für mehr Details!

9.WP CSS – diese PlugIn komprimiert CSS Dateien und liefert diese aus statt der normalen Version

10.DB Cache – speichert Ergebnisse von Datenbankabfragen im Dateisystem zwischen

11.Nutzung der AJAX Libraries API- diese API ist ein Angebot von Google die es erlaubt die großenJavaScript-Frameworks (jQuery, prototype, dojo, usw.) von den Google-Servern aus einzubinden statt sie auf dem eigenen Server zu hosten. Dies hat den Vorteil, dass die Google-Server im Allgemeinen besser ans Internet angebunden sind als die eigenen  Außerdem speichern Browser die Bibliothek zwischen – was ein Vorteil ist wenn viele Seiten diesen Mechanismus nutzen da die Bibliothek nur einmal geladen wird

12.Die Anzahl Datenbank-Queries und die Seitenladezeit anzeigen- wenn man seine WP-Installation optimiert sollte man sich diese Werte anzeigen lassen um ggf. sofort zu sehen was die Optimierungen bringen (mehr Infos + Code findet sich bei Noupe)

13.Optimize DB nutzen- dieses PlugIn bietet eine ähnliche Funktionalität wie das weiter oben erwähnte WP-Optimize.

14.WP-Optimize nutzen- dieses PlugIn kann einerseits die Datenbank optimieren aber zusätzlich noch ein paar Dinge mehr. Das PlugIn kann z.B. Artikel-Revisionen löschen, Spam-Kommentare aus der Datenbank entfernen, uvm.

15.Anzahl Artikel-Revisionen reduzieren- In den neueren Versionen legt WordPress bei Ãnderungen an Artikeln Kopien der Artikel in der Datenbank an. Dies ist nützlich um z.B. bequem einen älteren Stand eines Artikels wiederherzustellen wenn man z.B. aus Versehen einen Teil gelöscht hat oder Ãhnliches. Das Problem ist, dass WP standardmässig bis zu 10 Versionen eines Artikels in der Datenbank anlegt und dadurch sehr viel Müll in der Datenbank entsteht. Daher empfehle ich das Revision Control PlugIn. Mit ihm kann man das Revisionsmanagement bequem in der Admin-Oberfläche von WP konfigurieren (an-/abschalten, Anzahl der Revisionen für Seiten und Artikel festlegen). Durch weniger Revisionen wird die Datenbank entlastet.

freiesMagazin 06/2009 erschienen

Inhalte der Ausgabe 06/2009 sind

Mobiles Linux mit Moblin
Debian 5.0-Installation mit einer Braillezeile
Die Vorgeschichte von Linux
Der Mai im Kernel-Rückblick
Toribash – Kampf mit (der) Physik
Erfahrungsbericht: OpenOffice.org 3.0
Keine Angst vor awk – ein Schnelleinstieg
AVR-Mikrocontroller unter Linux
ECDL/ICDL wagt sich an OpenOffice.org
Rezension: Just for Fun – The Story of an Accidental Revolutionary
Das Ende des Programmierwettbewerbs
Veranstaltungskalender und Leserbriefe

Das freiesMagazin berichtet monatlich über Wissenswertes und Neues aus den Welten Freier Software, Open Source und Linux. Was 2005 als loser Newsletter begann, reifte mit der Zeit durch Akzeptanz und Teilnahme der Linux-Community zum regelmäßig erscheinenden Magazin. Getreu dem Motto „der Community etwas an Wissen, Spaß und Freude zurückzugeben“ laden wir auch weiterhin Autoren zum Wissensaustausch ein.

Wie baue ich eine OCI Modul für PHP5 und Apache2?

Benötigt wird:

Bei SuSE 10.X

Anlegen von mkdir /opt/oracle

Auspacken der Zip-Dateien in den Ordner /opt/oracle/instantclient_10_2
Link anlegen
cd /opt/oracle/instantclient_10_2
ln -s libclntsh.so.10.1 libclntsh.so

Test ob Oracle vorhanden:
echo $ORACLE_HOME

Anlegen der Pfade in der Datei /etc/profile

ORACLE_HOME=/opt/oracle/instantclient_10_2
LD_LIBRARY_PATH=$ORACLE_HOME
export ORACLE_HOME
export LD_LIBRARY_PATH

Der gleiche Eintrag muss auch noch in
/etc/init.d/apache2

Tip: vom System abmelden und wieder anmelden

cd /opt/oracle/
wget http://pecl.php.net/get/oci8
pear5 install oci8-1.2.3.tgz

—————————-Meldung ———————————
10 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
Please provide the path to ORACLE_HOME dir. Use ‚instantclient,/path/to/instant/client/lib‘
if you’re compiling against Oracle Instant Client [autodetect] :
—————————-Meldung ———————————

Eingeben von: instantclient,/opt/oracle/instantclient_10_2

Nach der Installation:
Die Datei /etc/php5/conf.d/oci.ini anlegen mit dem Inhalt:

; comment out next line to disable oci extension in php
extension=oci8.so

Test der Installation:
php /usr/share/doc/packages/php5/test.php5 | grep oci8

Apache2 Restarten

Testseite anlegen und ausführen:

Da wir keine tnsnamesora verwenden ändert sich der Aufruf:

—————————-Meldung ———————————
< ?php

$conn = OCILogon(„dbuser“, „dbpasswd“, „//dbserver.host.net/DB“);

$query = ’select table_name from user_tables‘;

$stid = OCIParse($conn, $query);
OCIExecute($stid, OCI_DEFAULT);
while ($succ = OCIFetchInto($stid, $row)) {
foreach ($row as $item) {
echo $item.“ „;
}
echo „
\n“;
}

OCILogoff($conn);

?>
—————————-Meldung ———————————

Links:
http://www.oracle.com/technology/tech/php/index.html
http://en.opensuse.org/Howto_build_oci8_extension_module_for_php

Concurrent Version Management (CVS)

CVS wird zur Softwareversionsverwaltung eingesetzt. Mehrere Entwickler können gleichzeitig an einem Projekt arbeiten. Die Sourcen werden zentral im sogenannten Repository verwaltet, jeder Entwickler arbeitet mit einer lokalen Kopie.

CVS-Ablaufplan

cvs

 

CVS-Vorteile

  • Alle Entwickler arbeiten mit den Richtigen Quellen.
  • Es entsteht eine Ãœbersicht der Projekte und dessen Status.
  • Der Programmiercode wird Dokumentiert.
  • Die Qualitätskontrolle wird vereinfacht.
  • Anwendungen werden besser programmiert.

CVS-Nachteile

  • Es müssen Regeln für die Programmierung aufgestellt werden.
  • Es müssen Regeln für den Umgang mit CVS erarbeitet werden.
  • Es müssen Schulungen für Anwender und Administratoren durchgeführt werden.
  • Neue Software muß eingeführt werden.

CVS Befehlsübersicht

  • Checkout: Projektname (Modulname)
  • Import: Projektname (Modulname)
  • Add: Eine neue Datei oder ein neues Verzeichnis zum Repository hinzufügen.
  • Get: Eine lokale Kopie des Repositories anlegen.
  • Commit: Änderungen ins Repository eintragen.
  • Diff: Unterschiede zwischen lokaler Kopie und Repository anzeigen.
  • Log: CVS Log Information anzeigen.
  • Rdiff: Eine Sammlung von Diffs zur Anzeige von Versionsunterschieden erzeugen.
  • Status: Status der lokalen Dateien im Vergleich zum Repository anzeigen.
  • Update: Die lokale Kopie des Repositories aktualisieren.

CVS-Clients

  1. WIN-CVS CVS client für Windows, Macintosh and Unix´
  2. TortoiseCVS rechte Mause
  3. gCVS
  4. CVS client für Windows, Macintosh and Unix
  5. jCVS
  6. CVS Java client.
  7. CVSweb

SVN-Server

SVN einrichten
http://lug.zhwin.ch/wiki/index.php/SVN_einrichten

Subversion
aus Linux Usergroup der Zuercher Hochschule Winterthur, der freien Wissensdatenbank
Subversion (abgek\ufffdrzt als SVN) ist ein Programm zur Versionsverwaltung, \ufffdhnlich CVS. Die Bedienung von Subversion ist sehr an diejenige von CVS angelehnt, jedoch bietet es diesem gegen\ufffdber einige Vorteile und Verbesserungen. Zum Beispiel ist es m\ufffdglich Dateien und Verzeichnisse umzubenennen, wobei die History erhalten bleibt. Mit cvs2svn existiert auch ein Konverter, der CVS-Repositories nach SVN umwandeln.

http://lug.zhwin.ch/wiki/index.php/Subversion

Buch:
http://svnbook.red-bean.com/

Software:
http://subversion.tigris.org/

weiter…

Installation und Konfiguration von Subversion ber mod_dav_svn

Subversion untersttzt zwei verschiedene Server-Varianten: Den eigenstndigen Serverprozess svnserve und das Modul mod_dav_svn fr den Webserver Apache.

 

Voraussetzung:

1. Apache-2-Webserver.
2. Apache-Modul mod_authz_svn.so und mod_dav_svn.so

Die Module mssen von Apache geladen werden. Bei Suse besser ber Yast einbinden. Auszug aus der Konfiguration

#SVN ModuleLoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

Einrichten des SVN im Apache Webserver:

# project repository files for musterprojekt START
<location>
DAV svn
SVNPath /srv/svn/repos/musterprojekt
AuthType Basic
AuthName "Subversion Repository for musterprojekt"
AuthUserFile /srv/svn/user_access/musterprojekt_AuthUserFile
AuthGroupFile /srv/svn/user_access/musterprojekt_AuthGroupfile
# Limit access to certain people
<limitexcept>
Require group musterprojekt_committers
</limitexcept>
# Limit read access to certain people
<limit>
Require group musterprojekt_committers
Require group musterprojekt_readers
</limit>
</location>
# project repository files for musterprojekt ENDE

ber diese Eintr wird festgelegt, wo das Repositories liegt und wer es wie benutzen darf

Bevor der Webserver neu gestartet wird mssen die Verzeichnisse und Gruppen angelegt werden.

Anlegen von Projekten:======================

1. cd /srv/svn/repos
2. svnadmin create projektname
3. chown -R wwwrun:www projektname/{dav,db,locks}
4. touch /srv/svn/user_access/projektname_AuthGroupfile
5. touch /srv/svn/user_access/projektname_AuthUserFile
6. chown root:www /srv/svn/user_access/projektname_AuthGroupfile
7. chown root:www /srv/svn/user_access/projektname_AuthUserFile
8. chmod 644 /srv/svn/user_access/projektname_AuthGroupfile
9. chmod 644 /srv/svn/user_access/projektname_AuthUserFile
10. htpasswd2 /srv/svn/user_access/projektname_AuthUserFile username
11. Berechtigungen anlegen in /srv/svn/user_access/projektname_AuthGroupfile Lesen Schreiben

Zugriff auf das RepositoryNachdem der Apache-Server mit der genderten Konfiguration neu gestartet wurde, kann mit dem normalen Subversion-Client svn auf die Repositories zugegriffen werden. Allerdings muss als Protokoll http oder (falls konfiguriert) https verwendet werden:

http://localhost/repos