# OpenGnsys - Git

### Manual de Instalación para Desplegar la API "oggit"

Este manual describe los pasos necesarios para descargar, instalar, configurar y desplegar la API "oggit" en un servidor, incluyendo la configuración de **Nginx** y la integración con **Nelmio API Doc**.

#### Requisitos Previos:
- **PHP 8.2** o superior.
- **Composer** instalado.
- **Nginx** configurado.
- **Symfony** 5.x o 6.x.
- **Git**.

### 1. Descargar el Repositorio

Clona el repositorio del proyecto en el servidor donde deseas desplegar la API. Asegúrate de que el servidor tenga acceso a Git.


### 2. Instalar Dependencias

Una vez descargado el repositorio, navega a la raíz del proyecto y ejecuta el siguiente comando para instalar todas las dependencias necesarias usando **Composer**:

```bash
composer install
```

### 3. Configurar Nginx

A continuación, debes configurar **Nginx** para servir el proyecto Symfony. Crea un archivo de configuración en `/etc/nginx/sites-available/oggit` o edita tu archivo de configuración Nginx existente.

```bash
sudo nano /etc/nginx/sites-available/oggit
```

Copia y pega la siguiente configuración en el archivo:

```nginx
server {
    listen 80;
    server_name localhost;  # Reemplaza 'localhost' por la IP del servidor si es necesario

    # Raíz del documento para el proyecto Symfony
    root /opt/oggit/public;

    # Bloque para manejar las solicitudes a /oggit
    location /oggit {
        try_files $uri $uri/ /index.php?$query_string;
        # Aumentar el tiempo de espera por el install oglive
        proxy_read_timeout 600;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        send_timeout 600;
    }

    # Bloque para manejar las solicitudes a index.php
    location ~ ^/index.php(/|$) {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Asegúrate de que esto sea correcto
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param DOCUMENT_ROOT $document_root;
        internal;
    }

    # Bloque para devolver 404 en cualquier solicitud a archivos PHP que no sean index.php
    location ~ \.php$ {
        return 404;
    }

    # Logs de error y acceso para el proyecto Symfony
    error_log /var/log/nginx/oggit_error.log;
    access_log /var/log/nginx/oggit_access.log;

    location /api/doc {
        try_files $uri /index.php?$query_string;
    }
}
```

Guarda los cambios y activa el sitio:

```bash
sudo ln -s /etc/nginx/sites-available/oggit /etc/nginx/sites-enabled/
```

Reinicia Nginx para aplicar los cambios:

```bash
sudo systemctl restart nginx
```

### 4. Configurar Nelmio API Doc

Si usas **NelmioApiDocBundle** para la documentación Swagger, debes configurar **Nelmio** para aceptar rutas específicas, como las rutas de `/oggit`. Para hacerlo, edita el archivo de configuración **Nelmio**:

```bash
sudo nano /opt/oggit/config/packages/nelmio_api_doc.yaml
```

Asegúrate de que el archivo tenga la siguiente configuración para permitir las rutas de la API:

```yaml
nelmio_api_doc:
    documentation:
        info:
            title: Oggit API
            description: Documentación de la API Oggit
            version: 1.0.0
    areas: # filtrar las áreas documentadas
        path_patterns:
            - ^/oggit
```

Guarda los cambios.

### 5. Verificar la Instalación

1. **Revisar la API**: Accede a tu API a través de `http://<IP-del-servidor>/oggit`. Si todo está correctamente configurado, deberías poder hacer solicitudes a los endpoints definidos.
   
2. **Documentación Swagger**: Accede a la documentación Swagger de la API en `http://<IP-del-servidor>/api/doc` para ver los endpoints documentados.

### 6. Logs y Depuración

Los registros de Nginx se pueden consultar para verificar posibles errores durante el despliegue. Los logs se encuentran en las siguientes rutas:

- **Logs de error**: `/var/log/nginx/oggit_error.log`
- **Logs de acceso**: `/var/log/nginx/oggit_access.log`
