Aktuelle mysql-Version für Uberspace kompilieren

Auf Uberspace.de kann es passieren, dass die installierte MySQL-Version veraltet ist und man eine aktuellere Version verwenden möchte. Hier die Schritte um das zu realisieren.

In Kürze bedeutet es: CentOS installierenMySQL kompilierenkompilierte Version von MySQL zu Uberspace übertragenMySQL einrichtenStartscripte erstellenz.B. in WordPress verwendenaufräumenBackup einrichten

Ich benutze folgende beispielhafte Konventionen in dieser Anleitung:

  • grobi: der Username auf uberspace.de
  • enif: der Servername auf dem der Uberspace-Account liegt. Alle Server haben Namen von Sternen oder Sternbildern. Z.B. hamal.uberspace.de oder capella.uberspace.de
  • ich verwende hier CentOS 6.6
  • ich installiere hier im Beispiel die MySQL-Version 5.6.24
  • ich installiere die Version nach ~/.mymysql
  • die MySQL-Version soll auf Port 33306 laufen

CentOS installieren

Zuerst finden wir raus, welche CentOS auf uberspace läuft. Also per SSH verbinden und dieses Kommando absetzen:

> cat /etc/redhat-release
CentOS release 6.6 (Final)

Also laden wir erstmal die Version herunter: Minimal ISO 64 Bit von http://wiki.centos.org/Download. Danach diese Version installieren, z.B. in eine VirtualBox VM.

  • Deutsches System
  • Rechnername: enif (siehe oben)
  • Netzwerk konfigurieren: eth0 bearbeiten → Automatisch verbinden
  • Zeitzone: Berlin

Nach der Installation loggen wir uns als root ein und richten einen Account für grobi ein:

> adduser grobi
> passwd grobi

MySQL kompilieren

Jetzt als root ein paar Pakete installieren:

> yum install wget cmake gcc-c++ ncurses-devel

Wir loggen uns als grobi ein, damit wir beim kompilieren auch ja nicht in den Genuss von root-Rechten kommen, denn die haben wir ja auf Uberspace auch nicht. Nicht dass da was passiert, was uns nachher - als normaler User - das Genick bricht.

> sudo su - grobi

Nun laden wir die gewünschte MySQL als Sourcen herunter:

  • per Browser auf einem anderen Rechner auf http://dev.mysql.com/downloads/mysql/ gehen
  • "Source Code" und "Generic Linux" auswählen
  • bei "Compressed TAR Archive" auf Download klicken
  • auf der nächsten Seite den Link "No thanks, just start my download." kopieren
  • im CentOS mit wget die Sourcen runterladen, entpacken und ins Verzeichnis wechseln. Z. B.:

> wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.24.tar.gz
> tar xzf MySQL-5.6.24.tar.gz
> cd mysql-5.6.24

Zum kompilieren müssen wir ein paar Optionen mitgeben (mehr hier: http://dev.mysql.com/doc/mysql-sourcebuild-excerpt/5.5/en/source-configuration-options.html) und dann geht's los:

> cmake -DCMAKE_INSTALL_PREFIX=/home/grobi/.mymysql/ -DSYSCONFDIR=/home/grobi/.mymysql/
> make
> make install

zu Uberspace übertragen

MySQL 5.6 ist nun im Verzeichnis /home/grobi/.mymysql installiert. Wir übertragen das ganze Verzeichnis in unser $HOME auf Uberspace. Z.B. mit scp:

> cd
> tar czf mymy.tgz .mymysql/
> scp mymy.tgz grobi@enif.uberspace.de: # nicht den Doppelpunkt am Ende vergessen

Es sind ca. 1 GB Daten - gepackt ein Viertel davon. Keine Ahnung, was davon alles wirklich benötigt wird... Vielleicht fummel ich das später mal raus ...

Fahr dein CentOS jetzt runter, es frisst nur Strom.

MySQL einrichten

Unser selbst installiertes CentOS hat jetzt ausgedient. Wir brauchen es nicht mehr. Eigentlich. Wenn du eventuell noch ein paar andere Optionen beim Kompilieren ausprobieren willst, solltest du es noch nicht wegwerfen.

Wir loggen uns erstmal per ssh auf unserem Uberspace ein, entpacken die übertragene Datei und wechseln ins Installationsverzeichnis

> ssh grobi@enif.uberspace.de
> tar xzf mymy.tgz
> cd .mymysql/

Next step: Wir erstellen hier die Datei my.cnf mit diesem Inhalt:

[mysqld]
socket=
port=33306
datadir=/home/grobi/.mymysql/data/
tmpdir=/tmp/

[mysql]
socket=
port=33306
protocol=TCP

Wir erstellen jetzt die Systemtabellen und können dann unseren MySQL-Server starten:

> scripts/mysql_install_db --basedir=/home/grobi/.mymysql/
> bin/mysqld

Nun noch root-Passwort vergeben und ein paar Einstellungen machen (auf einer weiteren Konsole). Dazu muss die Datei bin/mysql_secure_installation angepasst werden, so dass korrekte Werte für port und protocol verwendet werden (dies kann bei MySQL 5.7 angeblich per Kommandozeile geschehen). MySQL 5.6: In der Funktion "sub make_config" fügen wir diese Werte hinzu (nur die 2. Zeile ist neu):

"passwort='$sec_pass'",
"socket=''", "port=33306", "protocol=TCP", # diese Zeile einfügen
"connect-expired-password");

