GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare HTTP Git Server con Nginx su Ubuntu 18.04 LTS

Git è un sistema di controllo della versione gratuito e open source che può essere utilizzato per tenere traccia delle modifiche al codice. Git ti consente di creare molti repository per la stessa applicazione e di coordinare il lavoro su quei file tra più persone. Viene utilizzato principalmente per la gestione del codice sorgente nello sviluppo di software.

In questo articolo impareremo come installare un server HTTP Git con Nginx su Ubuntu 18.04 LTS (Bionic Beaver).

Requisiti

  • Server Ubuntu 18.04 fresco installato sul tuo sistema.
  • Utente Sudo con privilegi di root.
  • Un indirizzo IP statico è configurato sul tuo server, io uso l'IP 192.168.1.100 in questo tutorial.

1 Per iniziare

Prima di iniziare, dovrai aggiornare il tuo sistema con l'ultima versione stabile.

Puoi farlo eseguendo il seguente comando:

sudo apt-get update -y
sudo apt-get upgrade -y

Una volta aggiornato il sistema, riavvia il sistema e accedi con l'utente sudo.

2 Installa i pacchetti richiesti

Innanzitutto, dovrai installare alcuni pacchetti richiesti tra cui nginx, git, nano e fcgiwrap sul tuo sistema. Puoi installarli tutti eseguendo il seguente comando:

sudo apt-get install nginx git nano fcgiwrap apache2-utils -y

Una volta installati tutti i pacchetti richiesti, dovrai creare una directory per il repository Git. Puoi farlo eseguendo il seguente comando:

sudo mkdir /var/www/html/git

Quindi, dai l'autorizzazione adeguata alla directory Git:

sudo chown -R www-data:www-data /var/www/html/git

Una volta terminato, puoi procedere alla configurazione del server web Nginx.

3 Configura Nginx

Innanzitutto, dovrai configurare Nginx per trasmettere il traffico Git a Git. Puoi farlo modificando il file di configurazione predefinito di Nginx:

sudo nano /etc/nginx/sites-available/default

Modifica il file come mostrato di seguito:

# Default server configuration
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;


        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 _;

        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; # 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/html/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/html/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
}

}

Salva e chiudi il file quando hai finito. Quindi testa Nginx per qualsiasi errore di configurazione con il seguente comando:

sudo nginx -t

Se tutto va bene, dovresti vedere il seguente output:

Successivamente, dovrai creare un account utente di cui dovrai utilizzare per sfogliare il commit nel repository. Puoi creare un utente con il nome hitesh usando l'utilità htpasswd:

sudo htpasswd -c /var/www/html/git/htpasswd hitesh

Infine, riavvia Nginx per applicare tutte le modifiche con il seguente comando:

sudo systemctl restart nginx

Puoi controllare lo stato del server Nginx con il seguente comando:

sudo systemctl status nginx

Dovresti vedere il seguente output:

4 Crea un repository Git

Una volta che tutto è configurato correttamente, è il momento di creare un repository Git.

Puoi creare un repository con nome hitesh.git con il seguente comando:

cd /var/www/html/git
sudo mkdir hitesh.git
sudo cd hitesh.git
sudo git --bare init
sudo git update-server-info
sudo chown -R www-data.www-data .
sudo chmod -R 755 .

Successivamente, dovrai consentire il servizio HTTP tramite il firewall UFW. Per impostazione predefinita UFW è disabilitato sul tuo sistema, quindi devi prima abilitarlo. Puoi abilitarlo con il seguente comando:

sudo ufw enable

Una volta abilitato il firewall UFW, puoi consentire il servizio HTTP e SSH eseguendo il comando seguente:

sudo ufw allow http
sudo ufw allow ssh

SSH non è necessario per GIT, ma dovresti abilitarlo per poter gestire il tuo server tramite SSH.

Ora puoi controllare lo stato del firewall UFW eseguendo il comando seguente:

