GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare HTTP Git Server con Nginx su Ubuntu 20.04

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 di 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 puntato con l'IP del tuo server.
  • Una password di root è configurata sul server.

Per 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 principale web di Nginx. Innanzitutto, crea una directory denominata git con il seguente comando:

mkdir /var/www/html/git

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

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

Quindi, cambia in questa nuova directory e inizializza il repository Git con il comando:

git --bare init

Quindi, aggiorna Git Server con il comando:

git update-server-info

Quindi, 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

Quindi, 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 eventuali errori 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

Quindi, 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 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 17 07:43:46 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Una volta terminato, puoi procedere al passaggio successivo.

Test del server HTTP Git

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

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

cd myapp
git init

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

git remote add origin http://[email protected]/gituser.git

Quindi, crea le directory app1 e app2 e crea anche file app1 e app2 con alcuni contenuti all'interno di quelle directory:

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

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

git add .

Quindi, salva 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://[email protected]': 

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://[email protected]/gituser.git
 * [new branch]      master -> master

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

git clone http://[email protected]/gituser.git

Dovresti ottenere il seguente output:

Cloning into 'gituser'...
Password for 'http://[email protected]': 
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 dalla tua LAN.


Ubuntu
  1. Come installare Nginx su Ubuntu 20.04

  2. Come installare MediaWiki con Nginx su Ubuntu 16.04

  3. Come installare Magento con Nginx su Ubuntu 15.10

  4. Come installare il server HTTP Git con Nginx su Ubuntu 16.04

  5. Come installare HTTP Git Server con Nginx su Debian 11

Come installare FileRun su Ubuntu 20.04 con Apache/Nginx

Come installare InvoiceNinja su Ubuntu 18.04 Server con Apache/Nginx

Come installare InvoiceNinja su Ubuntu 20.04 Server con Apache/Nginx

Come installare Nginx su Ubuntu

Come installare LetsEncrypt con Nginx su Ubuntu 15.04

Come installare HTTP Git Server su Ubuntu 20.04 LTS