Instalación de un Servidor Git

GitBeginner
Practicar Ahora

Introducción

Git es un potente sistema de control de versiones distribuido y de código abierto que es crucial para gestionar eficientemente las versiones de los proyectos. Configurar tu propio servidor Git no solo mejora tu comprensión de los mecanismos internos de Git, sino que también proporciona un entorno seguro para la gestión de proyectos privados. Este laboratorio te guiará a través del proceso de configuración de un servidor Git en una máquina Linux. A pesar de la disponibilidad de plataformas como GitHub para alojar código, un servidor Git privado garantiza que tus datos permanezcan seguros bajo tu control.

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo instalar y configurar Git en un sistema Linux
  • Cómo crear y gestionar un usuario específicamente para operaciones de Git
  • Cómo generar y configurar claves SSH para asegurar las conexiones entre tu máquina local y el servidor Git
  • Cómo inicializar y gestionar un repositorio Git localmente y en un servidor
  • Cómo realizar operaciones de control de versiones como confirmar cambios (committing) y enviarlos a un repositorio remoto (pushing)
  • Cómo verificar la configuración clonando el repositorio para asegurar que todo funciona correctamente

🏆 Logros

Después de completar este proyecto, serás capaz de:

  • Comprender los fundamentos de la instalación y configuración de Git, un sistema de control de versiones distribuido, en un entorno Linux
  • Manejar permisos de usuario y seguridad en un sistema Unix/Linux para tareas específicas de aplicaciones
  • Utilizar técnicas de comunicación segura entre máquinas mediante claves SSH, una habilidad esencial para gestionar servidores remotos
  • Crear y gestionar repositorios Git "bare" (vacíos), que se utilizan para el almacenamiento del lado del servidor en operaciones de Git
  • Confirmar y versionar tus proyectos utilizando comandos de Git, y enviar estos cambios a un servidor remoto
  • Verificar y solucionar problemas comunes en la gestión de repositorios remotos clonando e inspeccionando la integridad de los datos
Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 86%. Ha recibido una tasa de reseñas positivas del 96% por parte de los estudiantes.

Instalación de Git

En este paso, instalaremos Git en tu máquina, la cual servirá tanto como servidor local como remoto. Este ejercicio te preparará para configurar potencialmente un servidor Git en tu computadora personal para alojamiento en red local.

## Update the apt package database to ensure we are working with the latest software list
sudo apt-get update

## Install Git using apt-get
sudo apt-get install git

Este comando actualiza tu lista de paquetes para asegurar que todas las instalaciones subsiguientes estén al día, y luego instala Git, el sistema de control de versiones que gestionará nuestros repositorios.

✨ Revisar Solución y Practicar

Configuración del Usuario Git

Para facilitar la gestión, crearemos un nuevo usuario específicamente para operaciones de Git y configuraremos su directorio de trabajo.

## Create a new user for Git operations
sudo useradd labex-git
sudo passwd labex-git

Establece una contraseña para el usuario de Git (como "labex"), deberás introducir la contraseña dos veces.

A continuación, crea un directorio de trabajo para el usuario de Git y asigna la propiedad

sudo mkdir /home/labex-git
sudo chown -R labex-git:labex-git /home/labex-git

Esta serie de comandos crea un nuevo usuario, establece una contraseña y crea un directorio de trabajo dedicado para las operaciones de Git, asegurando que la gestión de repositorios esté aislada de otras actividades del sistema.

✨ Revisar Solución y Practicar

Generación de Claves SSH

El uso de claves SSH simplificará nuestras operaciones de Git al eliminar la necesidad de introducir credenciales de usuario en cada operación. Generemos un par de claves SSH y configurémoslo.

## Generate an SSH key pair
ssh-keygen -t rsa -C "labex@labex.io"

Presiona enter en todas las indicaciones para usar la configuración predeterminada. Luego, envía la clave pública a la máquina del usuario de Git.

cat ~/.ssh/id_rsa.pub | ssh labex-git@localhost 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

