SSH Port Tunnel aufmachen (Mac OSX/Linux/UNIX)

Manchmal kann es ganz nützlich sein einen Port Tunnel zu einem SSH Server zu machen. In meinem Artikel PostgreSQL Server auf Ubuntu installieren konfigurieren wir PostgreSQL so, dass von ausserhalb des Servers kein Zugriff auf den PostgreSQL Server stattfinden darf. Nun möchte ich doch ab und an mal mit einem SQL Tool wie Navicat, DbVisualizer, usw. auf die Datenbank zugreifen. Eine Möglichkeit wäre den Port für meine Maschine auf dem Server frei zu schalten. Doch das ist nicht immer gewünscht.

Nun können wir lokal einen Port Tunnel aufmachen und das geht folgendermassen:

$ ssh -f user@mydomain.com -L <port>:<remote host>:<remote port> -N

Parameter:
-f                 Bewirkt dass der Befehl im Hintergrund ausgeführt wird. 
                   Somit wird das Terminal nicht blockiert.
                   Achtung: Der Tunnel bleibt somit so lange geöffnet bis
                   ihr die Netzverbindung kappt oder den SSH Prozess 
                   abschiesst. Lasst den Befehl weg und ihr könnt mit 
                   <Ctrl>+C den Tunnel wieder schliessen
user@mydomain.com  Der Benutzername und den Host zu dem ihr die Verbindung
                   herstellen wollt.
-L                 Befehl zum erstellen des Port Tunnels
<port>             Lokaler Port unter welchem ihr den Zielport 
                   erreichen könnt
<remote host>      Host zu dem der Tunnel auf dem Server hergestellt 
                   werden soll
<remote port>      Port zu dem der Tunnel auf dem Server hergestellt 
                   werden soll
-N                 Wir wollen auf dem Zielserver keinen Befehl ausführen 
                   sondern nur die Portweiterleitung aktivieren

Für PostgreSQL Server würde das ungefähr so aussehen:

$ ssh -f marcel@metawave.ch -L 5432:localhost:5432 -N

bei einem MySQL Server so:
$ ssh -f marcel@metawave.ch -L 3306:localhost:3306 -N

Nach eingeben des Passworts wird der Tunnel über SSH aufgebaut. Nun können wir auf der lokalen Maschine auf die Datenbank zugreifen als wäre sie auf der lokalen Maschine vorhanden. In der Software mit der wir auf die Datenbank zugreifen wollen geben wir nun als Host “localhost” an und der Port 5432 (wenn nicht schon vorgegeben). Mit einem gültigen Benutzernamen und Passwort können wir somit auf die Datenbank zugreifen.

Wie ihr seht ist es manchmal gar nicht nötig die Datenbank anders zu konfigurieren nur damit ihr darauf zugreifen könnt. Ein weiterer Vorteil besteht auch darin dass die gesamte Kommunikation zwischen Server und eurer Maschine komplett verschlüsselt wird. So entfällt auch eine SSL/TLS Verbindungskonfiguration wenn ihr dies bei der Datenbank Software konfigurieren wollt.

PostgreSQL Server auf Ubuntu installieren

PostgreSQL ist einer der umfangreichsten Open Source Datenbank Server überhaupt. Früher behauptete man, dass PostgreSQL nicht performant ist. Dies ist seit den neueren Versionen > 8.0 sicher nicht mehr der Fall. Es gibt viele Vergleiche zwischen PostgreSQL und MySQL und was nun besser ist. Ich denke dass beide Systeme ihre Vor- und Nachteile haben. MySQL bietet mehrere Datenbank-Engines (MyISAM, InnoDB, usw.) welche auf bestimmte Anforderungen optimiert sind. Unter der Verwendung der richtigen Engine zu einem bestimmten Problem, ist MySQL sehr schnell. Dafür muss man aber teilweise auf gewisse Features wie:

  • Foreign-Keys
  • Constraints
  • Trigger
  • Transactions
  • usw.

verzichten, dafür erhält man eine sehr gute Performance. PostgreSQL besitzt nur eine Datenbank Engine, diese besitzt im Vergleich dazu ähnliche Features wie die InnoDB Engine von MySQL, naja eigentlich von InnoDB welches von Oracle gekauft wurde.

PostgreSQL ist in der Administration etwas anders aufgebaut als MySQL. Vor allem das Benutzer-/Berechtigungskonzept ist anders. Wer jedoch mit Enterprise Datenbanken wie Oracle gearbeitet hat, wird sich sicher schnell eingewöhnen können.

