GNU/Linux >> Tutoriales Linux >  >> Ubuntu

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

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

Requisitos

  • Servidor Ubuntu 16.04 nuevo instalado en su sistema.
  • Usuario Sudo con privilegios de root.
  • Dirección IP estática 192.168.15.189 configurada en su servidor

1 Primeros pasos

Antes de comenzar, deberá actualizar su sistema con la última versión estable.

Puede hacerlo 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 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 hacerlo 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 hacerlo 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 cualquier error de configuración con el siguiente comando:

sudo nginx -t

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

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

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 usando 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:

?? 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 Tue 2017-06-20 23:00:11 IST; 51min ago
  Process: 12415 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 7616 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
  Process: 12423 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 12419 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 12427 (nginx)
   CGroup: /system.slice/nginx.service
           ??????12427 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
           ??????12431 nginx: worker process                           

Jun 20 23:00:11 localhost systemd[1]: Stopped A high performance web server and a reverse proxy server.
Jun 20 23:00:11 localhost systemd[1]: Starting A high performance web server and a reverse proxy server...
Jun 20 23:00:11 localhost systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
Jun 20 23:00:11 localhost systemd[1]: Started A high performance web server and a reverse proxy server.

4 Crear repositorio Git

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

Puede crear un repositorio con el nombre repo.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 777 .

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 ejecutando el siguiente comando:

sudo ufw allow http

Ahora puede comprobar el estado del cortafuegos 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 Probar Git en la máquina cliente

Antes de comenzar, deberá instalar git en el sistema cliente. Puede 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 directoires"

Debería ver el siguiente resultado:

[master 002fac9] Add files and directoires
 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]': 
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. Siéntete libre de comentarme si tienes alguna duda.


Ubuntu
  1. Cómo instalar Nginx en Ubuntu 20.04

  2. Cómo instalar MediaWiki con Nginx en Ubuntu 16.04

  3. Cómo instalar Magento con Nginx en Ubuntu 15.10

  4. Cómo instalar el servidor HTTP Git con Nginx en Ubuntu 20.04

  5. Cómo instalar el servidor HTTP Git con Nginx en Debian 11

Cómo instalar FileRun en Ubuntu 20.04 con Apache/Nginx

Cómo instalar InvoiceNinja en un servidor Ubuntu 18.04 con Apache/Nginx

Cómo instalar InvoiceNinja en un servidor Ubuntu 20.04 con Apache/Nginx

Cómo instalar Nginx en Ubuntu

Cómo instalar LetsEncrypt con Nginx en Ubuntu 15.04

Cómo instalar el servidor HTTP Git en Ubuntu 20.04 LTS