Aquí deberás introducir "yes" y la contraseña que estableciste anteriormente.

Este paso genera un par de claves SSH, asegurando la conexión entre tu configuración local y remota. La clave pública se añade a la lista autorizada en el servidor de Git, permitiendo una comunicación segura sin necesidad de una contraseña para cada operación.

✨ Revisar Solución y Practicar

Creación de un Repositorio Remoto

Ahora, cambiaremos al usuario de Git y configuraremos un repositorio Git "bare" (vacío), que es adecuado para el almacenamiento en el lado del servidor.

## Switch to the Git user
su labex-git

Introduce la contraseña que has establecido.

Ahora, puedes crear una carpeta para el repositorio e inicializar un repositorio "bare".

mkdir -p /home/labex-git/project.git
cd /home/labex-git/project.git
git init --bare

Esta secuencia de comandos cambia el usuario actual al usuario de Git, crea un nuevo directorio para tu repositorio e inicializa un repositorio "bare". Esta configuración es crucial para el servidor Git, ya que almacenará todos los datos que se le envíen sin mantener copias de trabajo, lo que lo hace ideal para enviar (push) y recibir (pull) datos.

✨ Revisar Solución y Practicar

Configuración del Repositorio Local

En este paso, configuraremos el repositorio local en tu máquina. Este proceso es similar a lo que harías típicamente en una plataforma de alojamiento de código.

Primero, vuelve a tu usuario habitual desde el usuario de Git:

## Exit from Git user
exit

Ahora, creemos un directorio para tu proyecto e inicialicemos un repositorio Git:

## Create a directory for your project
mkdir -p /home/labex/project/labex_project
cd /home/labex/project/labex_project

## Initialize a Git repository
git init

Esto configura un nuevo repositorio Git en el directorio especificado, que servirá como tu repositorio local para el proyecto.

Configura los detalles de tu usuario de Git:

## Set your Git username
git config --global user.name "labex"

## Set your Git email
git config --global user.email "labex@labex.io"

Este paso asegura que todos tus commits se registrarán con tu nombre de usuario y correo electrónico, facilitando el seguimiento de los cambios.

Crea un archivo para probar el proceso de commit:

## Create a test document
echo "I am Labex Readme Doc" > readme.md

Este comando crea un archivo de texto simple llamado readme.md que contiene un mensaje de ejemplo, el cual utilizaremos para probar el proceso de commit y push al repositorio remoto.

✨ Revisar Solución y Practicar

Confirmar y Enviar Cambios (Commit and Push)

Habiendo inicializado el repositorio y configurado tu Git, es hora de hacer commit y enviar tus primeros cambios.

## Add all changes to staging
git add .

## Commit the changes
git commit -m "Initial commit"

## Add remote repository
git remote add origin labex-git@localhost:/home/labex-git/project.git

Ahora, podemos enviar los cambios al repositorio remoto.

git push origin master
✨ Revisar Solución y Practicar

Verificación de la Configuración

Finalmente, clonemos el repositorio para asegurarnos de que tus commits se alojan correctamente en el servidor remoto.

## Navigate to the cloning directory
cd /home/labex/project

## Clone the repository
git clone labex-git@localhost:/home/labex-git/project.git

Puedes ver que se ha clonado un nuevo repositorio en la ruta /home/labex/project, y el archivo readme.md dentro de él.

✨ Revisar Solución y Practicar

Resumen

En este laboratorio, has aprendido a configurar y establecer un servidor Git en un sistema Linux, gestionar claves SSH y realizar operaciones típicas de Git como inicializar repositorios, hacer commits de cambios y enviarlos a un servidor remoto. Este ejercicio demostró el ciclo de vida completo de la configuración y el uso de un servidor Git, proporcionándote una base sólida en la gestión segura de tus propios repositorios de código. Las habilidades adquiridas aquí no solo son fundamentales para el desarrollo de software, sino que también mejoran tu comprensión del control de versiones de proyectos en un entorno privado y seguro.