Bernhard Häussner
Tags: Artikel mit dem Tag «Webadministration» durchstöbern

YaSvenT - eine PHP-GTK-Anwendung

10.01.2009, 08:46

Zugegeben - PHP ist nicht unbedingt die beste Programmiersprache wenn es um Desktop-Anwendungen geht. Doch um einen Einstieg in GUI-Programmierung zu finden, wollte ich erstmal mit einer mir gut bekannten Programmiersprache anfangen. Und mit den Objekten von PHP5 ist der Unterschied zu z.B. Java auch nicht mehr allzu groß, wenn auch deutlich spürbar. Also habe ich mich daran gemacht ein GUI-Basiertes Server-Kontrollzentrum zu basteln.

Einmal konfiguriert kann es Backups von MySQL-Datenbanken und den Dateien machen, das Error-Log anzeigen, das Access-Log in eine SQlite-Datenbank umwandeln und daraus einen HTML-Bericht erstellen, und Programme wie SSH-Konsole, Webbrowser, MySQL-Tunnel oder SFTP-Browser auf einen Klick vorkonfiguriert öffnen. Das ist recht praktisch, wenn man nicht den Ganzen Tag URLs und Befehlsfolgen tippen will. Da ich für das Meist sowieso schon Shell-Skripte hatte, lag das Ziel hauptsächlich darin, ein nettes GUI zu basteln.

Mit PHP Desktop-Anwendungen zu basteln hat den Nachteil, dass unter gängigen Linux-Distributionen zwar alles funktionieren dürfte, allerdings unter Windows PHP und GTK benötigt wird. Außerdem ist die Dokumentation von PHP-GTK noch nicht auf der vom übrigen PHP gewohnten Qualität. Einige Widgets sind nicht oder unvollständig gelistet, Beispiele sind teilweise rar und Englisch-Kenntnisse wären ratsam. Ich denke die nächste GUI-Anwendung werde ich in Java versuchen und dann vergleichen, aber mir kam es nicht so vor, als würde ich in einer Perl-Skriptesammlung für die Personal Homepage coden, und ich denke PHP ist langsam erwachsen.

Kommentare: keine

MySQL von außen via SSH-Tunnel (und KDE GUI)

28.12.2008, 17:04
Lokaler MySQL-Client 
    |
    |
(verschlüsselte SSH-Verbindung)
    |
    v
MySQL-Server

Als Web-Administrator braucht man oft Zugang zu einem MySQL-Server. Das kann man mit phpMyAdmin machen, doch das ist kaum so sicher und weniger komfortabel wie remote-Zugriff über einen SSH-Tunnel.

Was kann der SSH-Tunnel und wie geht das?

En SSH-Tunnel macht, dass, wenn auf den eigenen Rechner von einem Port zugegriffen wird, dann die Packete über die verschlüsselte SSH-Verbindung von dem Verbundenen Rechner (Gateway) aus wieder an einen Rechner weitergeleitet werden. Der Befehl sieht so aus:

ssh -L lokalerport:zielrechner:zielport sshgatewaylogin@gateway

Siehe auch das Diagramm:

Irgendwer 
    |
    |
(Lokaler Port)
    |
    v
Mein Computer
    |
    |
(verschlüsselte SSH-Verbindung)
    |
    v
Gateway, eingeloggt als SSH-Gateway-Login
    |
    |
(Zielport)
    |
    v
Zielrechner

Im Fall MySQL greife nur ich über irgendeinen Port auf meinen Computer zu. Der Gateway-Rechner und Zielrechner sind der MySQL-Server und der greift auf sich selbst zu und zwar über den MySQL-Port (Standard: 3066). Dann sieht das ungefähr so aus:

ssh -L 7777:127.0.0.1:3306 me@mysqlserver -N -f

In Verbindung mit MySQL am besten immer 127.0.0.1 verwenden, das vermeidet Ärger. Das praktische ist nun, dass man MySQL-Clients auf den eigenen Rechner nun mit der Datenbank auf dem Server verwenden kann. Solche Clients sind z.B. der MySQL-Abfrage-Browser oder der MySQL-Administrator oder sogar ein PHP-Skript, das auf dem eigenen Rechner läuft. Man kann damit also nicht nur die Datenbank mit einem schönen GUI verwalten, sondern auch PHP-Skripte, Templates o.ä. auf dem eigenen Rechner testen, nur eben mit der Datenbank auf dem Server. Das ist besonders praktisch, wenn man in einem nicht-lokalen Team zusammenarbeitet, da dann alle auf eine zentrale (Development-)Datenbank zugreifen und nicht jeder ständig seine Datenbank synchronisieren muss. (Außerdem muss nicht jeder einen MySQL-Server installieren. )

Wie man das verwendet ist auf tsunamihost.ch sehr gut beschrieben, für Windows und unixoide Systeme. Es findet sich sogar ein kleines Script für init.d um den Tunnel bei jedem Systemstart zu aktivieren.

(Update 2010-11-21) Um zum Beispiel ein MySQL-Dump über den SSH-Tunnel auf einen entfernten Datenbankserver aufzuspielen genügt dann dieser Befehl:

cat local_path/to/dump.sql | \
   mysql -u db_user -p -P 7777 -h 127.0.0.1 db_schema

Es ist hier wichtig als Host 127.0.0.1 anzugeben, da sonst eine lokale Socket-Verbindung genutzt wird. Und natürlich den Port, über den der Tunnel läuft. (/Update)

Ich will mir keine Befehle und Ports merken und habe KDE

Dann habe ich noch ein kleines Script im Angebot: Es lässt sich z.B. im Startmenü verknüpfen und wenn man es anklickt öffnet sich ein Dialog, der fragt, ob der MySQL-Tunnel benötigt wird. Ein klick auf „Ja“ und der Tunnel wird gestartet bzw. läuft weiter oder ein Klick auf "Nein" und der Tunnel wird, sollte er laufen, gestoppt. Einfacher geht es nicht, oder? Das Sktipt braucht KDE, da es kdialog verwendet und steht hier zum Download bereit:

Kurz die Konfiguration bearbeiten und in den Ordner ~/bin verschieben und der Tunnel kann jederzeit gestartet werden.

Da das Tunnel Aufbauen von meiner Server Management Software YaSvenT erledigt wird, benutze ich inzischen das Sktipt allerdings fast nicht mehr

Kommentare: keine
« Vorherige Seite [ Seite 1 2 ]
 
Χρόνογραφ
© 2008-2017 by Bernhard Häussner - Impressum - Login
Kurz-Link zur Homepage: http://1.co.de/