Configuración del servidor Git

En el capítulo anterior usamos Github como repositorio remoto. Los proyectos públicos de Github son gratuitos; desde 2019, los repositorios privados de Github también se pueden usar sin límites.

Por supuesto, también podemos configurar nuestro propio servidor Git para usarlo como repositorio privado.

Uso de un repositorio desnudo (Bare Repository)

1. Instalar Git

Instalar Git en un servidor Ubuntu:

sudo apt install git

Si tu sistema es Centos/RedHat, el comando de instalación es:

yum -y install git-core

Comando de instalación en Fedora:

# yum install git (Fedora 21 及之前的版本)
# dnf install git (Fedora 22 及更高新版本)

A continuación, creamos un grupo de usuarios y un usuario git para ejecutar el servicio Git:

$ groupadd git
$ useradd git -g git

2. Crear un repositorio desnudo

Inicia sesión como usuario Git y crea un repositorio desnudo en su directorio home.

$ sudo su - git
Primero elegimos un directorio como repositorio Git, supongamos que es /home/gitrepo/ejemplo.git, y en el directorio /home/gitrepo ejecutamos el comando:
$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo

$ git init --bare ejemplo.git

El comando anterior crea un repositorio vacío en Git. Los repositorios Git en el servidor suelen terminar en.gitAl final. Luego, cambia el propietario del repositorio a git (si lo operan otros usuarios, como root):

$ chown -R git:git ejemplo.git

3. Crear inicio de sesión con certificado

Agrega tu clave pública a ~/.ssh/authorized_keys para permitir el acceso remoto.

Recopila las claves públicas de todos los usuarios que necesitan iniciar sesión. Las claves públicas se encuentran en el archivo id_rsa.pub. Importa nuestras claves públicas al archivo /home/git/.ssh/authorized_keys, una por línea.

Si no existe el archivo, créalo:

$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys
# 在文件中添加你的 SSH 公钥

4. Clonar el repositorio

$ git clone [email protected]:/home/gitrepo/ejemplo.git
Cloning into 'ejemplo'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

192.168.45.4 es la IP del servidor donde se encuentra Git; debes cambiarla a la IP de tu propio servicio Git.

Así queda completada la instalación de nuestro servidor Git.


Usar GitLab

GitLab es una potente herramienta de gestión de servicios Git, adecuada para equipos medianos y grandes, que ofrece funciones completas de gestión de usuarios, CI/CD, revisión de código, etc.

1. Instalar GitLab

SegúnDocumentación oficial de GitLabInstala GitLab.

Por ejemplo, en Ubuntu:

# sudo apt-get update
# sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
# sudo EXTERNAL_URL="http://yourdomain" apt-get install gitlab-ee

EXTERNAL_URL="http://yourdomain" debe configurarse con tu propio dominio o IP pública, por ejemplo:

sudo EXTERNAL_URL=101.132.XX.XX yum install -y gitlab-ee

2. Configurar GitLab

Una vez completada la instalación, abre el navegador y visita http://yourdomain para configurar la cuenta de administrador.

Cuando aparezca información de salida similar a la siguiente, significa que GitLab se ha instalado correctamente.

3. Crear un proyecto

Inicia sesión en GitLab y crea un nuevo proyecto. El nombre de usuario esroot。

Obtener la contraseña de inicio de sesión:

sudo cat /etc/gitlab/initial_root_password

El resultado es el siguiente:

En el primer inicio de sesión, usa el nombre de usuarioroot:

4. Generar el archivo de par de claves y obtener la clave pública

Instalar la herramienta Git (si ya está instalada, omítelo):

sudo apt-get install git

Generar el archivo de par de claves id_rsa:

ssh-keygen

Durante la generación del par de claves, el sistema solicita ingresar el directorio de almacenamiento del par de claves (por defecto, .ssh/id_rsa en el directorio del usuario actual, por ejemplo /home/test/.ssh/id_rsa) y la contraseña del par de claves. Puedes ingresarlos manualmente o presionar Enter para mantener los valores predeterminados.

Después de generarlo, se muestra la siguiente información:

Ver y copiar el contenido del archivo de clave pública id_rsa.pub:

cat .ssh/id_rsa.pub

Muestra información similar a la siguiente:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQVwWjF3KXmI549jDI0fuCgl+syJjjn55iMUDRRiCd/B+9TwUda3l9WXH5i7RU53QGRCsDVFZxixLOlmXr9E3VSqkf8xXBnHs/5E2z5PIOCN0nxfB9xeA1db/QxPwK4gkHisep+eNHRn9x+DpCYDoSoYQN0nBg+H3uqfOqL42mJ+tqSfkyqbhjBf1kjtDTlBfVCWtI0siu7owm+c65+8KNyPlj5/0AyJ4Aqk1OX2jv+YE4nTipucn7rHwWuowasPU86l+uBsLNwOSb+H7loJvQyhEINX2FS1KnpRU+ld20t07n+N3ErfX5xBAGfxXpoN9BKKSP+RT7rvTeXTVE**** [email protected]****

5. Crear un proyecto

En la página principal de GitLab, haz clic en la opción Create a project:

Haz clic en Create blank project, configura Project name y Project URL, y luego haz clic en Create project:

Este artículo usa el proyecto mywork como ejemplo.

6. Agregar clave SSH

En la página del proyecto actual, haz clic en Add SSH key:

Pega el contenido del archivo de clave pública id_rsa.pub en el cuadro de texto de Key:

Haz clic en Add key. Una vez agregada la clave SSH, se muestra como en la siguiente figura:

Copia el enlace Clone; este enlace se usará al realizar la operación de clonación:

Usar GitLab

1. Configurar la información de las personas que usan el repositorio Git, incluidos nombre de usuario y correo electrónico.

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

2. Clonar el proyecto creado a local.

git clone [email protected]:root/mywork.git

3. Subir archivos al servidor GitLab:

Entrar al directorio del proyecto:

cd mywork/ 

Crear el archivo de destino que se necesita subir a GitLab:

echo "test" > /home/test/test.sh

Copiar el archivo o directorio de destino al directorio del proyecto:

cp /home/test/test.sh ./ 

Agregar el archivo test.sh al índice:

git add test.sh

Confirmar test.sh en el repositorio local:

git commit -m "test.sh"

Sincronizar el archivo al servidor GitLab:

git push -u origin main

En la página web, verifica que el archivo test.sh subido ya se ha sincronizado al servidor GitLab:

Otras extensiones