Προαπαιτούμενα
Εγκατάσταση του απαραίτητου λογισμικού
Δημιουργία του καταλόγου Git
Διαμόρφωση Nginx
Προσθήκη ελέγχου ταυτότητας κωδικού πρόσβασης
Ένα τελευταίο βήμα
(Προαιρετικό) Δημιουργήστε ένα σενάριο που αρχικοποιεί τα αποθετήρια Git
Το Git είναι ένα σύστημα ελέγχου έκδοσης (VCS) που επιτρέπει την παρακολούθηση αλλαγών στον κώδικα. Σε αυτό το σεμινάριο, θα προχωρήσουμε στην εγκατάσταση ενός διακομιστή Git HTTP(S) και στην προσθήκη ελέγχου ταυτότητας ονόματος χρήστη/κωδικού πρόσβασης.
Προαπαιτούμενα
- Debian 8 (Jessie).
- Σούντο .
- Επεξεργαστής κειμένου της επιλογής σας (
nano
, vim
).
Εγκατάσταση του απαραίτητου λογισμικού
Θα χρειαστούμε nginx
, git
, fcgiwrap
και apache httpd utils. Προχωρήστε και πληκτρολογήστε στο τερματικό.
sudo apt-get install nginx git fcgiwrap apache2-utils
dpkg
will fail to install Nginx if another process (such as Apache) is already bound to port 80.
Δημιουργία του καταλόγου Git
Υποθέτοντας ότι θέλετε να δημιουργήσετε τον κατάλογο git στο /var/www/git
, θα πρέπει να εκτελέσετε τις ακόλουθες εντολές:
mkdir /var/www/git
chown www-data:www-data /var/www/git # Make sure www-data (the user fastcgi runs) from has permissions.
Διαμόρφωση Nginx
Τώρα πρέπει να διαμορφώσουμε το Nginx για να μεταβιβάσει την κυκλοφορία του Git στο Git. Αυτό μπορεί να προστεθεί στην προεπιλεγμένη διαμόρφωση, μια προσαρμοσμένη server {}
στο /etc/nginx/conf.d
ή /etc/nginx/sites-enabled
.
The configuration file's parameters and directive must be added in the order in which they are listed below.
location ~ (/.*) {
client_max_body_size 0; # Git pushes can be massive, just to make sure nginx doesn't suddenly cut the connection add this.
auth_basic "Git Login"; # Whatever text will do.
auth_basic_user_file "/var/www/git/htpasswd";
include /etc/nginx/fastcgi_params; # Include the default fastcgi configs
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; # Tells fastcgi to pass the request to the git http backend executable
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT /var/www/git; # /var/www/git is the location of all of your git repositories.
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param PATH_INFO $1; # Takes the capture group from our location directive and gives git that.
fastcgi_pass unix:/var/run/fcgiwrap.socket; # Pass the request to fastcgi
}
Εάν θέλετε να έχετε τα αποθετήρια git σας σε έναν υποκατάλογο, π.χ. http://your-domain.com/repos
κάντε την πρώτη γραμμή location ~ /repos(/.*) {
, είναι regex.
Make sure the server_name
directive in your server {}
doesn't clash with anything else or else Nginx wont pass the request on.
Προσθήκη ελέγχου ταυτότητας κωδικού πρόσβασης
Το Nginx δέχεται htpasswd
αρχεία Apache , για να τα δημιουργήσουμε, θα χρειαστεί να εκτελέσουμε την ακόλουθη εντολή:
htpasswd -c /var/www/git/htpasswd <your username>
Θα σας ζητηθεί να εισαγάγετε τον κωδικό πρόσβασής σας. Για να προσθέσετε περισσότερους χρήστες, κάντε:
htpasswd /var/www/git/htpasswd <another username>
Ένα τελευταίο βήμα
Φροντίστε να φορτώσετε ξανά το Nginx για να εφαρμόσετε όλες τις αλλαγές εκτελώντας:
sudo service nginx reload
Τώρα έχετε έναν ιδιωτικό διακομιστή Git! Απολαμβάνω.
(Προαιρετικό) Δημιουργήστε ένα σενάριο που αρχικοποιεί τα αποθετήρια Git
Λάβετε υπόψη ότι www-data
(ο λογαριασμός χρήστη στον οποίο εκτελείται το FastCGI) πρέπει να έχει πρόσβαση ανάγνωσης και εγγραφής στο αποθετήριο Git, η δημιουργία ενός σεναρίου τώρα εξοικονομεί πονοκεφάλους αργότερα.
Ανοίξτε το αρχείο του σεναρίου σας π.χ. /var/www/git/gitinit.sh
και επικολλήστε τα εξής:
#!/bin/sh
sudo -u www-data mkdir $1
cd $1
sudo -u www-data git init --bare
Μπορείτε να εκτελέσετε το σενάριο ως εξής:
cd /var/www/git
./gitinit.sh repo-name
Θυμηθείτε να επιτρέψετε την εκτέλεση εκτελώντας:
chmod +x /var/www/git/gitinit.sh