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.

virtuelle Hosts mit Apache

Bei uns laufen die Webseiten von verschiedenen Schulgemeinden. Apache bietet eine Möglichkeit, dies über virtuelle Hosts zu realisieren. Diese verwalte ich mit Webmin.

Unter Servers –> Apache Webserver –> Create virtual host kann man für jede eigene Seite einen virtuellen Host angeben.

image

Wenn man nun den virtuellen Host auswählt, kann man unter “Networking and Addresses” die virtuellen Servernamen eintragen.

image

Webmin zur Linux Server Verwaltung installieren

Ein Linuxserver kann komplett auf der Komandozeile (shell) verwaltet werden. Viel komfortabler ist es aber, dies auf einer grafischen Oberfläche zu machen. Ich habe mich da für Webmin entschieden und in den letzten Jahren keine Probleme damit gehabt. Darum werde ich Webmin auch auf dem neuen Server wieder einsetzen.

Webmin is a web-based interface for system administration for Unix. Using any browser that supports tables and forms (and Java for the File Manager module), you can setup user accounts, Apache, DNS, file sharing and so on. (Quelle:http://www.webmin.com/intro.html).

Alternativ zu einer manuellen Installation, kann man Webmin wie hier beschrieben auch über das Paketverwaltungstool “apt” verwalten. Dazu muss man in /etc/apt/sources.list die Zeile für das Repository eintragen. Ich verwende als Editor dazu nano.

Also nano mit “sudo nano /etc/apt/sources.list” starten und ganz zuunterst die Zeile  
deb http://download.webmin.com/download/repository sarge contrib
hinzufügen.

image

image

Wenn man nun mit ctrl+x nano verlässt, wird man noch gefragt, ob man die Änderungen speichern möchte, was man mit y bestätigt.

image

Zum Speichern muss man dann noch den Dateinamen mit der Entertaste bestätigen.

image

Damit man nachher nicht bei jedem apt-get update eine Fehlermeldung wegen dem fehlenden PGP-Schlüssel erhält…

image

…kann man den fehlenden Schlüssel mit
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

installieren. Die mit wget heruntergeladene Schlüsseldatei kann nach dem Import wieder gelöscht werden.

Nun kann webmin normal mit apt installiert werden.
sudo apt-get update
sudo apt-get install webmin

image

Nach erfolgreicher Installation kann man sich mit Webmin über https://server-ip-adresse:10000 verbinden.

image

Obwohl ja viele Administratoren webmin verwenden, ist es eine zusätzliche Anwendung, die auch angegriffen werden könnte. Sicher macht es daher Sinn, webmin wie alle anderen Anwendungen aktuell zu halten. Zusätzlich kann man den Port 10’000 für den Zugriff auf webmin vom Internet her auf der Firewall geschlossen lassen.

Linux auf Hyper-V-Cluster

Wir betreiben ja in unserer DMZ immer noch unseren eigenen Webserver. Da wir als Ersatz für unsere alten Server einen Hyper-V-Cluster/Failovercluster gekauft haben, wollte ich auch den alten Webserver durch einen virtuellen Server auf dem Cluster ersetzen.

Netzwerk
Damit der Webserver weiterhin in der DMZ und nicht im internen Netzwerk steht, muss man ihm einen eigenen Netzwerkanschluss auf den Hyper-V-Hosts zuweisen, der für nichts anderes benutzt wird.

image

Diesen kann man dann mit der DMZ bei der Firewall verbinden. Somit ist gewährleistet, dass der ins Internet exponierte Webserver durch die Firewall vom Rest des internen Netzwerks getrennt ist.

Installation
Um den neuen Server zu installieren, kann man im Failovercluster-Manager “Virtuelle Computer…” –> “Neuer virtueller Computer…” erstellen und den Clusterknoten auswählen, auf dem dieser primär laufen soll.

Als Speicherort muss das CSV (Cluster Shared Volume) ausgewählt sein, auf das alle Clusterknoten Zugriff haben.

image

Für Linux muss Generation 1 ausgewählt werden.

image

Der Arbeitsspeicher kann auch später jederzeit angepasst werden.

image

Hier muss nun eben der Netzwerkadapter ausgewählt werden, der ausschliesslich für die DMZ verwendet und auch so verbunden wird.

image

Für die virtuelle Festplatte habe ich die Standardwerte verwendet.

image

Für den Webserver verwende ich wieder Ubuntu Server in der LTS (long time support) Version, den ich schon für den alten Webserver benutzt habe.

image 

image

Am Schluss bekommt man eine Warnung wegen der virtuellen DVD. Das ISO ist nicht auf dem CSV abgelegt, somit kann die Maschine kein Failover durchführen, da der Pfad auf dem zweiten Knoten nicht verfügbar wäre. Dies macht aber nichts, da ich die DVD nach der Installation eh entferne.

image

Nun kann man den Server starten und installieren.

image   image

Als Land habe ich Schweiz ausgewählt, als Tastaturmodell “ch”. Danach muss man in vielen Dialogen das Netzwerk manuell einrichten, einen Rechnernamen vergeben und ein Benutzerkonto anlegen. 

Jetzt kann man die Festplatten partitionieren lassen.

image

Aktualisierungen sollen nicht automatisch installiert werden, das möchte ich lieber manuell ausführen und kontrollieren.

image

Im nächsten Dialogfeld kann man zusätzliche Software-Sammlungen installieren. Für die Webseite benötige ich den LAMP Server (LAMP steht für Linux, Apache, MySQL, PHP). Der OpenSSH Server wird für einen Zugang auf die Konsole benötigt. Der Mailserver wird benötigt, damit der Inhalt von Formularen als Mail verschickt werden können. Mit Samba biete ich einen Zugang über eine Windowsfreigabe an. So können auf einen Rutsch z.B. sehr viele Bilder auf den Webserver übertragen werden. Aus Sicherheitsgründen öffne ich auf der Firewall die Ports für SSH und Samba nur vom internen Netzwerk. Es soll möglichst nur das notwendigste vom Internet her erreichbar sein.

image

Für MySQL muss man nun noch ein Root Passwort vergeben und für Postfix werden die Mailinformationen abgefragt. Am Schluss muss man noch bestätigen, dass Grub in den MBR installiert werden darf.

image

Die CD wird automatisch “ausgeworfen”. Nun kann man neu starten.

image

Nach dem Neustart empfiehlt sich ein:

sudo apt-get update
sudo apt-get dist-upgrade

um den Server mit den neuesten Updates zu versorgen.