Come installare HTTP Git Server con Nginx su Ubuntu 20.04
Su questa pagina
- Prerequisiti
- Per iniziare
- Installa Nginx e Git
- Crea un repository Git
- Configura Nginx per Git
- Prova HTTP Git Server
- 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.