Wer PostgreSQL verwendet wird einen sehr guten Datenbank Server haben der im Gegensatz zu MySQL auch vernünftige Fehlermeldungen wirft und nicht nur Fehlernummer 9xxxx ;-)

Auf den nächsten Seiten werde ich beschreiben wie man zu einem PostgreSQL Server kommt.

Apache und Tomcat mit mod_jk auf Ubuntu

Wenn man einen Webserver hat, läuft dort meistens ein Apache Service. Möchte man nun dort auch Java Web Applikationen laufen lassen muss ein J2EE Container her. Einer der bekanntesten ist hier Tomcat, da er zudem auch kostenlos ist. Läuft nun ein Tomcat, verwendet dieser auch verschiedene Ports (Standardmässig Port 8080). Dies ist jedoch nicht immer erwünscht, da es in Verbindung mit Firewalls in einigen Firmen zu Problemen beim Zugriff auf die Seiten kommen kann. Viel praktischer wäre es doch wenn wir die Tomcat Java Web Applikationen auch auf dem Standard-Port 80 anbieten könnten, ohne aber den Apache zu ersetzen.

Auf dieses Problem bin ich vor einiger Zeit auch gestossen. Darum habe ich mich mal auf die Suche nach Informationen begeben und es schlussendlich geschafft Tomcat mit Apache laufen zu lassen.

Diese Anleitung sollte bei einem vServer von Host-Europe direkt funktionieren, bei anderen Servern müssen ggf. einige Pfade angepasst werden, nehmt dazu die Hilfe eures Anbieters oder der Linux-Distribution zu Hilfe.

Plesk auf anderem Port als Subdomain

Plesk läuft häufig auf einem nicht Standard-Port, also bsp. 8443. Bei Host-Europe ist dies ebenso der Fall. Ich möchte aber lieber auf einer Subdomain, also bsp. plesk.meinedomain.ch auf mein Plesk Panel zugreifen können, dies auch weil bei bestimmten Firewall/Proxies dieser Port gesperrt ist.

Die wahrscheinlich einfachste Möglichkeit ist es mit mod_proxy des Apache die Anfragen auf plesk.meinedomain.ch an einen anderen Port weiterzugeben.

Wie man dies bewerkstelligt möchte ich nun anhand eines Beispiels auf einem Ubuntu Server aufzeigen.

Voraussetzung: Erstellen einer Subdomain (Virtual Host) plesk in meinedomain.ch

Umzug zu Host Europe

Nach langer Suche bin ich auf einen tollen Anbieter von vServern gestossen. Mein Ziel war es einen vServer zu finden der weniger als 25 sFr. pro Monat kostet. In der Schweiz sind die Anbieter von vServern sehr dünn gesäht oder kosten deutlich über 30 sFr pro Monat. Anders siehts bei unserem nördlichen Nachbarn aus. Da gibt es einige interessante Angebote von Strato, Server4you oder eben Host Europe.


Full Banner Virtual Server

Das Angebot von Host Europe hat mich überzeugt. Ein VServer mit 50GB, 1GB Arbeitsspeicher, Trafic-Flat für nur 12.99 €. Nach Umrechnung der Deutschen- in die Schweizer Mehrwertsteuer macht es 10-11€ was momentan ca. 15 sFr. pro Monat entspricht. Das Ziel meiner Suche wurde somit deutlich übertroffen!

Bin nun seit ca. 2 Monaten komplett zu meinem Host-Europe Server gezogen und bin bisher sehr zufrieden mit der Leistung (Performance und Netz-Anbindung). Ich kann das Angebot also nur weiterempfehlen, bei Interesse klickt doch auf den obigen Banner!

Da ich nun einen eigenen Server habe, lassen sich tolle Dienste/Software wie Subversion (Versionsverwaltung), Django (Python-Framework), Trac uvm. einrichten. Über meine Errungenschaften bei der Einrichtung einiger Dienste/Dinge werde ich im Blog weiter berichten.

CrossOver in einem Shell Script verwenden unter MacOS X

Hin und wieder erstelle ich bash-Scripts um gewisse Dinge zu automatisieren. Dabei kann es auch sein dass ich mal ein Programm verwenden möchte das nur unter Windows verfügbar ist. Eine Möglichkeit ist das mit wine zu realisieren (Über MacPorts oder Fink installieren). Wenn man jedoch nicht extra noch eine wine Installation neben der CrossOver Installation haben möchte liegt es doch nahe das gleich mit CrossOver zu machen.