Und ausführen:

> bin/mysql_secure_installation

  • current password: Enter
  • set root password: Y
  • remove anonymous users: Y
  • disallow root login remotely: Y
  • remove test database and access to it: Y
  • reload privilege tables now: Y

Ok! Wir haben fertig und die Datenbank läuft! Cool? Sehr cool!

Jetzt kann man mit

> bin/mysql --port=33306 -u root -p

das Client-Programm verwenden. Dafür sollte man sich einen Alias einrichten. Zum Beispiel so:

> alias mymy='/home/grobi/.mymysql/bin/mysql --port=33306'

Dies funktioniert bei mir ohne User / Password, weil in der schon vorhandenen ~/.my.cnf Passwort und User der alten MySQL-Version stehen. Ich habe für die 5.6er die gleichen Werte für User und Passwort ringerichtet.

Startscripte erstellen

Auch Uberspace-Server werden wohl ab und an mal neugestartet. Selten, aber wenn, dann soll unser MySQL beim hochfahren mitgestartet werden.

> uptime
05:58:35 up 301 days, 10:50, 0 users, load average: 0.29, 0.51, 0.50

Dazu müssen wir einen Service einrichten. Die ganze Anleitung dazu gibt es hier: https://wiki.uberspace.de/system:daemontools. Wir beginnen mit der Vorbereitung:

> test -d ~/service || uberspace-setup-svscan

Schreib jetzt ein Script ~/bin/mymysqld das den MySQL-Daemon startet und mach es ausführbar. Inhalt:

#!/bin/sh

exec ~/.mymysql/bin/mysqld

Die Startscripte erstellst du mit

> uberspace-setup-service mymysqld ~/bin/mymyslqd

Hier kannst du nachlesen, wie du ausprobierst, ob das Starten und Stoppen funktioniert (-u / -d / usw). Loggingausgaben kannst du dir mit

> tail -f ~/service/mymysqld/log/main/*

anzeigen lassen.

Beispiel: in WordPress verwenden

In WordPress musst du die DB_HOST Variable so setzen:

define('DB_HOST', '127.0.0.1:33306'); /* nicht localhost verwenden */

Aufräumen

  • dein selbst installiertes CentOS kann jetzt gelöscht werden
  • Datei mymy.tgz im Home deines Uberspace kann gelöscht werden

Backup einrichten

So! Nachdem nun alles sauber läuft, sollte man sich noch um den Backup kümmern. Denn auch wenn dein Server gesichert wird, ist es keine gute Idee, auf eine Dateisicherung des MySQL-Arbeitsverzeichnisses zu vertrauen. Hier im Beispiel machen wir einen MySQL-Dump in die Datei ~/.mymymsql/backup.dump.

~/.mymysql/bin/mysqldump --host=127.0.0.1 --port=33306 --all-databases > ~/.mymysql/backup.dump

Diesen Befehl in die crontab und gut ist. Denn die Datei backup.dump wird ja beim nächsten Backup mitgesichert.

Man beachte: während eines Dumps wird die Datenbank kurz gesperrt. Bei großen Datenbanken kann das natürlich zu Problemen führen (siehe auch hier).

Traffic per SSH über einen anderen Server umleiten

Willst du z. B. deine echte IP verschleiern (anonymisieren), kannst du deinen Traffic per ssh über einen anderen Server tunneln und am anderen Ende sieht es dann so aus, als wäre deine IP die des Servers.

Dazu installierst du zuerst das Tool sshuttle:

sudo apt-get install sshuttle

Danach startest du es folgendermaßen:

sshuttle --dns -v -r username@meinserver.de 0/0

