Archiv der Kategorie: Linux

PHP-Cache

Wir bekommen eine neue Webseite, die auch wieder unter Typo3 entwickelt wurde. Da sie aber diverse dynamische Elemente beinhaltet, dauert das Laden der Seiten deutlich länger, als bei den bisherigen Seiten. Also musste ich mich wieder einmal vertiefter mit Linux und Typo3 auseinandersetzen.

Gemäss Internetrecherche gibt es viele Hebel, an denen man ansetzen kann, aber mit Abstand am meisten bringt es die PHP Dateien zu cachen. Ich habe mich für APC (Alternative PHP Cache) entschieden. Ab PHP 5.5 wird das nicht mehr benötigt, da ein PHP Cache direkt mit PHP kommt. Da wir aber noch weitere Homepages haben, die im Moment einen Wechsel auf die neue Version verhindern, musste ich leider doch APC installieren und konfigurieren.

Um APC zu installieren, bin ich dieser Anleitung gefolgt, ausser dass ich 256 MB Ram zugewiesen habe. Wenn dann z.B. nach einem Update APC nicht mehr benötigt wird, kann man es einfach durch “apt-get remove –purge php-apc” wieder entfernen.

Webserver Upgrade auf Ubuntu Server 14.04 LTS

Wir hosten unseren Webserver selber bei uns. Dazu verwende ich die Serverversion von Ubuntu auf unserem Failovercluster. Das betreiben als virtuelle Maschine hat grosse Vorteile. Um Tests durchzuführen, kann man einfach die Festplatte kopieren und damit eine neue virtuelle Maschine starten, auf der man die Tests durchführt. Dies kann einem eine Menge Stress sparen, wenn man wie ich z.B. auf dem Server ein Upgrade auf die neue Version 14.04 LTS installiert und danach zwei von fünf Seiten nicht mehr laufen…

Um ein Update auf 14.04 LTS durchzuführen, benötigt man den folgenden Befehl:

sudo do-release-upgrade –d

Den Schalter –d benötigt man nur, wenn die Meldung “No new release found” kommt. Dies ist bei 14.04 LTS der Fall, bis das erste Update im Sommer kommen wird.

image

image

image

image

image

Bei zwei unserer Typo3 Installationen kommt nach dem Update nur die Fehlermeldung “Oops, an error occurred!”

image

Wenn man sich am Backend anmelden möchte, bekommt man eine Fehlermeldung und damit einen Hinweis auf die Extension tt_news:

