GNU/Linux >> Linux Esercitazione >  >> Debian

Come installare HTTP Git Server con Nginx su Debian 11

Git è un sistema di controllo della versione open source utilizzato da migliaia di sviluppatori in tutto il mondo. Viene utilizzato per tenere traccia delle modifiche al software a livello di origine. Ti consente di tenere traccia delle modifiche, ripristinare le fasi precedenti e creare una versione alternativa di file e directory.

HTTP Git Server è un progetto open source che utilizza un server web Nginx per servire i repository Git sulla tua rete locale (LAN). È molto semplice e facile da configurare. Chiunque può gestirlo dall'interfaccia della riga di comando.

In questo tutorial, spiegherò come configurare un server di repository Git HTTP con Nginx su Debian 11.

Prerequisiti

  • Un server che esegue Debian 11.
  • Un nome di dominio valido puntato all'IP del tuo server.
  • Sul tuo server è configurata una password di root.

Installa Nginx e altre dipendenze

Innanzitutto, dovrai installare il server Web Nginx e altri pacchetti richiesti per configurare un server HTTP Git. Puoi installarli tutti usando 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 una directory per archiviare il repository Git. Creiamo una directory chiamata myrepo all'interno della directory principale web di Nginx:

mkdir /var/www/html/myrepo

Quindi, cambia la directory in myrepo e crea un'altra directory per gli utenti:

cd /var/www/html/myrepo
mkdir user1.git

Quindi, vai alla directory utente e inizializza il repository Git usando il seguente comando:

cd user1.git
git --bare init

Otterrai il seguente output:

Initialized empty Git repository in /var/www/html/myrepo/user1.git/

Quindi, aggiorna le informazioni sul server Git con il seguente comando:

git update-server-info

Quindi, cambia la proprietà di myrepo e imposta l'autorizzazione appropriata con il seguente comando:

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

Quindi, crea un utente chiamato utente1 e imposta una password:

htpasswd -c /var/www/html/myrepo/htpasswd user1

Puoi impostare la password come mostrato di seguito:

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

Puoi controllare la tua password usando il seguente comando:

cat /var/www/html/myrepo/htpasswd

Esempio di output:

user1:$apr1$LoyCEkzA$Fjq5nBbLhBRdaxCQBBUQd1

Configura Nginx per servire il repository Git

Successivamente, dovrai creare un file di configurazione dell'host virtuale Nginx per servire il repository Git.

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

Aggiungi le seguenti righe:

server {
        listen 80;

        root /var/www/html/myrepo;

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

        server_name git.yourdomain.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/myrepo/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/myrepo;
    fastcgi_param REMOTE_USER $remote_user;
    fastcgi_param PATH_INFO $1; 
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
}

}

Salva e chiudi il file al termine, quindi verifica Nginx per eventuali errori di sintassi:

nginx -t

Otterrai il seguente output:

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

Infine, riavvia il servizio Nginx per applicare le modifiche:

systemctl restart nginx

Puoi anche controllare lo stato di Nginx usando il seguente comando:

systemctl status nginx

Otterrai 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 Sat 2021-12-11 08:00:04 UTC; 2s ago
       Docs: man:nginx(8)
    Process: 144985 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 144986 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 144987 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 2.5M
        CPU: 42ms
     CGroup: /system.slice/nginx.service
             ??144987 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??144988 nginx: worker process

Dec 11 08:00:04 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 11 08:00:04 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Dec 11 08:00:04 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Connetti al repository Git dal client

A questo punto, il server HTTP Git è configurato con Nginx. Ora è il momento di collegarlo dal computer client e testarlo.

Innanzitutto, installa il pacchetto Git sul computer client utilizzando il seguente comando:

apt-get install git -y

Quindi, crea una directory per il tuo progetto con il seguente comando:

mkdir project

Quindi, vai alla directory del tuo progetto e inizializza Git usando il comando seguente:

cd project
git init

Quindi, configura Git usando la tua email e il tuo nome utente:

git config --global user.email "[email protected]"
git config --global user.name "user1"

Quindi, aggiungi il tuo server HTTP Git usando il seguente comando:

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

Quindi, crea una directory chiamata dev01 e aggiungi un file al suo interno:

mkdir dev01
echo "This is my first application" > dev01/file1

Quindi, aggiungi la directory e il file creati al repository Git:

git add .

Quindi, salva le modifiche con il seguente comando:

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

Otterrai il seguente output:

[master (root-commit) 0299d83] Add files and directories
 1 file changed, 1 insertion(+)
 create mode 100644 dev01/file1

Successivamente, carica il file e la directory sul server HTTP Git utilizzando il comando seguente:

git push origin master

Ti verrà chiesto di fornire la tua password per accedere al server Git:

Password for 'http://[email protected]': 

Una volta connesso, otterrai il seguente output:

Counting objects: 4, done.
Writing objects: 100% (4/4), 281 bytes | 281.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To http://git.yourdomain.com/user1.git
 * [new branch]      master -> master

Puoi anche scaricare il tuo repository direttamente dal server Git usando il seguente comando:

git clone http://[email protected]domain.com/user1.git

Otterrai il seguente output:

Cloning into 'user1'...
Password for 'http://[email protected]': 
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), done.

Conclusione

Nella guida sopra, hai imparato come configurare un server HTTP Git con Nginx su Debian 11. Ora puoi implementare questa configurazione nel tuo ambiente di sviluppo locale e gestire e tenere traccia del tuo progetto usando la riga di comando.


Debian
  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 Ghost su Debian con Nginx

  4. Come installare DokuWiki su Debian Wheezy con Nginx

  5. Come installare WonderCMS con Nginx su Debian 11

Come installare Nextcloud 10 con Nginx su Debian 8

Come installare phpMyAdmin con Nginx su Debian 11 Bullseye

Come installare phpMyAdmin con Nginx su Debian 11

Come installare Nginx con PHP-FPM su Debian 11

Come installare HTTP Git Server su Ubuntu 20.04 LTS

Come installare Nginx in Debian 7