3. Actualización

Es importante:

La actualización de un SIVeL genérico o con personalizaciones simples (módulos, tablas básicas, interfaz y reinterpretaciones, ver Capítulo 6, Personalización) puede hacerla un administrador de red siguiendo las instrucciones de esta sección.

Para actualizar fuentes con personalizaciones profundas (por ejemplo con módulos desarrollados para una organización) es necesario que un desarrollador con conocimientos de PHP, SQL y seguridad informática, mezcle actualizaciones del SIVeL genérico a las fuentes personalizadas y actualicé los módulos particulares.

El proceso de actualización consta de dos partes: primero actualizar las fuentes y después ejecutar la herramienta de actualización actualiza.php en cada sitio. Estos pasos son más simples para pasar de una versión menor a otra, pero requieren más detalles al pasar de una versión 1.1.x a 1.2.

3.1. Actualización de versiones menores (e.g 1.2b1 a 1.2b2)

Descargue fuentes de la versión 1.2 más recientes con uno de los siguientes métodos:

  1. Descargue las fuentes más recientes desde http://sivel.sourceforge.net/1.2/, ubiquelas en el servidor y descomprímalas. Si las descarga con chrome desde el servidor posiblemente quedarán en el directorio Documentos de su cuenta personal por lo que puede descomprimir y remplazar fuentes anteriores. Usando OpenBSD adJ sería con:

    cd ~/Documentos
    tar xvfz SIVeL-1.2.3.tar.gz
    sudo chown $USER:$USER /var/www/htdocs/sivel/
    cp -rf SIVeL-1.2.3/* /var/www/htdocs/sivel/
    

  2. Si desea emplear las fuentes de desarrollo descárguelas y cópielas con

    cd ~
    mkdir tmp2
    cd tmp2
    git clone https://github.com/pasosdeJesus/SIVeL.git
    sudo chown $USER:$USER /var/www/htdocs/sivel
    cp -rf SIVeL/* /var/www/htdocs/sivel
    

  3. Si ya tiene unas fuentes que tengan control de versiones (con el directorio .git), actualicelas asi:

    cd /var/www/htdocs/sivel
    git pull
    

Después debe asegurarse de tener configurado nginx para acceder a SIVeL en su nueva ubicación /var/www/htdocs/sivel/. Para esto edite el archivo de configuración con:

sudo xfw /etc/nginx/nginx.conf

Busque una línea con:

root "/var/www/htdocs";

y si la encuentra remplázela por:

root "/var/www/htdocs/sivel";

Complete reiniciando nginx con

sudo sh /etc/rc.d/nginx restart

Termine ejecutando la herramienta de actualización, abriendo SIVeL con un navegador pero agregando a la dirección actualiza.php (e.g. desde el mismo servidor sería https://127.0.0.1/actualiza.php).

Este mismo procedimiento debe realizarlo si activa módulos.

3.2. Actualización de la versión 1.1 a la versión 1.2

Esta actualización es bastante compleja, se recomienda dejar su versión 1.1 utilizable con propósitos de auditoria y respaldo.

  1. Actualice a la versión más reciente de SIVeL 1.1 (1.1.7 en el momento de este escrito), siguiendo las instrucciones de http://sivel.sourceforge.net/1.1/actualizacion-sivel.html

  2. En cada sitio que convertirá asegurse de tener un usuario administrador que le permita completar el proceso una ve migrado a 1.2

  3. En cada sitio valide sus datos desde el menú Otros->Validar. Examine el reporte y corrija las inconsistencias en su base, puede ejecutar varias veces el procedimiento de validación hasta asegurarse de tener datos consistentes. Esto es muy importante porque para la conversión a 1.1 sólo esperamos que se conviertan datos correctos en datos correctos.

    [Aviso]Aviso

    Los datos incorrectos o inconsistentes pueden perderse al convertirlos a la versión 1.2.

  4. Respalde las fuentes completas:

    	sudo cp -rfp /var/www/htdocs/sivel /var/www/htdocs/sivel11
    

  5. Por cada sitio que vaya a migrar ejecute:

    	cd /var/www/htdocs/sivel/sitios/primersitio
    	../../bin/mueve.sh /var/www/htdocs/sivel11/ primersitio11
    

    Que dejará las fuentes en /var/www/htdocs/sivel11 con un sitio primersitio11 con copia de sus datos en una base también de nombre primersitio11.

    Para poder ingresar en un nuevo URL, digamos http://127.0.0.1/sivel11/primersitio11 en el archivo /etc/nginx/nginx.conf en la sección del servidor https donde opere SIVeL añada:

    	location ~ ^/primersitio11/(.+\.php)$ {
    		alias       /htdocs/sivel11/$1;
    		fastcgi_pass   unix:run/php-fpm.sock;
    		fastcgi_index  index.php;
    		fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    		include        fastcgi_params;
    	}
    	location /primersitio11/ {
    		alias /htdocs/sivel11/$1;
    	}
    

    Reinicie nginx:

    	sudo sh /etc/rc.d/nginx restart
    

    Cree los enlaces necesarios en el directorio sivel11/sitios. Puede ver la manera intentando ingresar al URL, debe ser algo de la forma:

    	cd /var/www/htdocs/sivel11/sitios
    	ln -s primersitio11 127.0.0.1_PRIMESITIO11
    

    Verifique que opera su sitio desde un navegador por ejemplo desde el mismo servidor con https://127.0.0.1/primersitio11/

  6. Cuando complete el procedimiento anterior con todos los sitios, se recomienda borrar las fuentes de de la versión 1.1 de su ubicación anterior. Por ejemplo para eliminar un sitio:

    	cd /var/www/htdocs/sivel/sitios
    	rm -rf primersitio
    

    O si ya migró todos los sitios puede borrar el directorio completo con fuentes de SIVeL 1.1: /var/www/htdocs/sivel

  7. Instale SIVeL 1.2, bien con el paquete disponible en adJ-5.7 o siguiendo los mismos pasos descritos en Sección 3.1, “Actualización de versiones menores (e.g 1.2b1 a 1.2b2)”. Asegurse de ejecutar conf.sh:

    	cd /var/www/htdocs/sivel/
    	./conf.sh -i
    

  8. SIVeL 1.2 para las búsquedas que no tienen en cuenta tildes emplea la extensión unaccent, la cual para su instalación requiere que el usuario dueño de la base de datos sea superusuario. Para convertir un usuario sivel en superusuario:

    sudo su - _postgresql
    psql -h/var/www/var/run/postgresql -Upostgres template1
    ALTER ROLE sivel WITH SUPERUSER;
    			

  9. SIVeL 1.2 emplea codificación UTF-8 por lo que deben recodificarse datos de las bases provenientes de 1.1. Para esto basta sacar copia de la base usando 1.1 y restaurarla en una base ya creada pero sin datos para 1.2.

    Si movió su sistema 1.1 como se describió en esta sección y dejo las ubicaciones por defecto, basta que ejecute:

    	cd /var/www/htdocs/sivel/
    	./conf.sh -i
    

    Por cada sitio que ya haya copiado cree una base en blanco pero con codificación UTF-8:

    	cd /var/www/htdocs/sivel/sitios/
    	SIN_ESQUEMA=1 SIN_DATOS=1 ./nuevo.sh primersitio
    

    Si al hacerlo tiene problemas de clave, debe configurar en el archivo primersitio12/conf.php. Puede examinar la clave del usuario SIVeL que emplea en 1.1, ubicandose en el directorio con fuentes de esa versión y ejecutando:

    	sudo grep "dbclave *=" sitios/primersitio11/conf.php
    

    Restaure los datos de la base respaldada (cambie el nombre de la base y el día de acuerdo a su caso):

    	cd primersitio
    	../../bin/restaura.sh /var/www/resbase/movido-primersitio-dump-03.sql.gz
    

    Configure nginx para abrir el nuevo sitio en /etc/nginx/nginx.conf:

    	location ~ ^/primersitio/(.+\.php)$ {
                alias	   /htdocs/sivel/$1;
    	    fastcgi_pass   unix:run/php-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
    
    	location /primersitio/ {
    		alias /htdocs/sivel/$1;
    	}
    

    A continuación reinicie el servidor web:

    	sudo sh /etc/rc.d/nginx restart
    

  10. Haga utilizable su sitio con todas las formas de conexión que tenga a su base por ejemplo si típicamente desde la red local emplea: https://192.168.44.10/primersitio/ para ingresar a un sitio, ejecute:

    cd /var/www/htdocs/sivel/sitios/
    ln -s primersitio 192.168.44.10_PRIMERSITIO
    			

    y pruebe desde URLs acordes a los enlaces por ejemplo: https://192.168.44.10/primersitio/.

    Haga lo mismo con otras ubicaciones, el nombre del enlace que debe crear lo verá al intentar abrir SIVeL. Asegurese también de dejar un enlace al mismo servidor:

    cd /var/www/htdocs/sivel12/sitios/
    ln -s primersitio 127.0.0.1_PRIMERSITIO
    

  11. Convierta sus datos. Para esto basta que ejecute la herramienta de actualización que debería estar disponible desde el mismo servidor en https://127.0.0.1/actualiza.php. Es posible que al autenticarse vea mensajes de error que tipicamente puede ignorar y que tenga que iniciar la sesión 2 o 3 veces mientras se actualiza en cada intento la forma de cifrado de las claves[5].

    Una vez pueda ingressar y actulizar recomendamos que copie la bitacora de lo realizado y de posibles errores en el proceso, pues estos si son importantes y pueden requerir correcciones.

  12. Audite los datos convertidos. Por ejemplo puede verificar que el número de casos coincidan, así como los conteos por víctimas individuales.

    Para hacer una auditoria más intensiva se sugiere que genere un reporte general de todos los casos del sistema 1.1 y un reporte general en el 1.2 y los compare teniendo en cuenta que ha cambiado un poco el formato del reporte general (Si en su base ha registrado acciones bélicas active el módulo respectivo antes de realizar las comparaciones).

    Abra dos pestañas en su navegador en una realice un reporte general con todos los datos de la base anterior y en la otra el mismo reporte en la base nueva. Después:

    cd /var/www/htdocs/sivel/sitios/sivel
    mkdir compara-migra
    cd compara-migra/
    

    Pegue los datos de la base anterior en un archivo que puede iniciar con:

    xfw anterior.txt
    

    Después pegue los del nuevo SIVeL en otro archivo digamos ábralo con:

    xfw nuevo.txt
    

    A continuación compare diferencias entre ambos archivos con:

    diff anterior.txt nuevo.txt | less
    

    Verá sus resultados con el paginador less.



[5] En caso de que tenga incoveniente reiterativos con claves asegurese que en la base de datos se esté almacenando el condensado bcrypt de la clave y no los antiguos SHA-256 y MD5.