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



