Schulung-Teil6-Erste Schritte mit git
Vorwort
Diese Schulung hat am 30.03.2017 stattgefunden. Zuerst haben wir git installiert und ein wenig kennengelernt und dann noch ein Projekt aus git installiert. Das ist noch nicht funktionsfähig, da noch notwendige Komponenten fehlen, doch das wird wohl voraussichtlich in zwei Wochen folgen.
Unsere Test-Server werden bei uns wohl bald mal noch verschoben, dass wir auch vom Arbeitsplatz aus auf die Geräte zugreifen können. So können wir in den Schulungen noch Aufgaben bekommen, welche wir dann in der Zeit bis zur nächsten Schulung probieren können. Da geplant ist, dass die Server und virtuellen Maschinen dann statische IP Adressen kriegen wird sich das aufstarten ein wenig ändern. Trotzdem folgt als erstes noch eine Repetition zum aufstarten und einloggen in Server und virtuellen Maschine.
Falls noch Fragen offen sind nach dieser Anleitung bitte oben bei "Ansichten" auf "Diskussion" gehen und Feedback hinterlassen, dass ich noch weitere Details hinzufügen kann. jr
Repetition
Fernstart des Servers
Zuerst wollen wir unseren Server erstmal einschalten. Dazu nutzen wir das "wakeonlan" Programm. Die allgemeine Formulierung dazu ist:
wakeonlan -i "broadcast IP" "MAC address"
In meinem Fall war der Befehl "wakeonlan -i 192.168.67.255 00:21:5a:6d:6d:42". Für meine Arbeitskollegen ändert sich die MAC-Adresse, doch die restliche Synthax können sie auch nutzen.
IP des Servers ausfindig machen
Als nächstes wollen wir herausfinden, welche IP Adresse unser Server vom DHCP-Server bezogen hat. Aus meiner Erfahrung hat mein Server immer die gleiche Adresse bezogen, doch da dies nicht garantiert ist, schaut man besser nach.
less /var/lib/dhcp/dhcpd.leases
Hier suchen wir unseren Eintrag anhand der MAC-Adresse raus, dass wir anschliessend auf unserem Server einloggen können. Über "q" kann man less wieder verlassen.
Fernzugriff auf Server
Um den Fernzugriff zu machen nutzen wir das Programm "ssh". Da aus Sicherheitsgründen nicht als root eingeloggt werden kann per SSH, haben wir noch einen weiteren Benutzer kreiert beim Aufsetzen des Systems. Um die Adresse vom Server herauszufinden haben wir ja vorher den Eintrag im DHCP-Server gesucht.
ssh "username"@"remote computer"
IP der virtuellen Maschine ausfindig machen
Ich kenne aktuell leider keinen besseren Weg um auf die virtuelle Maschine zu kommen und darum muss man diesen, ein wenig umständlichen, Weg nutzen. Da wir ja erst auf dem Server (Xen-Hypervisor) sind, können wir uns die virtuellen Maschinen anzeigen lassen.
sudo xl list
In dieser Auflistung ist jede Maschine mit einer ID versehen. Diese Zahl merken wir uns für den nächsten Befehl.
sudo xl console "ID"
Jetzt müssen wir unsere Login-Daten der virtuellen Maschine eingeben und anschliessend die IP Adresse der virtuellen Maschine herausfinden:
ip a
Es wäre auch schon möglich von hier aus zu arbeiten, doch man kann dann nicht das gesammte Fenster nutzen, sondern nur einen Teil davon. Somit ist es angenehmer, wenn man jetzt wieder die virtuelle Maschine verlässt und entweder vom Server aus oder vom Computer wo man dran sitzt eine neue Verbindung direkt zur virtuellen Maschine macht.
Um von der virtuellen Maschine aus wieder auf denn Server zu kommen, muss man Ctrl+5 oder AltGr+] drücken. Falls man direkt vom Computer aus auf die virtuelle Maschine will, den Server über "exit" verlassen.
Packete auf den neusten Stand bringen
Jetzt wo wir uns auf unserer virtuellen Maschine befinden, wollen wir als erstes mal die Liste der verfügbaren Packete auf den neusten Stand bringen. Dies machen wir über
user1@vm1:~$ sudo apt update
Falls zu den bereits installierten Packeten eine neuere Version vorliegt, so wird es dies uns melden und diese Packete können wir über den folgenden Befehl installieren
user1@vm1:~$ sudo apt upgrade
git installieren
Wir haben unsere Packete auf den neusten Stand gebracht und verfügen über die aktuelle Version der verfügbaren Packete. Da wir heute git installieren wollen, machen wir dies über
user1@vm1:~$ sudo apt install git
Bei der Installation zeigt es uns, dass noch weitere Packete benötigt werden, dass es funktioniert.
Die folgenden zusätzlichen Pakete werden installiert: git-man liberror-perl patch rsync
- Bei "git-man" handelt es sich um die Man-Page von git - "liberr-perl" ist eine Bibliothek im Zusammenhang mit Fehlern und wurde in Perl geschrieben - Bei "patch" handelt es sich um eine Anleitung für Änderungen einer Datei. Das Gegenstück dazu ist "diff" Hier findet man noch eine Anleitung auf Englisch wie man diese beiden Programme nutzen kann. - rsync = remote sync
-> server werden wohl verschoben und kriegen statische IPs, dass wir schneller starten können (hat wieder 20-30min gedauert bis alle auf VM waren)
schulung zu git: kivitendo wird über git verwaltet, sowie auch linuxkernel
user1@vm1:~$ sudo apt update user1@vm1:~$ sudo apt upgrade (falls nötig) user1@vm1:~$ sudo apt install git Die folgenden zusätzlichen Pakete werden installiert:
git-man liberror-perl patch rsync
-> git-man = man-page -> liberr-perl = library errors written in perl -> patch = anleitung für änderungen von einer datei (gegenstück zu diff) -> rsync = remote sync
Anmerkung für git nutzung: mkdir "mein ordner für git" cd "mein ordner für git" git init -> git überwacht diesen ordner ab jetzt
http://wiki.revamp-it.ch/index.php?title=Kivitendo_Installationen_mit_git_verwalten
apache2 nutzt www-data user und hat seine sachen unter /var/www/
user1@vm1:~$ sudo mkdir -p /var/www/git user1@vm1:~$ cd /var/www/git user1@vm1:/var/www/git$ sudo git clone https://github.com/kivitendo/kivitendo-erp.git user1@vm1:/var/www$ sudo chown -R www-data:www-data kivitendo
alternativ sudo -u www-data mkdir /var/www/git
-> permission denied, da ordner und vorhergehender ordner root gehören -> kopieren von wo ich das geschrieben hatte.
also doch über
sudo mkdir /var/www/git
sudo chown www-data:www-data /var/www/git
sudo -u www-data git clone https://github.com/kivitendo/kivitendo-erp.git
user1@vm1:/var/www/git$ cd kivitendo-erp/ user1@vm1:/var/www/git/kivitendo-erp$ ls -la insgesamt 112 drwxr-xr-x 19 www-data www-data 4096 Mär 30 14:17 . drwxr-xr-x 3 www-data www-data 4096 Mär 30 14:17 .. drwxr-xr-x 3 www-data www-data 4096 Mär 30 14:17 bin drwxr-xr-x 2 www-data www-data 4096 Mär 30 14:17 config drwxr-xr-x 6 www-data www-data 4096 Mär 30 14:17 css lrwxrwxrwx 1 www-data www-data 14 Mär 30 14:17 dispatcher.fcgi -> dispatcher.fpl -rwxr-xr-x 1 www-data www-data 621 Mär 30 14:17 dispatcher.fpl -rwxr-xr-x 1 www-data www-data 507 Mär 30 14:17 dispatcher.pl drwxr-xr-x 7 www-data www-data 4096 Mär 30 14:17 doc -rw-r--r-- 1 www-data www-data 1150 Mär 30 14:17 favicon.ico drwxr-xr-x 8 www-data www-data 4096 Mär 30 14:17 .git -rw-r--r-- 1 www-data www-data 553 Mär 30 14:17 .gitignore -rw-r--r-- 1 www-data www-data 451 Mär 30 14:17 .htaccess drwxr-xr-x 6 www-data www-data 4096 Mär 30 14:17 image -rw-r--r-- 1 www-data www-data 369 Mär 30 14:17 index.html drwxr-xr-x 9 www-data www-data 4096 Mär 30 14:17 js -rw-r--r-- 1 www-data www-data 375 Mär 30 14:17 .jshintrc drwxr-xr-x 4 www-data www-data 4096 Mär 30 14:17 locale -rw-r--r-- 1 www-data www-data 2236 Mär 30 14:17 .mailmap drwxr-xr-x 4 www-data www-data 4096 Mär 30 14:17 menus drwxr-xr-x 4 www-data www-data 4096 Mär 30 14:17 modules drwxr-xr-x 3 www-data www-data 4096 Mär 30 14:17 scripts drwxr-xr-x 26 www-data www-data 4096 Mär 30 14:17 SL drwxr-xr-x 2 www-data www-data 4096 Mär 30 14:17 spool drwxr-xr-x 4 www-data www-data 4096 Mär 30 14:17 sql drwxr-xr-x 20 www-data www-data 4096 Mär 30 14:17 t drwxr-xr-x 5 www-data www-data 4096 Mär 30 14:17 templates drwxr-xr-x 3 www-data www-data 4096 Mär 30 14:17 users -rw-r--r-- 1 www-data www-data 15 Mär 30 14:17 VERSION user1@vm1:/var/www/git/kivitendo-erp$ -> .git -> nötig, wenn über git verwaltetes projekt gearbeitet wird -> .gitignore -> hier können individuelle einstellungen gemacht werden, da sie nicht über git verwaltet werden.
-> falls wir weitere ordner nicht über git verwaltet haben wollen diese datei editieren gehen
user1@vm1:/var/www/git/kivitendo-erp$ git branch
- master
-> in welchem Zweig von git befinden wir uns. da neu geladen im master -> funktioniert nur in einem verzeichnis wo wir git haben
user1@vm1:/var/www/git$ git branch fatal: Not a git repository (or any of the parent directories): .git
user1@vm1:/var/www/git$ cd kivitendo-erp/ user1@vm1:/var/www/git/kivitendo-erp$ git tag -> listet alle releases auf user1@vm1:/var/www/git/kivitendo-erp$ sudo git checkout -b produktiv release-3.4.1 user1@vm1:/var/www/git/kivitendo-erp$ git branch
master
- produktiv
weiterer befehl zum zeigen was der stand ist: user1@vm1:/var/www/git/kivitendo-erp$ git status Auf Branch produktiv nichts zu committen, Arbeitsverzeichnis unverändert
falls updates gemacht wurden und man die installieren will user1@vm1:/var/www/git/kivitendo-erp$ sudo git checkout master Zu Branch 'master' gewechselt Ihr Branch ist auf dem selben Stand wie 'origin/master'. user1@vm1:/var/www/git/kivitendo-erp$
user1@vm1:/var/www/git/kivitendo-erp$ sudo git pull
user1@vm1:/var/www/git/kivitendo-erp$ sudo git log -> sehen was zuletzt gemacht wurde
wieder zu produktiv wechseln über user1@vm1:/var/www/git/kivitendo-erp$ sudo git checkout produktiv Zu Branch 'produktiv' gewechselt
-> kivi kann noch nicht laufen, da noch kein postgres installiert ist
gute erklärung zu git auf deutsch: https://www.thomas-krenn.com/de/wiki/Git_Grundbefehle github.com -> bekannte seite für git-sachen auch auf git zu finden: nextcloud oder openki
aufgabe: neuen ordner für git machen und dort die daten von git herunterladen.
bei uns im wiki zwei einträge zu git von hampa
Enter ~ (space) . -> wenns nach ssh nicht zurück zur konsole geht, kann man so schneller raus