Git
Chapters ▾ 2nd Edition

4.5 Το Git στον διακομιστή - Δαίμονες του Git

Δαίμονες του Git

Στη συνέχεια θα εγκαταστήσουμε έναν δαίμονα που θα εξυπηρετεί αποθετήρια μέσω του πρωτοκόλλου “Git”. Αυτή είναι μια συνήθης επιλογή για γρήγορη, χωρίς ταυτοποίηση πρόσβαση στα δεδομένα μας στο Git. Καλό είναι να θυμόμαστε πως δεδομένου ότι πρόκειται για μια υπηρεσία χωρίς ταυτοποίηση, ο,τιδήποτε παρέχεται πάνω από αυτό το πρωτόκολλο είναι δημόσιο μέσα στο δίκτυό του.

Εάν τρέχουμε τον δαίμονα σε έναν διακομιστή εκτός τείχους προστασίας, θα πρέπει να χρησιμοποιείται μόνο για έργα που είναι ορατά σε όλον τον κόσμο. Αν ο διακομιστής στον οποίο τον τρέχουμε είναι εντός τείχους προστασίας, μπορούμε να το χρησιμοποιήσουμε για έργα στα οποία ένας μεγάλος αριθμός ανθρώπων ή υπολογιστών (συνεχής ολοκλήρωση ή δημιουργία διακομιστών) έχουν πρόσβαση μόνο για ανάγνωση, όταν δεν θέλουμε να προσθέσουμε κλειδί SSH για τον καθένα.

Σε κάθε περίπτωση, το πρωτόκολλο Git είναι σχετικά εύκολο στη ρύθμιση. Βασικά, θα πρέπει να εκτελέσουμε αυτήν την εντολή με “δαιμονικό” τρόπο:

git daemon --reuseaddr --base-path=/opt/git/ /opt/git/

Ο διακόπτης --reuseaddr επιτρέπει στον διακομιστή να επανεκκινήσει χωρίς να αναμένει αποσύνδεση των παλαιών συνδέσεων, ο διακόπτης --base-path επιτρέπει την κλωνοποίηση έργων χωρίς να καθορίζουν ολόκληρη τη διαδρομή και η διαδρομή στο τέλος λέει στον δαίμονα Git πού να να αναζητήσει αποθετήρια προς εξαγωγή. Εάν τρέχουμε ένα τείχος προστασίας, θα χρειαστεί επίσης να ανοίξουμε μία τρύπα σε αυτό στη θύρα 9418 στο κουτί που τον εγκαθιστάται.

Μπορούμε να “διαμονίσουμε” αυτήν τη διαδικασία με διάφορους τρόπους, ανάλογα με το λειτουργικό σύστημα που εκτελούμε. Σε ένα μηχάνημα Ubuntu μπορούμε να χρησιμοποιήσουμε ένα script εκκίνησης. Έτσι, στο ακόλουθο αρχείο

/etc/event.d/local-git-daemon

βάζουμε αυτό το script:

start on startup
stop on shutdown
exec /usr/bin/git daemon \
    --user=git --group=git \
    --reuseaddr \
    --base-path=/opt/git/ \
    /opt/git/
respawn

Για λόγους ασφάλειας, συνιστάσται θερμά να εκτελείται αυτός ο δαίμονας ως χρήστης με δικαιίωμα μόνο-για-ανάγνωση στα αποθετήρια —μπορούμε εύκολα να το κάνουμε αυτό δημιουργώντας ένα νέο χρήστη git-ro και τρέχοντας τον δαίμονα ως αυτός ο χρήστης. Για λόγους απλότητας, θα το τρέξουμε απλά ως ο ίδιος χρήστης git που τρέχει και το git-shell.

Όταν επανεκκινήσουμε το μηχάνημά μας, ο δαίμονας Git θα ξεκινήσει κι αυτός αυτόματα και θα ξαναξεκινήσει αν κρασάρει. Για να τον τρέξουμε χωρίς να χρειάζεται να κάνουμε επανεκκίνηση, μπορούμε να εκτελέσουμε:

initctl start local-git-daemon

Σε άλλα συστήματα, ίσως θελήσουμε να χρησιμοποιήσουμε το xinetd, ένα script στο σύστημά μας sysvinit ή κάτι άλλο —εφόσον μπορούμε να δαιμονίσουμε αυτήν την εντολή και να την παρακολουθούμε.

Στη συνέχεια, πρέπει να ενημερώσουμε το Git σχετικά με το ποια αποθετήρια επιτρέπουν την πρόσβαση σε διακομιστές Git χωρίς έλεγχο ταυτότητας. Μπορούμε να το κάνουμε σε κάθε αποθετήριο δημιουργώντας ένα αρχείο που ονομάζεται git-daemon-export-ok.

$ cd /path/to/project.git
$ touch git-daemon-export-ok

Η παρουσία αυτού του αρχείου λέει στο Git ότι είναι εντάξει να εξυπηρετήσει αυτό το έργο χωρίς έλεγχο ταυτότητας.