Nach einigen Anfangsschwierigkeiten (wie starte ich CrossOver aus der Shell?) hab ich es nun hingekriegt. Folgend nun ein Script-Schnippsel um das zu veranschaulichen:

# CrossOver starten, sonst wird der X11 Server von CrossOver beim ausführen von wine nicht gefunden
open -a CrossOver

# Jetzt setzen wir ein paar Variablen die für das Ausführen vom CrossOver wine Script benötigt werden
export 'DYLD_FALLBACK_LIBRARY_PATH'='/Applications/CrossOver.app/Contents/SharedSupport/X11/lib:/Users//lib:/lib:/usr/lib:/usr/X11/lib'
export 'FONTCONFIG_ROOT'='/Applications/CrossOver.app/Contents/SharedSupport/X11'
export 'FONTCONFIG_PATH'='/Applications/CrossOver.app/Contents/SharedSupport/X11/etc/fonts'
export 'FONT_ENCODINGS_DIRECTORY'='/Applications/CrossOver.app/Contents/SharedSupport/X11/lib/X11/fonts/encodings/encodings.dir'
export 'VERSIONER_PERL_PREFER_32_BIT'='yes'
export 'CX_BOTTLE_PATH'='/Users//Library/Application Support/CrossOver/Bottles'
export 'CX_ROOT'='/Applications/CrossOver.app/Contents/SharedSupport/CrossOver'
export 'CX_BOTTLE'='winxp' # <-- Hier kann das Bottle angegeben werden in welchem das Programm ausgeführt wird!

# Die DISPLAY Variable bestimmen wir zur Laufzeit, diese kann sich gelegentlich ändern
export 'DISPLAY'=':'$(defaults read com.codeweavers.CrossOver Display)

# Nun erweitern wir die PATH Variable (Ganz am Anfang, da ja man ja möglicherweise noch eine wine Installation nebenher haben möchte)
export 'PATH'='/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/bin:'$PATH

# Nun kann wine aufgerufen werden
wine <Pfad zur .exe> <Parameter>

Nun müssen noch die Platzhalter oben durch den aktuellen Benutzernamen ersetzt werden (bsp. per Script) und dann sollte alles funktionieren.

Samsung PB22-J SSD

Habe mir nun auch eine SSD in mein MacBook geschraubt. Das Austauschen der Harddisk in einem MacBook Pro 4.1 (early 2008) ist die Hölle. Dank der Anleitung (aptgetupdate.de) wusste ich welche schrauben zu lösen sind. Habe noch nie gesehen dass  man etwas einfaches wie das Austauschen einer Harddisk so komplex verbauen kann. Um nicht ein Kabelband auszureissen muss man die obere Seite (mit Tastatur) sehr vorsichtig anheben. Das Kabelband welches auf die Festplatte geklebt ist, muss man mit einem Messer ganz vorsichtig ablösen (feine Hebelbewegung mit der Klinge).

Danach Leopard DVD rein und dann die Partition mit meiner Timemachine Sicherung wiederherstellen. Moment, wo ist meine neue Festplatte? Die kommt bei der Widerherstellung gar nicht zur Auswahl. Als erstes muss die Harddisk mit dem “Disk Utility” partitioniert werden, erst dann kann man eine Partition von der TimeMachine Sicherung wiederherstellen. Nach ca. 1 Stunde war die Sicherung zurückgespielt und dann der erste Start. Kurz nach dem Auftauchen des Apple Logos schon das Login, dann eingeloggt. Einige wenige Sekunden später ist das System vollständig da.

Nun dauert das Aufstarten mit Einloggen noch knappe 20 Sekunden (mit Passwort eintippen). Das Starten der Applikationen geht nun auch viel schneller. Word 2008 usw. hat nun statt den 30 sekunden nur noch 2-5 sek. also endlich Vergleichbar zu einer Windows-Maschine.

Fazit:
Aufgrund des relativ hohen Preises von ca. 740 Fr. ist das wirklich nur was für Freaks. Aber es macht auch mehr Spass auf dem Computer zu arbeiten, da generell alles ein bisschen schneller wird.

Willkommen!

Dieser Blog veröffentlicht Erfahrungen und Tipps zu den Dingen für die ich mich grad interessiere…

Zu einem grossen Teil werden dies sicher technische Dinge sein, also Software/Programmierung