Ricerca nel sito web

Come installare HTTP Git Server con Nginx su Ubuntu 20.04


Su questa pagina

  1. Prerequisiti
  2. Per iniziare
  3. Installa Nginx e Git
  4. Crea un repository Git
  5. Configura Nginx per Git
  6. Prova HTTP Git Server
  7. Conclusione

Git è un sistema di controllo delle versioni gratuito e open source sviluppato da Linus Torvalds. È utilizzato da milioni di sviluppatori in tutto il mondo. GitHub offre anche un servizio di hosting di codice gratuito. Tuttavia, il servizio gratuito non consente l'hosting privato del codice. In questo caso, puoi ospitare il tuo server di hosting del codice con il server HTTP Git. Questo ti darà il pieno controllo sul server.

In questo tutorial, ti mostreremo come installare e configurare il server HTTP Git con Nginx su Ubuntu 20.04.

Prerequisiti

  • Un server che esegue Ubuntu 20.04.
  • Nome di dominio valido indicato con l'IP del tuo server.
  • Il server è configurato con una password di root.

Iniziare

Prima di iniziare, si consiglia di aggiornare i pacchetti del server all'ultima versione. Puoi aggiornarli con il seguente comando:

apt-get update -y

Una volta aggiornati tutti i pacchetti, puoi procedere al passaggio successivo.

Installa Nginx e Git

Successivamente, dovrai installare il server web Nginx, Git e altri pacchetti richiesti sul tuo sistema. Puoi installarli con il seguente comando:

apt-get install nginx git fcgiwrap apache2-utils unzip -y

Una volta installati tutti i pacchetti, puoi procedere al passaggio successivo.

Crea un repository Git

Successivamente, dovrai creare un repository Git all'interno della directory radice web di Nginx. Innanzitutto, crea una directory denominata git con il seguente comando:

mkdir /var/www/html/git

Quindi, modifica la directory in git e crea una nuova directory per il repository Git:

cd /var/www/html/git
mkdir gituser.git

Successivamente, passa a questa nuova directory e inizializza il repository Git con il comando:

git --bare init

Successivamente, aggiorna Git Server con il comando:

git update-server-info

Successivamente, imposta la proprietà e l'autorizzazione sulla directory git con il seguente comando:

chown -R www-data:www-data /var/www/html/git
chmod -R 755 /var/www/html/git

Successivamente, crea un nuovo gituser per l'autenticazione con il seguente comando;

htpasswd -c /var/www/html/git/htpasswd gituser

Ti verrà chiesto di impostare una password come mostrato di seguito:

New password: 
Re-type new password: 
Adding password for user gituser

Ora puoi verificare la tua password usando il seguente comando:

cat /var/www/html/git/htpasswd

Dovresti ottenere il seguente output:

gituser:$apr1$iPKZDbFB$ziRRbGXzVMMHaPYOtL05m/

Configura Nginx per Git

Successivamente, dovrai configurare Nginx per servire il repository Git. Puoi creare un nuovo file di configurazione dell'host virtuale per Git con il seguente comando:

nano /etc/nginx/conf.d/git.conf

Aggiungi le seguenti righe:

server {
        listen 80;

        root /var/www/html/git;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name git.example.com;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

location ~ (/.*) {
    client_max_body_size 0; 
    auth_basic "Git Login"; 
    auth_basic_user_file "/var/www/html/git/htpasswd";
    include /etc/nginx/fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; 
    fastcgi_param GIT_HTTP_EXPORT_ALL "";
    fastcgi_param GIT_PROJECT_ROOT /var/www/html/git;
    fastcgi_param REMOTE_USER $remote_user;
    fastcgi_param PATH_INFO $1; 
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
}

}

Salva e chiudi il file quando hai finito. Quindi, verifica Nginx per qualsiasi errore di sintassi con il seguente comando:

nginx -t

Dovresti ottenere il seguente output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Successivamente, riavvia il servizio Nginx per applicare le modifiche:

systemctl restart nginx

Puoi anche verificare lo stato del servizio Nginx usando il seguente comando:

systemctl status nginx

Dovresti ottenere il seguente output:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-11-17 07:43:46 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 3240 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 3256 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 3257 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ??3257 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??3258 nginx: worker process
             ??3259 nginx: worker process

Nov 17 07:43:46 ubunt4 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 17 07:43:46 ubunt4 systemd[1]: Started A high performance web server and a reverse proxy server.

Una volta terminato, puoi procedere al passaggio successivo.

Prova HTTP Git Server

A questo punto, il server Git è installato e configurato. Ora è il momento di testarlo.

Sul computer client, installa il pacchetto Git con il seguente comando:

apt-get install git -y

Una volta installato, crea una directory denominata myapp con il seguente comando:

mkdir myapp

Successivamente, passa alla nuova directory e inizializza Git con il seguente comando:

cd myapp
git init

Successivamente, aggiungi il tuo repository Git remoto con il seguente comando:

git remote add origin http:///gituser.git

Successivamente, crea la directory app1 e app2 e crea anche i file app1 e app2 con alcuni contenuti all'interno di tali directory:

mkdir app1 app2
echo "This is my first application" > app1/app1
echo "This is my first application" > app2/app2

Successivamente, aggiungi tutte le directory e i file al repository con il seguente comando:

git add .

Quindi, conferma le modifiche con il seguente comando:

git commit -a -m "Add files and directories"

Dovresti ottenere il seguente output:

[master (root-commit) 4e90372] Add files and directories
 2 files changed, 2 insertions(+)
 create mode 100644 app1/app1
 create mode 100644 app2/app2

Quindi, invia queste modifiche al server Git remoto con il seguente comando:

git push origin master

Ti verrà chiesto di fornire una password per l'utente Git remoto come mostrato di seguito:

Password for 'http://': 

Fornisci la tua password e premi Invio. Dovresti ottenere il seguente output:

Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (5/5), 354 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To http:///gituser.git
 * [new branch]      master -> master

L'output sopra indica che i file e le directory vengono aggiunti al repository Git remoto. Se vuoi clonare questo repository sul tuo sistema locale, esegui il seguente comando:

git clone http:///gituser.git

Dovresti ottenere il seguente output:

Cloning into 'gituser'...
Password for 'http://': 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
Checking connectivity... done.

Conclusione

Congratulazioni! hai installato e configurato correttamente il server HTTP Git sul server Ubuntu 20.04. Ora puoi implementare il server Git nel tuo ambiente di sviluppo accessibile dall'interno della tua LAN.