sudo ufw status

Ok, questo è tutto per la configurazione lato server. Ora puoi passare al lato client per testare Git.

5 Testare Git sul computer client

Prima di iniziare, dovrai installare git sul sistema client. Puoi installarlo con il seguente comando:

sudo apt-get install git -y

Innanzitutto, crea un repository locale con il seguente comando:

sudo mkdir ~/testproject

Quindi, cambia la directory in 'testproject' e avvia il nuovo repository remoto con il seguente comando:

cd ~/testproject
git init
git remote add origin http://[email protected]/hitesh.git

Quindi, crea alcuni file e directory con il seguente comando:

mkdir test1 test2 test3
echo "This is my first repository" > test1/repo1
echo "This is my second repository" > test2/repo2
echo "This is my third repository" > test3/repo3

Quindi, esegui il comando seguente per aggiungere tutti i file e le directory al repository:

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

Dovresti vedere il seguente output:

[master 002fac9] Add files and directories
 3 files changed, 3 insertions(+)
 create mode 100644 repo1
 create mode 100644 repo2
 create mode 100644 repo3

Quindi, invia tutti i file e le directory al server Git con il seguente comando:

git push origin master

Dovresti vedere il seguente output:

Password for 'http://[email protected]': 
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (5/5), 422 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To http://[email protected]/hitesh.git
   68f1270..002fac9  master -> master

Ora, tutti i tuoi file e directory sono stati salvati sul tuo server Git.

Il processo di creazione del tuo repository Git è ora completato. Ora puoi clonare facilmente il tuo repository in futuro. Puoi clonare il tuo repository usando il seguente comando sul sistema remoto:

git clone [email protected]:/var/www/html/git/hitesh.git

Dovresti vedere il seguente output:

Cloning into 'hitesh'...
[email protected]'s password: 
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (3/3), done.
Receiving objects: 100% (8/8), 598 bytes | 0 bytes/s, done.
remote: Total 8 (delta 0), reused 0 (delta 0)
Checking connectivity... done.

Ora, cambia la directory nel repository clonato con il seguente comando:

cd hitesh
tree

Dovresti vedere il seguente output:

.
|-- test1
|   `-- repo1
|-- test2
|   `-- repo2
`-- test3
    `-- repo3

3 directories, 3 files

Scarica come VM

Questo tutorial è disponibile come immagine della macchina virtuale pronta per l'uso in formato ovf/ova compatibile con VMWare e Virtualbox. L'immagine della macchina virtuale utilizza i seguenti dettagli di accesso:

Accesso SSH/Shell

Nome utente:amministratore
Password:howtoforge

Questo utente dispone dei diritti sudo.

Accesso GIT

Nome utente: hitesh
Password:howtoforge

L'IP della VM è 192.168.1.100, può essere modificato nel file /etc/netplan/01-netcfg.yaml. Si prega di modificare tutte le password di cui sopra per proteggere la macchina virtuale.

Conclusione

Spero che ora tu possa facilmente eseguire il push, pull, clonare e eseguire il commit del codice sorgente utilizzando il server Git. Sentiti libero di commentarmi se hai qualche dubbio.

  • Ubuntu
  • Git

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

  2. Come installare HTTP Git Server con Nginx su Ubuntu 20.04

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

  4. Come installare RabbitMQ Server su Ubuntu 18.04 e 16.04 LTS

  5. Come installare Gitlab Server su Ubuntu 18.04 e 16.04 LTS

Come installare WordPress 5.x con Nginx su Ubuntu 18.04 / Ubuntu 16.04

Come installare RabbitMQ Server su Ubuntu 18.04 LTS

Come installare WordPress con Nginx su Ubuntu

Come installare Nginx su Ubuntu 18.04 LTS

Come installare Git su Ubuntu 20.04 LTS

Come installare HTTP Git Server su Ubuntu 20.04 LTS