Auf dem Server oder im Browser brauchst du nichts mehr einstellen, ab jetzt läuft jedweder Traffic über den Tunnel! Ich habe es mit meinem uberspace-Server ausprobiert: es klappt einwandfrei!

Testen kannst du das ganze z. B. mit http://www.whatismyip.com/

Uberspace: mehrere Domains aufschalten

Bei Uberspace.de kann man mehrere Domains auf seinen Server aufschalten. Dies sei hier an einem halbwegs echten Bespiel dargestellt:

  • Uberspace-Server: hamal.uberspace.de
  • Domain: koemtoria.de
  • Subdomain: www.koemtoria.de - soll das gleiche wie koemtoria.de beinhalten
  • Subdomain: blog.koemtoria.de - soll einen eigenen Webspace bekommen
  • Mail: abc@koemtoria.de als Catchall
  • Mail: weitere@koemtoria.de als weitere Absender-Identität für abc@koemtoria.de

Für weitere Domains einfach diesen Guide nochmal durchführen.

Domains in Uberspace registrieren

  • uberspace-add-domain -d koemtoria.de -w
  • uberspace-add-domain -d www.koemtoria.de -w
  • uberspace-add-domain -d blog.koemtoria.de -w

Alle drei dieser Befehle geben das gleiche aus. Dies sind die IP-Adressen, die beim Domainregistrar in die DNS-Einträge einzutragen sind.

Und fürs Mailing:

  • uberspace-add-domain -m -d koemtoria.de -e koemtoria

Mit der Option -e wird ein sog. Namespace fürs Mailing vergeben. Dieser ist beliebig, darf aber bestimmte Zeichnen nicht enthalten.

DNS-Einträge

Jetzt musst du zu deinem Domain-Registrar und dort das Erfassen, was die uberspace-add-domain Befehle ausgespuckt haben. Es sind also die A (=IPv4) und die AAAA (IPv6) Einträge vorzunehmen für:

  • koemtoria.de
  • www.koemtoria.de
  • blog.koemtoria.de
  • autoconfig.koemtoria.de - dient später deinem Mailprogramm zur automatischen Konfiguration
  • autodiscover.koemtoria.de - wie autoconfig

Bei manchen kann man auch einfach *.koemtoria.de als Domain angeben und hat somit gleich alle im Sack.

Außerdem muss noch der MX-Record (für Mail) angelegt werden.

  • Domain: koemtoria.de
  • Typ: MX
  • Prio bzw. Wert: 10
  • Server: hamal.uberspace.de

Jetzt heißt es: warten bis die DNS-Einträge global wirksam werden. Dies kann z. B. mit dem dig-Kommando überprüft werden. Und zwar nicht auf dem Uberspace-Server, da sie dort (glaube ich zumindest) sofort nach dem registrieren wirksam sind:

  • dig koemtoria.de A; dig koemtoria.de AAAA; dig koemtoria.de MX

dig gibt vor der IP-Adresse bzw. dem Mailserver auch eine bis zu 5-stellige Zahl aus. Dies sind die Sekunden, bis der jetzige DNS-Eintrag abläuft.

Verzeichnisse für Webspace anlegen

  • cd /var/www/virtual/$USER/
  • mkdir koemtoria.de
  • ln -s koemtoria.de www.koemtoria.de
  • mkdir blog.koemtoria.de

Jetzt kann man schon Web-Content in die Verzeichnisse packen: echo "ich bin da" > index.html

Mailadresse im Uberspace registrieren

Für meine Mailadresse abc@koemtoria.de ist dieser Befehl abzusetzen:

  • vsetup
  • vadduser koemtoria-abc

Der Name setzt sich zusammen aus dem Namespace koemtoria und dem Mail-User abc

Catchall einrichten

Mit dem folgenden Befehl landen alle Mails an koemtoria.de im Maildir des Users abc:

  • echo ./users/koemtoria-abc/ > ~/.qmail-koemtoria-default

Mailprogramm einrichten

Hier: mit Thunderbird.

IMAP

  • User: abc@koemtoria.de
  • Passwort: wie bei vadduser vergeben
  • Port: 993
  • Sicherheit: SSL/TLS, Passwort normal
  • Server: hamal.uberspace.de

SMTP

  • User: abc@koemtoria.de
  • Passwort: wie bei vadduser vergeben
  • Port: 587
  • Sicherheit: STARTTLS, Passwort normal
  • Server: hamal.uberspace.de

Weitere Identität in Thunderbird einrichten

  • Bei IMAP-Server-Einstellungen auf "weitere Identitäten" klicken
  • weitere@koemtoria.de als Mailadresse erfassen
  • abc@koemtoria.de als SMTP-Server auswählen