PHP Runtime Notice: Declaration of tx_ttnews_categorytree::getTree() should be compatible with t3lib_treeView::getTree($uid, $depth = 999, …

image

Damit man sich überhaupt am Backend anmelden kann, muss man die Fehlermeldungen im Installtool (www.domain.tld/typo3/install) deaktivieren. Dazu muss man im typo3conf Ordner eine Datei ENABLE_INSTALL_TOOL erstellen (z.B. mit sudo touch ENABLE_INSTALL_TOOL).

image

Im Install Tool wählt man “All Configuration” aus.

image

Hier sucht man nach [displayErrors] und ändert den Eintrag von –1 auf 0.

image

Damit die Änderung übernommen wird, muss man ganz nach unten scrollen und auf “Write to localconf.php” klicken.

image

Danach werden die PHP Fehlermeldungen nicht mehr angezeigt und so funktionieren auch die alten Webseiten mit der aktualisierten PHP und Apache Version von Ubuntu Server 14.04 LTS.

ProFTPd installieren

Wir betreiben unseren Webserver immer noch bei uns. Nun lassen wir aber extern eine neue Homepage programmieren. Der Programmierer benötigt nun einen FTP Zugang, um Dateien von extern hochzuladen. So musste ich also einen FTP Zugang einrichten, der danach wieder gelöscht werden kann.

Eine kurze Recherche hat ergeben, dass hauptsächlich vsftpd und ProFTPd empfohlen werden. Ich habe mich dann für ProFTPd entschieden, weil dieser auch über die grafische Oberfläche Webmin konfiguriert werden kann.

ProFTPd kann man direkt in Webmin installieren, indem man “Nicht benutzte Module” auswählt.

image

image

Es geht ja in meinem Fall nur um einen zeitlich begrenzten Zugriff über FTP von einem Benutzer. Daher habe ich mich da auch nicht tief eingearbeitet, eine “quick & dirty” Lösung genügt ja in dem Fall. Ein Minimum an Sicherheit kann man trotzdem erreichen, indem man das Verzeichnis, in das man per FTP gelangt, festgelegt wird.

Dazu kann man unter “Dateien und Verzeichnisse” das Verzeichnis für alle Benutzer auf das Entwicklungsverzeichnis für die neue Webseite festlegen.

image

image

Nun muss man noch einen neuen Benutzer erstellen. Das Stammverzeichnis habe ich auf das Verzeichnis für die Entwicklung der Webseite festgelegt. Die primäre Gruppe wurde auf www-data abgeändert, damit die Dateien dann auch über Apache ausgeliefert werden können.

image

So kann man Dateien hochladen und löschen, aber keine bereits bestehenden ersetzen. In dem Fall gibt es einen Fehler 550. Um das auch noch zu beheben, kann man den neu erstellten User als www-data auftreten lassen.

image

Nun muss man den Server noch veröffentlichen. Dazu erstellt man eine DNAT Regel für FTP.

image

Da ich die Firewall Regeln lieber selber erstelle, habe ich das Häklein bei “Automatic Firewall rule” nicht gesetzt. Dann muss man aber eine eigene Regel erstellen. Da wir den Zugang ja nur für die Firma einrichten müssen, die unsere neue Webseite programmiert, kann man unter Sources den Zugriff auf die verwendete IP einschränken, was nochmals einen deutlichen Sicherheitsgewinn bedeutet.

image

Schwachstelle in OpenSSL

Wie man in diversen Medien erfahren konnte, wurde eine Schwachstelle in OpenSSL bekannt, die schon längere Zeit existiert. Weitere Informationen finden sich z.B. bei Heise oder bei Melani.

Auch wir waren betroffen, da unsere Firewall (Sophos UTM) auf Linux basiert und OpenSSL implementiert hat. Da wir z.B. unseren Exchangeserver mit der Sophos als Reverse Proxy veröffentlichen, ist auch diese Veröffentlichung betroffen.

Diverse Seiten bieten an, eine Verbindung auf den Heartbleed Bug zu überprüfen, so auch http://filippo.io/Heartbleed/.

image

Sophos hat aber sehr zeitnah Patches angeboten, die das Problem beheben. Nach dem Einspielen dieser meldet auch der Test, dass unser Herz nicht mehr ausblutet Zwinkerndes Smiley.

image

Typo3 Seiten aus Backup wieder herstellen

Um die bestehenden Webseiten auf den neuen (virtuellen) Server zu übertragen, muss man gleich vorgehen, wie wenn man die Webseiten aus einem Backup wiederherstellen müsste. (Denjenigen, die diesen Vorgang lieber als Video Anleitung ansehen, kann ich die Anleitung von jweiland.net empfehlen.) Wichtig ist bei einer Wiederherstellung die Version von Typo3. Entweder muss es die gleiche sein, die auch auf dem alten Server installiert war oder man muss nach der Wiederherstellung die gleichen Schritte durchführen, wie nach einem normalen Upgrade von Typo3. Ein Backup aus dem man wiederherstellen kann, sollte die Datenbanken und die Verzeichnisse mit den Daten sichern (oder jetzt neu dann eine virtuelle Maschine, die man als ganzes komfortabel sichern und wiederherstellen kann).

Installation von Typo3
Als erstes habe ich die gleiche Version der Typo3 Source Dateien installiert, die auch auf dem alten Server benutzt wurde. In diesem Beitrag ist beschrieben, wie man Typo3 installiert.

Datenbank importieren
Um die Datenbank importieren zu können, muss man zuerst eine Datenbank mit dem gleichen Namen anlegen und dann den Dump aus dem Backup in diese importieren. 
mysql –u root –p db_name < dumpfilename.sql
Die nötigen Befehle sind hier aufgeführt.

Daten kopieren
Nun kann man die Daten in das richtige Verzeichnis verschieben. Am einfachsten geht das mit dem Midnight Commander (geht natürlich auch auf der shell mit cp oder auch mit dem Filemanager von Webmin). Zur Sicherheit sollte man im Stammverzeichnis noch überprüfen, ob der Symlink zu den Typo3 Sources auch ans richtige Ort zeigt. Genaueres zum verschieben findet man hier.

Am Schluss sollte man überprüfen, ob alles richtig funktioniert. Ausserdem macht es vielleicht gerade Sinn, die Typo3 Version mal wieder auf eine neuere Version anzuheben. Auf dem neuen Server sollte natürlich auch wieder ein Backup eingerichtet und getestet werden. Linux auf einem Hyper-V-Host kann gemäss meinen Tests problemlos als ganze virtuelle Maschine über DPM wiederhergestellt werden.

Typo3 installieren

In den System-Voraussetzungen heisst es, dass man GraphicsMagick oder Imagemagick 6 oder neuer installieren muss, wenn man die integrierte Bildbearbeitung zurückgreifen möchte.

Installieren kann man Imagemagick durch den Befehl
sudo apt-get install imagemagick

image

image

Wenn nicht bereits installiert, wird auch noch php5-gd benötigt.
sudo apt-get install php5-gd

Eine Typo3 Installation besteht aus 2 “Teilen”. Zum einen aus der “Typo3 Source” und zum anderen aus den eigentlichen Dateien für die Webseite (da gibt es verschiedene Packages).

Wenn man mehrere Seiten betreibt, kann es sinnvoll sein, diese beiden Teile zu trennen und die Source Dateien an einen separaten Ort zu speichern. So belegen die Source Dateien nur einmal Speicherplatz aber der Hauptvorteil liegt darin, dass man Upgrades am Source Code viel einfacher handhaben kann. Das Trennen der beiden Teile ist in der Datei INSTALL.txt im Stammverzeichnis der Installation unter „Installation:recommended“ beschrieben.

Für eine neue leere Installation lädt man das Blank Package mit den Source Dateien und einem leeren Skelett für die neue Seite herunter. Bei einem Upgrade nur noch das Source Packet. Den Link zur Datei kann man von der Homepage kopieren.

image

Nun kann man das Verzeichnis mit wget herunterladen. Mit einem Rechtsklick kann man die vorher kopierte Verknüpfung in Putty einfügen. Die Endung „?download” sollte man aber löschen, damit die tar.gz Datei heruntergeladen wird.

image

Das Archiv kann man nun entpacken:
sudo tar –xzvpf blankpackage-6.1.7.tar.gz
wobei man hier die Bedeutung der einzelnen Schalter findet.
Durch das Anfügen von z.B. –C /opt kann man direkt in das Verzeichnis /opt entpacken.

Nach dem Entpacken kann man die Dateien verschieben. Dazu verwende ich den Midnight Commander. Diesen kann man durch sudo apt-get install mc installieren und mit sudo mc starten. Mit der Taste F6 kann man vom linken Fenster ins rechte verschieben, im unteren Bild ins Verzeichnis /var/www.

image

Die Source Dateien verschiebe ich ins Verzeichnis /opt und der Rest des Blankpackages wird auf den Namen des Webseitenprojekts umbenannt.

Wenn die Sourcedateien nicht am gleichen Ort wie die restlichen Dateien von Typo3 liegen, muss man den symbolischen Link (symlink) auf den neuen Ort “umbiegen”. Dies kann man mit dem Kommando ln (sudo ln –sf /opt/typo3_src-6.1.7/ /var/www/…/typo3_src) erreichen oder auch ganz komfortabel mit dem Filemanager von Webmin.

image

image

Nun muss man noch die Berechtigungen und Besitzer von bestimmten Ordnern anpassen. In der INSTALL.txt sind die benötigten Befehle aufgeführt.

image

image

Wenn man nun die Seite aufruft, bekommt man folgende Meldung, dass das Install Tool geschützt sei.

image

Nachdem man so eine Datei erstellt hat, kann man die Installation beginnen.

image

Man muss sich mit einer Datenbank verbinden und die Tabellen importieren, wird dabei aber schön vom Assistenten geführt und kann eigentlich nicht viel falsch machen.

Nach der vollständigen Installation sollte man alles überprüfen, z.B. ob alle Bildbearbeitungstests funktionieren. Bei mir gab es da einen Fehler mit Imagemagick bei “Combining images”.

image

Um das zu beheben, muss man unter “All Configuration” den Befehl combine auf composite ändern, weil die neueren Versionen von Imagemagick diesen verwenden.

image

Nun hat man eine leere Seite, jetzt muss man sie noch mit Inhalten füllen.