Git è un sistema di controllo della versione (VCS) che consente il rilevamento delle modifiche al codice. In questa esercitazione verrà descritta l'installazione di un server Git HTTP (S) e l'aggiunta dell'autenticazione nome utente / password.
Prerequisiti
- Debian 8 (Jessie).
- Sudo .
- Editor di testo a scelta (
nano
, vim
).
Installazione del software necessario
Avremo bisogno nginx
, git
, fcgiwrap
e apache httpd utils. Vai avanti e digita nel terminale.
sudo apt-get install nginx git fcgiwrap apache2-utils
dpkg
non riuscirà a installare Nginx se un altro processo (come Apache) è già associato alla porta 80.
Creazione della directory Git
Supponendo che si desideri creare la directory git in /var/www/git
, è necessario eseguire i seguenti comandi:
mkdir /var/www/git
chown www-data:www-data /var/www/git # Make sure www-data (the user fastcgi runs) from has permissions.
Configurare Nginx
Ora dobbiamo configurare Nginx per trasmettere il traffico Git a Git. Questo può essere aggiunto alla configurazione predefinita, una personalizzazione server {}
su /etc/nginx/conf.d
o /etc/nginx/sites-enabled
.
I parametri e la direttiva del file di configurazione devono essere aggiunti nell'ordine in cui sono elencati di seguito.
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
}
Se desideri avere i tuoi repository git in una sottodirectory, ad es. http://your-domain.com/repos
fare la prima riga location ~ /repos(/.*) {
, è una regex.
Assicurati che la server_name
direttiva nella tua server {}
non sia in conflitto con nient'altro, altrimenti Nginx non passerà la richiesta.
Aggiunta dell'autenticazione password
Nginx accetta i htpasswd
file Apache , per crearli, dovremo eseguire il seguente comando:
htpasswd -c /var/www/git/htpasswd <your username>
Ti verrà richiesto di inserire la password. Per aggiungere più utenti, fai:
htpasswd /var/www/git/htpasswd <another username>
Un ultimo passo
Assicurati di ricaricare Nginx per applicare tutte le modifiche eseguendo:
sudo service nginx reload
Ora hai un server Git privato! Godere.
(Facoltativo) Crea uno script che inizializza i repository Git
Si noti che www-data
(l'account utente su cui viene eseguito FastCGI) deve avere accesso in lettura e scrittura al repository Git, la creazione di uno script ora fa risparmiare più mal di testa in seguito.
Apri il tuo file di script, ad es. /var/www/git/gitinit.sh
e incolla quanto segue:
#!/bin/sh
sudo -u www-data mkdir $1
cd $1
sudo -u www-data git init --bare
Puoi eseguire lo script in questo modo:
cd /var/www/git
./gitinit.sh repo-name
Ricorda di consentire l'esecuzione eseguendo:
chmod +x /var/www/git/gitinit.sh