Seit ein paar Monaten ist beruflich nun auch bei mir Git im Einsatz und wenn man sich erst mal dran gewöhnt hat, will man nicht mehr darauf verzichten. Deshalb stelle ich gerade meine private Entwicklungsumgebung auch darauf um. Im gleichen Schritt wechsle ich gleich noch meine IDE auf PhpStorm. In diesem Artikel möchte ich die nötigen Schritte erklären die zur Einrichtung nötig waren. Vielleicht interessiert es ja den ein oder anderen.

Alle Teile dieser Artikel Serie

Ausgangssituation

Ich entwickle für Linux Systeme, aber benutze einen Windows Rechner, was es manchmal komplizierte macht. Bisher besteht meine private Entwicklungsumgebung aus einem Debian Entwicklungsserver mit Webserver, MySQL und dem ganzen Klimbim. Ich mappe mir einzelne Verzeichnisse auf dem Entwicklungsserver per SFTP über Webdrive und arbeite dann direkt mit Notepad++ auf dem Server. So brauche ich keinen lokalen Webserver und muss nicht auf die Windows/Linux Unterschiede bei der Entwicklung eingehen. Der Live Server ist ebenfalls ein Linux Server.

Beim arbeiten führe ich ein manuell gepflegtes Changelog, damit ich am Ende noch weiß was ich hoch laden muss. Wenn Änderungen abgeschlossen sind und ich sie deployen möchte, kopiere ich mir die geänderten Dateien in ein extra Verzeichnis und lade sie auf den Live Server. Wenn ich nicht gerade zu faul bin, mache ich vorher noch ein extra Backup der Dateien zum schnellen Wiederherstellen.

Das funktioniert eigentlich sehr gut, da ich nur allein an meinen Projekten arbeite, aber das pflegen des Changelogs und das manuelle uploaden ist nicht mehr zeitgemäß und kostet Zeit. Außerdem habe ich keine Historie und ich kann nur schwer ein Backup zurück spielen wenn mal etwas nicht funktioniert.

Zielstellung

Ich möchte einen zentralen Git Server auf dem die Repositories liegen. Ich hatte überlegt dies per Github oder ähnliche zu machen, aber das Geld dafür möchte ich lieber sparen und da ich eh noch ungenutzte VServer habe, wurde einer davon zum Git Server auserkoren. Wer gern eine Weboberfläche haben möchte und sich nicht um die Serveradministration kümmern möchte, ist bei Github gut aufgehoben. Hat man Open Source Projekte und benötigt keine privaten Repositories, ist Github natürlich auch zu empfehlen, da es dafür kostenlos ist!

Als Client benutze ich weiterhin Windows und als Server weiterhin Linux. Als IDE kommt bei mir nun PhpStorm zum Einsatz, da ich die VCS Implementierung mag und ich es als sehr viel schneller empfinde als zum Beispiel Eclipse. Die ganzen Einstellungsmöglichkeiten sind natürlich auch super. Als Git Client benutze ich die portable Version von Git for Windows. Die lokalen Repositories habe ich auf einer externen Festplatte die ich per Truecrypt verschlüssle und immer dabei habe. Als großer portable Apps Fan der öfters an unterschiedlichen Rechnern arbeitet, freue ich mich natürlich das msysgit (Git for Windows) sowie auch PhpStorm portable laufen und nicht installiert werden müssen. Wie man das einrichtet steht hier: portable msysgit, portable PhpStorm

Meinen Entwicklungsserver behalte ich, da ich keinen lokalen Windows Webserver (z.B. XAMPP) haben möchte. Das ist auch kein Problem, da PhpStorm per FTP/SFTP auf den Entwicklungsserver zugreifen kann und die Synchronisierung automatisch erledigt. Auf meinem Git Server wird Public KeyAuth aktiviert, da ich ohne Passwortabfragen per Git pushen/pullen möchte. Der Name Git Server ist in meinem Fall eigentlich nicht richtig gewählt, da es sich nur um einen normalen Debian Server handelt auf dem git-core installiert ist. Ich setze keine Weboberfläche ein und auch kein Gitosis, da es sich um meine private Entwicklung handelt an der ich allein arbeite. Wer das aber gern haben möchte, findet hier eine Anleitung dafür: Zentrales Git Repository unter Debian GNU/Linux 5.0 "Lenny" Howto.

Installation Git Server

Wie schon erwähnt ist das keine große Sache und in meinem Fall schnell erledigt.

$ aptitude install git-core
$ adduser mygituser
$ cd /home/mygituser/
$ su mygituser
$ mkdir repos

Ob Public KeyAuth funktioniert kann man in der /etc/ssh/sshd_config prüfen. Hier muss PubkeyAuthentication auf yes stehen. Das war es dann auch schon was den Server angeht. Die Repos liegen dann hier im Verzeichnis /home/mygituser/repos/reponame/.

msysgit - Git for Windows

Auch wenn ich kein großer Fan der Windows CMD bin, ist Git for Windows hilfreich, da man die Git Tools direkt auf der Console benutzen kann. Außerdem bringt PhpStorm keine komplette Unterstützung der Git Befehle mit, weshalb man einige Aktionen extern machen muss. Es ist im übrigen kein Problem msysgit und Git in PhpStorm gleichzeitig zu benutzen! Hat man es runter geladen und entpackt, startet man die Git-bash.bat. Als nächstes wird das Public KeyAuth eingerichtet. Hat man noch kein Private/Public Key Pair, legt man sich ein neues an. Dem Namen und die Passphrase lasse ich leer, da der Schlüssel nur auf meiner eh verschlüsselten Platte liegt.

Git Bash

$ cat ~/.ssh/id_rsa.pub
cat: .../.ssh/id_rsa.pub: No such file or directory
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (.../.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .../.ssh/id_rsa.
Your public key has been saved in .../.ssh/id_rsa.pub.

Nun wird der Public Key noch auf den Git Server übertragen und in die authorized_keys eintragen. Das kann man entweder über die Zwischenablage von Windows lösen oder man kopiert die Datei per SCP auf den Server und hängt den Schlüssel an.

Git Bash

$ scp -P 12345 ~/.ssh/id_rsa.pub mygituser@server.com:id_rsa.pub

Git Server als mygituser

$ cd ~
$ if [ ! -d .ssh ]; then mkdir .ssh ; chmod 700 .ssh ; fi
$ cd .ssh/
$ if [ ! -f authorized_keys ]; then touch authorized_keys ; fi
$ chmod 600 authorized_keys
$ cat ~/id_rsa.pub >> authorized_keys
$ rm ~/id_rsa.pub

Hat man alles richtig gemacht, kann man sich nun aus der Git Bash mit dem Git Server verbinden ohne das man ein Passwort eingeben muss.

Git Bash

$ ssh mygituser@server.com -p 12345
mygituser@server.com:~$

Sollte das nicht funktionieren und man wird nach einem Passwort gefragt, überprüft man die Rechte des .ssh Verzeichnisses und der authorized_keys. Die Dateien müssen mygituser gehören. Außerdem muss der Key in der authorized_keys in einer Zeile stehen (keine Umbrüche)!

Hier geht es weiter: Git Repository erstellen und mit den Git Server verbinden

No related posts.

Leave a Reply