Cómo instalar el servidor HTTP Git con Nginx en Ubuntu 18.04 LTS

Comprobación de sintaxis de Nginx

Git es un sistema de control de versiones gratuito y de código abierto que se puede utilizar para realizar un seguimiento de los cambios de código. Git te permite crear muchos repositorios para la misma aplicación y coordinar el trabajo en esos archivos entre varias personas. Se utiliza principalmente para la gestión del código fuente en el desarrollo de software.

En este artículo, aprenderemos cómo instalar un servidor HTTP Git con Nginx en Ubuntu 18.04 LTS (Bionic Beaver).

Requisitos

  • Nuevo servidor Ubuntu 18.04 instalado en su sistema.
  • Usuario Sudo con privilegios de root.
  • Se configura una direcci√≥n IP est√°tica en su servidor, yo uso la IP 192.168.1.100 en este tutorial.

1 Primeros pasos

Antes de comenzar, deber√° actualizar su sistema con la √ļltima versi√≥n estable.

Puede hacer esto ejecutando el siguiente comando:

sudo apt-get update -y
sudo apt-get upgrade -y

Una vez que su sistema esté actualizado, reinícielo e inicie sesión con el usuario sudo.

2 Instalar los paquetes necesarios

Primero, deber√° instalar algunos paquetes necesarios, incluidos nginx, git, nano y fcgiwrap en su sistema. Puede instalarlos todos ejecutando el siguiente comando:

sudo apt-get install nginx git nano fcgiwrap apache2-utils -y

Una vez que se hayan instalado todos los paquetes necesarios, deber√° crear un directorio para el repositorio de Git. Puede hacer esto ejecutando el siguiente comando:

sudo mkdir /var/www/html/git

A continuación, otorgue el permiso adecuado al directorio de Git:

sudo chown -R www-data:www-data /var/www/html/git

Una vez que haya terminado, puede proceder a configurar el servidor web Nginx.

3 Configurar Nginx

Primero, deberá configurar Nginx para pasar el tráfico de Git a Git. Puede hacer esto editando el archivo de configuración predeterminado de Nginx:

sudo nano /etc/nginx/sites-available/default

Cambie el archivo como se muestra a continuación:

# Default server configuration
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;


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

        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; # Git pushes can be massive, just to make sure nginx doesn't suddenly cut the connection add this.
    auth_basic "Git Login"; # Whatever text will do.
    auth_basic_user_file "/var/www/html/git/htpasswd";
    include /etc/nginx/fastcgi_params; # Include the default fastcgi configs
    fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; # Tells fastcgi to pass the request to the git http backend executable
    fastcgi_param GIT_HTTP_EXPORT_ALL "";
    fastcgi_param GIT_PROJECT_ROOT /var/www/html/git; # /var/www/git is the location of all of your git repositories.
    fastcgi_param REMOTE_USER $remote_user;
    fastcgi_param PATH_INFO $1; # Takes the capture group from our location directive and gives git that.
    fastcgi_pass  unix:/var/run/fcgiwrap.socket; # Pass the request to fastcgi
}

}

Guarde y cierre el archivo cuando haya terminado. Luego pruebe Nginx para detectar cualquier error de configuración con el siguiente comando:

sudo nginx -t

Si todo está bien, debería ver el siguiente resultado:

Comprobación de sintaxis de Nginx

A continuación, deberá crear una cuenta de usuario que deberá usar para navegar o confirmar el repositorio. Puede crear un usuario con el nombre hitesh utilizando la utilidad htpasswd:

sudo htpasswd -c /var/www/html/git/htpasswd hitesh

Finalmente, reinicie Nginx para aplicar todos los cambios con el siguiente comando:

sudo systemctl restart nginx

Puede verificar el estado del servidor Nginx con el siguiente comando:

sudo systemctl status nginx

Debería ver el siguiente resultado:

√Čxito del estado de Nginx

4 Crear un repositorio Git

Una vez que todo esté configurado correctamente, es hora de crear el repositorio de Git.

Puede crear un repositorio con el nombre hitesh.git con el siguiente comando:

cd /var/www/html/git
sudo mkdir hitesh.git
sudo cd hitesh.git
sudo git --bare init
sudo git update-server-info
sudo chown -R www-data.www-data .
sudo chmod -R 755 .

A continuación, deberá permitir el servicio HTTP a través del cortafuegos UFW. Por defecto, UFW está deshabilitado en su sistema, por lo que debe habilitarlo primero. Puede habilitarlo con el siguiente comando:

sudo ufw enable

Una vez que el firewall UFW est√° habilitado, puede habilitar el servicio HTTP y SSH ejecutando el siguiente comando:

sudo ufw allow http
sudo ufw allow ssh

SSH no es necesario para GIT, pero debe habilitarlo para poder administrar su servidor a través de SSH.

Ahora puede verificar el estado del firewall UFW ejecutando el siguiente comando:

sudo ufw status

Ok, eso es todo para la configuración del lado del servidor. Ahora puede pasar al lado del cliente para probar Git.

5 Pruebe Git en la m√°quina del cliente

Antes de comenzar, deber√° instalar git en el sistema cliente. Puedes instalarlo con el siguiente comando:

sudo apt-get install git -y

Primero, crea un repositorio local con el siguiente comando:

sudo mkdir ~/testproject

A continuaci√≥n, cambie el directorio a ‘testproject’ e inicie el nuevo repositorio remoto con el siguiente comando:

cd ~/testproject
git init
git remote add origin http://[email protected]/hitesh.git

A continuación, cree algunos archivos y directorios con el siguiente comando:

mkdir test1 test2 test3
echo "This is my first repository" > test1/repo1
echo "This is my second repository" > test2/repo2
echo "This is my third repository" > test3/repo3

A continuación, ejecute el siguiente comando para agregar todos los archivos y directorios al repositorio:

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

Debería ver el siguiente resultado:

[master 002fac9] Add files and directories
 3 files changed, 3 insertions(+)
 create mode 100644 repo1
 create mode 100644 repo2
 create mode 100644 repo3

A continuación, envíe todos los archivos y directorios al servidor Git con el siguiente comando:

git push origin master

Debería ver el siguiente resultado:

Password for 'http://[email protected].168.1.100': 
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (5/5), 422 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To http://[email protected]/hitesh.git
   68f1270..002fac9  master -> master

Ahora, todos sus archivos y directorios se han enviado a su servidor Git.

El proceso de creación de su repositorio Git ahora está completo. Ahora puede clonar fácilmente su repositorio en el futuro. Puede clonar su repositorio usando el siguiente comando en el sistema remoto:

git clone [email protected]:/var/www/html/git/hitesh.git

Debería ver el siguiente resultado:

Cloning into 'hitesh'...
[email protected]'s password: 
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (3/3), done.
Receiving objects: 100% (8/8), 598 bytes | 0 bytes/s, done.
remote: Total 8 (delta 0), reused 0 (delta 0)
Checking connectivity... done.

Ahora, cambie el directorio al repositorio clonado con el siguiente comando:

cd hitesh
tree

Debería ver el siguiente resultado:

.
|-- test1
|   `-- repo1
|-- test2
|   `-- repo2
`-- test3
    `-- repo3

3 directories, 3 files

Conclusión

Espero que ahora pueda insertar, extraer, clonar y confirmar fácilmente el código fuente utilizando el servidor Git. No dudes en comentarme si tienes alguna duda.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *