Cómo instalar HTTP Git Server con Nginx en Debian 11

17 dic 2021 5 min di lettura
Cómo instalar HTTP Git Server con Nginx en Debian 11
Indice dei contenuti

Introducción

Git es un sistema de control de versiones de código abierto utilizado por miles de desarrolladores en todo el mundo. Se utiliza para realizar un seguimiento de los cambios de software a nivel de fuente. Le permite realizar un seguimiento de los cambios, retroceder a etapas anteriores y crear una versión alternativa de archivos y directorios.

HTTP Git Server es un proyecto de código abierto que utiliza un servidor web Nginx para servir repositorios Git en su red de área local (LAN). Es muy simple y fácil de configurar. Cualquiera puede manejarlo desde la interfaz de línea de comandos.

En este tutorial, explicaré cómo configurar un servidor de repositorio HTTP de Git con Nginx en Debian 11.

Si desea instalar un servidor HTTP Git en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.

Conexión al servidor

Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:

ssh root@IP_DEL_SERVER

A continuación, deberá ingresar la contraseña del usuario root.

Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario :

ssh nome_utente@IP_DEL_SERVER

Luego se le pedirá que ingrese su contraseña de usuario.

El puerto estándar para conectarse a través de ssh es 22 , si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p , luego escriba el siguiente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Prerrequisitos

  • Un servidor que ejecuta Debian 11.
  • Un nombre de dominio válido apunta a la IP de su servidor.
  • Una contraseña de root está configurada en su servidor.

Instalar Nginx y otras dependencias

Primero, deberá instalar el servidor web Nginx y otros paquetes necesarios para configurar un servidor HTTP Git. Puede instalarlos todos usando el siguiente comando:

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

Una vez instalados todos los paquetes, puede continuar con el siguiente paso.

Crea un repositorio de Git

A continuación, deberá crear un directorio para almacenar el repositorio de Git. Creemos un directorio llamado myrepo dentro del directorio raíz web de Nginx:

mkdir /var/www/html/myrepo

Luego, cambie el directorio a myrepo y cree otro directorio para los usuarios:

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

Luego, vaya al directorio del usuario e inicialice el repositorio de Git usando el siguiente comando:

cd user1.git 
git --bare init

Obtendrá el siguiente resultado:

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

A continuación, actualice la información del servidor Git con el siguiente comando:

git update-server-info

A continuación, cambie la propiedad de myrepo y establezca los permisos adecuados con el siguiente comando:

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

Luego, cree un usuario llamado user1 y establezca una contraseña:

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

Puede configurar la contraseña como se muestra a continuación:

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

Puede verificar su contraseña usando el siguiente comando:

cat /var/www/html/myrepo/htpasswd

Ejemplo de salida:

user1:$apr1$LoyCEkzA$Fjq5nBbLhBRdaxCQBBUQd1

Configurar Nginx para servir el repositorio de Git

A continuación, deberá crear un archivo de configuración de host virtual Nginx para servir el repositorio de Git.

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

Agrega las siguientes líneas:

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

}

Guarde y cierre el archivo cuando haya terminado, luego verifique Nginx para ver si hay errores de sintaxis:

nginx -t

Obtendrá el siguiente resultado:

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

Finalmente, reinicie el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puede verificar el estado de Nginx usando el siguiente comando:

systemctl status nginx

Obtendrá el siguiente resultado:

? 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.

Conéctese al repositorio de Git desde el cliente

En este punto, el servidor HTTP de Git está configurado con Nginx. Ahora es el momento de conectarlo desde la máquina cliente y probarlo.

Primero, instale el paquete Git en la computadora cliente usando el siguiente comando:

apt-get install git -y

Luego, crea un directorio para tu proyecto con el siguiente comando:

mkdir project

Luego, vaya al directorio de su proyecto e inicialice Git usando el siguiente comando:

cd project
git init

A continuación, configure Git con su correo electrónico y nombre de usuario:

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

Luego, agregue su servidor HTTP Git usando el siguiente comando:

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

Luego, cree un directorio llamado dev01 y agregue un archivo en él:

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

Luego, agregue el directorio y el archivo creados al repositorio de Git:

git add .

Luego, confirme los cambios con el siguiente comando:

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

Obtendrá el siguiente resultado:

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

Luego, cargue su archivo y directorio en el servidor HTTP de Git usando el siguiente comando:

git push origin master

Se le pedirá que proporcione su contraseña para iniciar sesión en el servidor Git:

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

Una vez conectado, obtendrá la siguiente salida:

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

También puede descargar su repositorio directamente desde el servidor Git usando el siguiente comando:

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.

Obtendrá el siguiente resultado:

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

Conclusión

En este tutorial, aprendió cómo configurar un servidor HTTP Git con Nginx en Debian 11. Ahora puede implementar esta configuración en su entorno de desarrollo local y administrar y rastrear su proyecto usando la línea de comando.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.