Στη συνέχεια θα εγκαταστήσΟυμε έναν δαίμονα που θα εξυπηρετεί αποθετήρια μέσω του πρωτοκόλλου "Git". Αυτή είναι μια συνήθης επιλογή για γρήγορη και χωρίς ταυτοποίηση πρόσβαση στα δεδομένα σας στο Git. Να θυμάστε πως δεδομένου ότι πρόκειται για μια υπηρεσία χωρίς ταυτοποίηση, οτιδήποτε παρέχεται πάνω από αυτό το πρωτόκολλο είναι δημόσιο εντός του δικτύου του.
Εάν τρέχετε τον δαίμονα σε έναν διακομιστή εκτός firewall, θα πρέπει να χρησιμοποιείται μόνο για έργα που είναι ορατά σε όλον τον κόσμο. Αν ο διακομιστής στον οποίο τον τρέχετε είναι εντός firewall, μπορείτε να τον χρησιμοποιήσετε για έργα στα οποία ένας μεγάλος αριθμός ανθρώπων ή υπολογιστών (continuous integration ή build servers) έχουν πρόσβαση μόνο για ανάγνωση, όταν δεν θέλετε να προσθέσετε κλειδί SSH για τον καθένα.
Σε κάθε περίπτωση, το πρωτόκολλο Git είναι σχετικά εύκολο στη ρύθμισή του. Βασικά, θα πρέπει να εκτελέσετε αυτή την εντολή με “δαιμονοποιημένο” τρόπο:
git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Ο διακόπτης --reuseaddr
επιτρέπει στον διακομιστή να επανεκκινήσει χωρίς να αναμένει αποσύνδεση των παλαιών συνδέσεων, ο διακόπτης --base-path
επιτρέπει την κλωνοποίηση έργων χωρίς να καθορίζεται ολόκληρη τη διαδρομή και η διαδρομή στο τέλος λέει στον δαίμονα Git πού να αναζητήσει αποθετήρια προς εξαγωγή.
Εάν τρέχετε ένα firewall, θα χρειαστεί επίσης να του ανοίξετε μία τρύπα στη θύρα 9418 στο κουτί που τον εγκαθιστάτε τον διακομιστή.
Μπορείτε να “δαιμονοποίησετε” αυτή τη διαδικασία με διάφορους τρόπους, ανάλογα με το λειτουργικό σύστημα που εκτελείτε.
Δεδομένου ότι systemd
είναι το πιο συνηθισμένο σύστημα init στις μοντέρνες διανομές Linux, μπορείτε να χρησιμοποιήσετε αυτό για αυτό τον σκοπό.
Απλά βάλτε ένα αρχείο στο /etc/systemd/system/git-daemon.service
με αυτά τα περιεχόμενα:
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
Ίσως προσέξατε ότι ο δαίμονας του Git daemon ξεκιά εδώ ως git
τόσο για την ομάδα όσο και για τον χρήστη.
Τροποποιήστε το ώστε να το προσαρμόσετε στις ανάγκες σας και σιγουρευτείτε ότι ο χρήστης που δίνεται υπάρχει στο σύστημα.
Επίσης, ελέγξτε ότι το εκτελέσιμο αρχείο του Git βρίσκεται πράγματι στο /usr/bin/git
αλλιώς αλλάξτε τη διαδρομή καταλλήλως.
Τέλος, θα εκτελέσετε systemctl enable git-daemon
ώστε η υπηρεσία να ξεκινά αυτόματα κατά την εκκίνηση του υπολογιστή και μπορείτε να εκκινήσετε και να σταματήσετε την υπηρεσία με systemctl start git-daemon
και systemctl stop git-daemon
αντίστοιχα.
Σε άλλα συστήματα, ίσως θελήσετε να χρησιμοποιήσετε το xinetd
, ένα script στο σύστημά σας sysvinit
ή κάτι άλλο — με την προϋπόθεση ότι μπορείτε δαιμονοποιήσετε αυτή την εντολή και να την παρακολουθείτε με κάποιον τρόπο.
Σε άλλα συστήματα, ίσως θελήσετε να χρησιμοποιήσετε το xinetd
, ένα script στο σύστημά σας sysvinit
ή κάτι άλλο — εφόσον μπορείτε να δαιμονοποιήσετε αυτή την εντολή και να την παρακολουθείτε.
Στη συνέχεια, πρέπει να ενημερώσετε το Git ποια αποθετήρια επιτρέπουν την πρόσβαση σε διακομιστές Git χωρίς ταυτοποίηση.
Μπορείτε να το κάνετε σε κάθε αποθετήριο δημιουργώντας ένα αρχείο που ονομάζεται git-daemon-export-ok
.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
Η παρουσία αυτού του αρχείου λέει στο Git ότι επιτρέπεται να εξυπηρετήσει αυτό το έργο χωρίς ταυτοποίηση.