12Jan/151

Linux (Debian/Ubuntu): Backup

Hier beschreibe ich, wie Sie ein einfaches Backup Ihres kompletten Dateisystems erstellen und im Problemfall wiederherstellen können. Voraussetzung ist ein Linux-System mit root-Zugriff. Ob Dedicated Server oder VPS spielt keine Rolle.

Wichtig: Die aufgezeigten Befehle wurden unter Ubuntu 14.04 (64 Bit) getestet und sollten bei Debian genauso funktionieren. Bei anderen Distributionen wie CentOS muss der eine oder andere Befehl angepasst werden.

  1. Backup erstellenWir verwenden tar mit gzip-Kompression um den Inhalt der Systempartition zu archivieren. Spezielle Verzeichnisse werden ignoriert. In ihnen befinden sich keine relevanten Daten. Auch das MySQL-Verzeichnis wird nicht gesichert, aber dazu später mehr.Wir erstellen das Backup in einem separaten Verzeichnis, das ebenfalls ausgeschlossen wird. In diesem Beispiel zeige ich, wie der Contabo Backup-Speicherplatz via FTP genutzt wird.
    apt-get install curlftpfs
    curlftpfs USERNAME:PASSWORD@backup.contabo.net /mnt
    cd /mnt
    tar czf rootfs_backup.tar.gz --directory=/ --exclude=dev/* --exclude=proc/* --exclude=run/* --exclude=sys/* --exclude=tmp/* --exclude=var/lib/mysql/* --exclude=mnt/* .

    Das Backup kann auch temporär auf der lokalen Festplatte des Servers erstellt werden solange das Verzeichnis, in dem das Archiv erstellt wird, vom Backup ausgenommen ist. Es ist dennoch sehr empfehlenswert, das Archiv an einem anderen Ort zu sichern.

    Wir haben nun ein Abbild der kompletten Systempartition. Dieses Abbild kann verwendet werden, um den Server in seinem aktuellen Zustand jederzeit wiederherzustellen.

  2. Backup wiederherstellen Wir starten den Server in das Rettungssystem und loggen uns per SSH ein. Es ist wichtig, die passende Version auszuwählen, denn sonst schlägt das chroot-Kommando fehl. In der Regel stimmt 64 Bit. Für dieses Beispiel nehmen wir eine komplett leere Festplatte. Wir brauchen also zunächst eine neue Systempartition und gegebenenfalls noch eine Swap-Partition. Die Partition mit parted anlegen:
    parted /dev/vda mklabel msdos
    parted /dev/vda 'mkpart primary 1 -1'
    parted /dev/vda set 1 boot on
    mkfs.ext4 /dev/vda1

    Jetzt können wir die neu erstelle Systempartition und den Backup-Speicher einbinden:

    mount /dev/vda1 /mnt/custom
    curlftpfs USERNAME:PASSWORD@backup.contabo.net /mnt/backup

    Und zur eigentliche Wiederherstellung:

    cd /mnt/custom
    tar xzf /mnt/backup/rootfs_backup.tar.gz

    Nachdem das Archiv entpackt wurde, sind noch ein paar Anpassungen nötig, damit das System wieder boot-fähig wird. Dazu wechseln wir per chroot die Arbeitsumgebung:

    mount -o bind /dev /mnt/custom/dev
    mount -o bind /sys /mnt/custom/sys
    mount -t proc /proc /mnt/custom/proc
    chroot /mnt/custom /bin/bash

    Das System verwendet UUIDs, um Partitionen eindeutig zu identifizieren. Da wir eine neue Partition erstellt haben, müssen wir die neue UUID hinterlegen. Die finden wir mit diesem Kommando heraus:

    blkid

    Wir bearbeiten die /etc/fstab mit einem Texteditor, z.B. nano, und ersetzen die alte UUID durch die neue. Dann lassen wir eine neue GRUB-Konfiguration automatisch erstellen und installieren GRUB in den MBR:

    grub-mkconfig > /boot/grub/grub.cfg
    grub-install /dev/vda

    Wir verlassen die chroot-Umgebung mit exit und schließlich das Rettungssystem mit exitrescue. Nach einem Reboot sollte der Server wieder mit dem Stand des Backups laufen.

  3. Sonderfall MySQLMySQL-Datenbanken können nicht fehlerfrei direkt aus dem Verzeichnis gesichert werden während der MySQL-Server läuft. Hier kommt stattdessen mysqldump zum Einsatz:

    mysqldump -p --all-databases > db_backup.sql

    Das Kommando sollte vor dem Erstellen des Backup-Archivs ausgeführt werden, damit die SQL-Datei im Archiv enthalten ist. Mit diesen Befehlen wird die Datenbank wiederhergestellt sobald der Server wieder regulär läuft:

    mysql_install_db
    service mysql start
    mysql < db_backup.sql
    service mysql restart

Wie Sie sehen genügen ein paar Befehle, um nicht nur die wichtigsten persönlichen Daten, sondern das komplette Dateisystem inklusive aller Einstellungen zu sichern. Regelmäßig durchgeführt schützt ein funktionierendes Backup vor längeren Ausfallzeiten und - noch viel wichtiger - vor Datenverlust.

Denken Sie daran: Daten ohne Backup sind unwichtige Daten!

Posted by: Tino | Tagged as: , , , 1 Comment
25Nov/130

cPanel/WHM: Empfohlene Einstellungen

Unsere dedizierten Server und VPS mit cPanel erfreuen sich bei Ihnen stetiger Beliebtheit. Dank des einfach zu bedienenden Administrationspanels können auch Linux-Einsteiger Ihre Webseiten auf einem eigenen leistungsstarken System betreiben. Shell-Zugriff ist nur in den seltensten Fällen notwendig, denn meist können alle Server-relevanten Einstellungen direkt in WHM vorgenommen werden.

Wir liefern unsere cPanel-Server mit einer funktionierenden Grundkonfiguration aus, die komplett automatisiert erfolgt. Die meisten Einstellungen entsprechen den vorgegebenen Standardwerten, einige Punkte wurden ergänzt, um den Betrieb überhaupt zu ermöglichen. Ich möchte Ihnen hier die Punkte aufzeigen, die direkt nach der Installation wichtig sind.

Die nachfolgenden Schritte werden im WHM des Servers durchgeführt. Loggt euch auf der Adresse https://[Server-IP]:2087 als root ein, um zu beginnen.

Auch wenn Sie noch nicht mit der WHM-Oberfläche vertraut sind, finden Sie sich in der Regel schnell zurecht. Sehr praktisch ist die Suchleiste oben links, mit der Sie alle Funktionen schnell erreichen. Sie verhält sich ähnlich wie die Windows-7-Startmenüsuche.

cpanel_suche

  1. Wir beginnen auch gleich mit dem Punkt Basic cPanel & WHM Setup.
    1. Als erstes fällt die standardmäßig gesetzte Kontakt-E-Mail-Adresse auf. Diese sollte durch Ihre eigene E-Mail-Adresse ersetzt werden, damit Sie über Vorgänge auf dem Server informiert bleiben. cPanel gibt sich sehr informativ, ein eigenes Postfach ist daher sinnvoll.
    2. Ganz unten auf der selben Seite sind die Standard-Nameserver festgelegt. Wir tragen hier unsere Nameserver ein. Domains, die wir zur Verfügung stellen, funktionieren damit direkt auf dem Server. Wenn die Domains auf anderen Nameservern betrieben werden, können jene hier eingetragen werden.
  2. Wir machen weiter im Menü Configure Remote Service IPs. Interessant ist der Tab Remote Name Server IPs. Hier werden die IP-Adressen derjenigen Nameserver eingetragen, die für Addon-Domains verwendbar sind. Auch hier sind unsere Nameserver eingetragen. Wer alle Domains von uns bezieht, muss hier also nichts ändern. Ansonsten können beliebig viele Nameserver-IPs in die Liste aufgenommen werden. Addon-Domains von fremden Nameservern können in cPanel nicht hinzugefügt werden.
  3. Als nächstes gehen wir zu Change Hostname. Der Standard-Hostname löst nicht auf die IP des Servers auf. Das kann zu Problemen beim Mailversand führen. Daher sollte ein funktionierender Hostname gesetzt werden. Der erste Teil kann übernommen werden, als Domain sollte einfach eine eigene Domain eingetragen werden, die auf dem Server verwendet wird, also z.B.: "vmd1234.domain.de".
  4. Ebenfalls wichtig für den reibungslosen E-Mail-Versand ist ein korrekt gesetzter RDNS-Eintrag, welcher in unserem Kundenlogin gesetzt werden kann. Hier wird die Eintragung genau umgekehrt vorgenommen, sprich die IP wird zum Hostnamen zugeordnet. In unserem Beispiel muss der PTR der Server-IP also "vmd1234.domain.de" lauten.
    Update 19.12.2014: Wir setzen mittlerweile als Standard einen Hostnamen in der contabo.host-Zone, der richtig auflöst. An dieser Stelle sind also keine Anpassungen nötig.

Damit ist alles vorbereitet und der cPanel-Server kann im vollen Leistungsumfang verwendet werden. Weiteres Hilfsmaterial finden Sie in dieser umfangreichen englischsprachigen Dokumentation.

Posted by: Tino | Tagged as: , , , , , , No Comments
9Oct/130

Neues vom ASI

Unsere Server- und VPS-Kunden mit Windows Server Betriebssystem können sich über ein neues Installationsverfahren freuen, das heute freigegeben wurde. Die deutlichste Verbesserung ist die stark verkürzte Installationsdauer. Ein Dedicated Server X mit 1 Gbit/s-Port ist in gerade mal fünf Minuten installiert. Weitere technische Verbesserungen erleichtern außerdem die Verwaltung für uns.

Selbstverständlich bleiben alle Vorzüge unseres automatisierten Installationssystems (ASI) erhalten. Es ist keinerlei Interaktion während der Installation nötig. Der Server erhält automatisch die zugewiesene IPv4 und IPv6-Adresse und ist sofort nach der Installation per RDP erreichbar. Wichtige Sicherheitsupdates werden ohne Aufforderung heruntergeladen und über Nacht installiert.

Mit dem neuen Verfahren sind wir ausgezeichnet für die Zukunft gerüstet. Das kommende Windows Server 2012 R2 wird voraussichtlich kurz nach dem offiziellen Erscheinungstermin auch bei uns verfügbar sein.

Posted by: Tino | Tagged as: , , No Comments
31Jul/130

System Rescue CD: Erste Schritte

sysresccd login

Viele von Ihnen haben vielleicht schon davon gehört oder sogar Gebrauch gemacht, für die Meisten ist dieses Thema aber wohl Neuland: Unser Rettungssystem! Während man normalerweise hoffentlich nicht darauf angewiesen sein wird, gibt es zahlreiche Situationen in denen es perfekt geeignet ist, um den Server schnell wieder online zu bringen. Bei Ausfällen zählt jede Sekunde. Umso wichtiger ist es, vorab zu wissen, was zu tun ist. Daher hier erst mal ein paar grundlegende Informationen:

Das Rettungssystem basiert auf der SystemRescueCd, was nichts anderes als eine speziell für Notfälle entwickelte Linux-Distribution ist. Ich kann Ihnen das System auch für den Alltag nur empfehlen. Ein bootfähiges Image habe ich immer auf einem USB-Stick dabei ;). Auf unseren Servern lädt das Rettungssystem über das Netzwerk (PXE). Das hat mehrere Vorteile:

  • Es steht in jedem Fall zur Verfügung, solange der Server eine Netzwerkverbindung hat.
  • Es ist immer mit den gleichen, bekannten Zugangsdaten erreichbar.
  • Es startet unabhängig von Betriebssystem und dessen Einstellungen.

Das Rettungssystem kann im Loginbereich für Server oder VPS ausgewählt werden. Nach Klick auf das entsprechende Symbol erscheint noch ein Infotext mit der Versionsauswahl. Es sollte die selbe Version wie das installierte Betriebssystem verwendet werden. In der Regel ist das 64 bit. Sobald man auf "Rettungssystem starten" klickt, startet der Server automatisch neu.

Nach wenigen Minuten steht das System dann über SSH auf der Server-IP und dem Standardport 22 zur Verfügung. Das root-Passwort ist das, welches Sie in der Willkommens-E-Mail mit den Zugangsdaten erhalten haben. Als Clients für Windows eignen sich PuTTy (Kommandozeile) oder WinSCP (Datentransfer).

In der Regel wird Zugriff auf die Daten des Servers benötigt. Vorab schauen wir also mal, was für Partitionen überhaupt vorhanden sind:

fdisk -l

Normalerweise findet man die Systempartition auf /dev/sda2, bzw. /dev/vda2. Mit folgendem Befehl wird die Partition dann eingebunden:

mount /dev/sda2 /mnt/custom

Die Daten sind jetzt in /mnt/custom verfügbar.

Falls Windows als Betriebssystem auf dem Server verwendet wird, kann das Rettungssystem trotz unterschiedlicher Architektur durchaus hilfreich sein. Die Partition C: liegt in der Regel auf /dev/sda2, bzw. /dev/vda2. Mit folgendem Befehl wird sie mit Schreibzugriff eingebunden:

ntfs-3g /dev/sda2 /mnt/windows

Man kann nun beispielsweise Konfigurationsdateien per Texteditor bearbeiten, oder wichtige Dateien auf den lokalen PC sichern. Für diese Zwecke ist WinSCP wirklich bestens geeignet.

Hat man seine Arbeit abgeschlossen und möchte den Server wieder normal neu starten, gibt man folgende Befehle ein:

exitrescue
reboot

Danach sollte der Server wieder von der Festplatte starten und regulär erreichbar sein.

Das soll nur eine grobe Einführung gewesen sein. Es ist generell empfehlenswert, sich mit den Möglichkeiten der Shell vertraut zu machen. Das ubuntuusers.de Wiki ist auch hier sehr hilfreich.

Weitere Anleitungen für bestimmte Anwendungsfälle folgen, also bleiben Sie dran!

 

Posted by: Tino | Tagged as: , , , , No Comments
15Jul/136

Rewrite Rules mit htaccess

Contabo Webspace XXLEine oft gestellte Frage betrifft überwiegend unsere Webspace-Pakete, ist aber mit Sicherheit für viele interessant:

Wie kann ich den Inhalt meiner Hauptdomain in einen Unterordner ablegen, ohne dass der Besucher einen Unterschied sieht?

 

Das Problem ist, dass cPanel einem Account genau eine Domain als Haupt-Domain zuweist. Addon-Domains können zwar hinzugefügt werden, landen in der Ordnerstruktur aber einfach unterhalb des Ordners der Haupt-Domain. Das sieht dann z.B. so aus:

  • /
    • public_html/
      • admin/
      • config/
      • data/
      • testdomain2.de/
        • admin/
        • config/
        • data/
        • themes/
        • index.php
      • themes/
      • index.php

Das kann bei mehreren Addon-Domains schnell sehr unübersichtlich werden. Besser wäre, die Hauptdomain auch in einen eigenen Ordner zu verlagern. Genau hier fehlt leider eine Option in cPanel. Glücklicherweise ist das auch gar nicht nötig, denn mittels Rewrite Rule in der .htaccess-Datei können Sie selbst festlegen, wo sich der Inhalt der Haupt-Domain befinden soll.

Idealerweise beginnen Sie mit einem frisch aufgesetztem Webspace-Paket. Ansonsten gilt die Faustregel, zunächst ein Backup aller Daten zu erstellen, um bei Problemen den ursprünglichen Zustand wiederherstellen zu können. Hier erweist sich der cPanel-Sicherungsassistent als nützlich.

Die folgenden Schritte können bequem per FTP-Client erledigt werden.

Wenn bestehende Daten übernommen werden sollen, legt man zunächst einen neuen Ordner in /public_html an und benennt ihn nach der Domain, also z.B. testdomain.de. Dorthin verschiebt man alle Dateien und Ordner, die zu der Seite gehören. In unserem Beispiel sind das die Ordner admin, config, data, themes und die Datei index.php. Falls bereits eine .htaccess-Datei vorhanden ist, wird diese auch dorthin verschoben.

Als nächstes muss eine neue .htaccess-Datei in /public_html angelegt werden. Diese öffnet man mit einem Editor und fügt folgende Zeilen ein:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^testdomain.de$ [OR]
RewriteCond %{HTTP_HOST} ^www.testdomain.de$
RewriteCond %{REQUEST_URI} !^/testdomain.de
RewriteRule ^(.*)$ testdomain.de/$1 [L]

testdomain.de ist durch den eigentlichen Domain-Namen zu ersetzen.

Nachdem die Datei gespeichert wurde, kann man die Domain bereits im Browser aufrufen. Die Seite sollte korrekt angezeigt werden.

Der nächste Schritt hängt von der verwendeten Software ab. In diesem Beispiel wird die Vorgehensweise für Joomla! 3 und WordPress erläutert.

Meistens werden die URLs auf einer Seite relativ zum Speicherort generiert. Nach unserer Änderung würden Unterseiten also nach folgendem Schema in der Browser-Adresszeile angezeigt werden:

http://testdomain.de/testdomain.de/index.php

Um das zu korrigieren, muss in der Joomla!-Konfiguration die Basis-URL absolut festgelegt werden. Dazu wird folgende Zeile in der configuration.php bearbeitet:

public $live_site = 'http://www.testdomain.de/';

Unter Umständen muss für die Datei configuration.php vorab Schreibrecht gewährt werden.

Wenn in Joomla! URL Rewriting aktiviert wurde, muss noch in der .htaccess-Datei im Unterordner der Domain folgende Zeile bearbeitet werden:

RewriteBase /testdomain.de

Die Raute am Zeilenanfang muss unbedingt entfernt werden.

WordPress lässt sich analog in der Konfigurationsdatei wp-config.php anpassen:

define('WP_HOME','http://testdomain.de');
define('WP_SITEURL','http://testdomain.de');

Die Änderungen sind damit nach außen komplett transparent. Die Seite ist wie gewohnt unter der Domain erreichbar. Die neue Ordnerstruktur ist deutlich übersichtlicher:

  • /
    • public_html/
      • testdomain.de/
        • admin/
        • config/
        • data/
        • themes/
        • index.php
      • testdomain2.de/
        • admin/
        • config/
        • data/
        • themes/
        • index.php
      • .htaccess

Das ist nur eine der vielen Möglichkeiten, die Rewrite Rules bieten. Wer mehr über dieses komplexe Thema erfahren möchte, wird unter anderem hier fündig.

Posted by: Tino | Tagged as: , 6 Comments