Configura il server Git con HTTP su Ubuntu

Configura il server Git con HTTP su Ubuntu
Se si desidera impostare un server HTTP GIT per lavorare con i repository Git privatamente, questo articolo fa per te. In questo articolo, ti mostrerò come configurare un server HTTP GIT Smart su Ubuntu con Apache HTTP Server. Quindi iniziamo.

Installazione del server Git e Apache HTTP:

I pacchetti Git e Apache sono disponibili nel repository di pacchetti ufficiali di Ubuntu. Quindi, puoi installarlo facilmente con il gestore dei pacchetti APT.

Innanzitutto, aggiorna la cache del repository del pacchetto APT con il seguente comando:

$ sudo apt update

La cache del repository del pacchetto APT deve essere aggiornata.

Ora installa Git e Apache con il seguente comando:

$ sudo apt Installa git apache2 apache2-otils

Ora, premere Y e poi premere Per confermare l'installazione.

Git e Apache dovrebbero essere installati.

Configurazione del server Apache HTTP per GIT:

Ora, abilita Apache mod_env, mod_cgi, mod_alias E mod_rewrite moduli con il seguente comando:

$ sudo a2enmod env cgi alias riscrivere

I moduli Apache richiesti dovrebbero essere abilitati.

Ora, crea una nuova directory /var/www/git Per mantenere tutti i repository GIT con il seguente comando:

$ sudo mkdir/var/www/git

Ora, crea una nuova configurazione del sito Apache /etc/apache2/siti-disponibile/git.conf Per Git con il seguente comando:

$ sudo nano/etc/apache2/siti-disponibile/git.conf

Ora, digita le seguenti righe nel file di configurazione:


ServerAdmin Webmaster@localhost
Setenv git_project_root /var/www/git
Setenv git_http_export_all
Scriphalias/Git//usr/lib/git-core/git-http-backend/
Alias ​​/git /var /www /git

Opzioni +Execcgi -Multiviews +SymlinkSifoWownerMatch
Consentire nessuno
Richiedono tutto concesso

DocumentRoot/var/www/html

Opzioni indici di followsymlinks multiview
Consentire nessuno
Richiedono tutto concesso

Errorlog $ apache_log_dir/errore.tronco d'albero
Warn loglevel
CustomLog $ apache_log_dir/access.Registro combinato

Il file di configurazione finale sembra segue. Ora, salva il file di configurazione premendo + X seguito da Y E .

Ora, disabilita la configurazione del sito Apache predefinito con il seguente comando:

$ sudo a2dissite 000-default.conf

La configurazione del sito predefinita deve essere disabilitata.

Ora, abilita la configurazione del sito GIT con il seguente comando:

$ sudo a2ensite git.conf

La configurazione del sito GIT dovrebbe essere abilitata.

Ora riavvia Apache HTTP Server con il seguente comando:

$ sudo systemctl riavvio apache2

Per bootstrap un nuovo repository Git accessibile sul server Apache HTTP, dovrai eseguire alcuni comandi. Non vuoi fare la stessa cosa più e più volte solo per creare un nuovo repository git. Quindi, ho deciso di scrivere uno script di shell a tale scopo.

Innanzitutto, crea un nuovo script di shell /USR/Local/Bin/Git-Create-Repo.sh con il seguente comando:

$ sudo nano/usr/local/bin/git-create-repo.sh

Ora, digita le seguenti righe di codici nello script shell.

#!/Bin/Bash
Git_dir = "/var/www/git"
Repo_name = $ 1
mkdir -p "$ git_dir/$ repo_name.idiota"
cd "$ git_dir/$ repo_name.idiota"
git init - -bara &> /dev /null
Touch Git-Daemon-Export-OK
CP hooks/post-aggiornamento.Gancio di esempio/post-aggiornamento
Git config http.Ricevipack vero
Git Update-Server-Info
chown -rf www-data: www-data "$ git_dir/$ repo_name.idiota"
echo "git repository '$ repo_name' creato in $ git_dir/$ repo_name.idiota"

Una volta digitate queste righe, lo script shell dovrebbe apparire come segue. Ora, salva il file premendo + X seguito da Y E .

Ora aggiungi l'esecuzione dell'autorizzazione allo script shell con il seguente comando:

$ sudo chmod +x/usr/local/bin/git-create-repo.sh

Ora, crea un nuovo repository Git test nella radice del progetto Git /var/www/git usando il git-create-ripo.sh Script Shell come segue:

$ sudo git-mate-repo.Test SH

Il repository Git test dovrebbe essere creato.

Per accedere al repository Git, è necessario l'indirizzo IP del server Git HTTP.

$ ip a

Come puoi vedere, l'indirizzo IP nel mio caso è 192.168.21.208. Sarà diverso per te. Sostituilo con il tuo da ora in poi.

Ora puoi clonare il test Repository Git come segue:

$ git clone http: // 192.168.21.208/GIT/Test.idiota

Il repository Git test dovrebbe essere clonato.

Ora, aggiungiamo un nuovo commit al test Repository git.

$ cd test/
$ echo "ciao mondo"> ciao
$ git aggiungi .
$ git commit -m "commit iniziale"

Ora, caricalo le modifiche al file test Repository Git sul server come segue:

$ git Push Origin

Come puoi vedere, le modifiche vengono caricate bene.

Configurazione dell'autenticazione dell'utente:

In questa sezione, ti mostrerò come configurare l'autenticazione dell'utente sui repository Git nel server.

Innanzitutto, modifica il idiota.conf File di configurazione del sito come segue:

$ sudo nano/etc/apache2/siti-disponibile/git.conf

Ora, aggiungi la sezione seguente nel file di configurazione.


AuthType Basic
Authname "Git Verification"
AuthUserFile/etc/apache2/git.passwd
Richiedono l'utente valido

Qui, /etc/apache2/git.passwd è il file del database utente.

Il file di configurazione finale dovrebbe apparire come segue. Ora, salva il file premendo + X seguito da Y E .

Ora, crea un nuovo file di database utente /etc/apache2/git.passwd e aggiungi un nuovo utente (diciamo Shovon) al file del database come segue:

$ sudo htpasswd -c/etc/apache2/git.Passwd Shovon

Ora, digita una nuova password per il nuovo utente e premi .

Riprovare la stessa password e premere .

La coppia utente-password deve essere aggiunta al database.

Ora riavvia Apache HTTP Server con il seguente comando:

$ sudo systemctl riavvio apache2

Ora, se provi a clonare il test nuovamente repository, ti verrà chiesto di autenticarsi come puoi vedere nello screenshot qui sotto.

Una volta autenticata utilizzando il nome utente e la password, sarai in grado di accedere al repository Git.

Anche quando provi a spingere o tirarti dal repository Git, ti verrà anche chiesto il nome utente e la password.

Una volta autenticata, Push/Pull funzionerà.

È inoltre possibile impostare diversi database utente per repository GIT diversi. Questo potrebbe essere utile per i progetti in cui molte persone lavorano insieme nello stesso repository git.

Per impostare l'autenticazione del repository Git, prima, modifica il idiota.conf File di configurazione del sito come segue:

$ sudo nano/etc/apache2/siti-disponibile/git.conf

Ora, aggiungi le seguenti righe nel file di configurazione.


AuthType Basic
Authname "Git Verification"
AuthUserFile/etc/apache2/git.test.passwd
Richiedono l'utente valido


AuthType Basic
Authname "Git Verification"
AuthUserFile/etc/apache2/git.test2.passwd
Richiedono l'utente valido

Per ogni repository Git test E test2, UN La sezione è definita. Un file di database utente diverso viene utilizzato per ciascun repository Git.

Il file di configurazione finale dovrebbe apparire come segue. Ora, salva il file di configurazione premendo + X seguito da Y E .

Ora puoi creare i database utente richiesti come segue:

$ sudo htpasswd -c/etc/apache2/git.test.nome utente passwd
$ sudo htpasswd -c/etc/apache2/git.test2.nome utente passwd

Una volta terminato, riavvia Apache HTTP Server con il seguente comando:

$ sudo systemctl riavvio apache2

Ora, ogni repository git dovrebbe avere il proprio set di utenti in grado di accedervi.

Quindi, è così che configura il server Git con Apache HTTP Server su Ubuntu. Grazie per aver letto questo articolo.