2. Labores administrativas desde el interprete de comandos

SIVeL 1.1 es multisitio es decir en el mismo directorio de fuentes pueden configurarse diversas instancias de SIVeL cada una con su base de datos. Esto facilita la actualización de las fuentes.

Como las operaciones que se presentan a continuación deben realizarse desde una terminal con un interprete de comandos, recomendamos que lea al respecto (ver por ejemplo [basico_OpenBSD]) y que conozca la ubicación de las fuentes de SIVeL y del sitio o sitios que maneje. Por ejemplo en adJ las fuentes de SIVeL estarán en /var/www/htdocs/sivel, el sitio por defecto será sitios/sivel (o con ruta completa /var/www/htdocs/sivel/sitios/sivel).

2.1. Copias de respaldo y restauración

Hay varias herramientas relacionadas con copias de respaldo que el administrador ejecuta desde una terminal en el directorio de un sitio (digamos sitios/sivel):

../../bin/pgdump.sh

Saca volcado de la base (i.e un volcado es un archivo con instrucciones SQL para reconstruir la base completa), lo almacena junto con los del último mes en el directorio de respaldo configurado --por defecto es /var/www/resbase que en OpenBSD adJ está cifrado.

[Aviso]Aviso

Los volcados generados con bin/pgdump.sh incluyen las fuentes de información. Debe mantenerlos cifrados y con permisos que no permitan lectura por parte de usuarios que no administren.

../../bin/respaldo.sh

Almacena volcado junto con los de última semana y opcionalmente lo copia de forma segura (con ssh) a otro(s) computador(es).

[Aviso]Aviso

Las copias de envíe manténgalas en directorios cifrados en los computadores donde lleguen.

Especifique cada computador destino y usuario en la variable $rremotos separandolos con espacio, por ejemplo un sólo destino sería jaime@miservidor.miong.org:copiascifradas/. Para que pueda hacer automático el copiado, genere un par de llaves RSA sin clave con ssh-keygen, configure la llave privada en la variable $llave y agregue la llave pública en el archivo ~/.ssh/authorized_keys de la cuenta a la que enviará las copias.

../../bin/restaura.sh

Que permite restaurar un volcado SQL de la base de datos. Por ejemplo si el volcado está ubicado en /mnt/usb/volcado.sql para incluirlo en la base basta:

cd /var/www/htdocs/sivel/sitios/sivel
../../bin/restaura.sh /mnt/usb/volcado.sql

El volcado puede estar comprimido con gzip.

[Aviso]Aviso

Los volcados generados con bin/pgdump.sh incluyen instrucciones para borrar las tablas existentes antes de insertar los registros volcados. Es decir al restaurarlos borran la información que hubiera en la base.

Es posible editar los volcados antes de restaurarlos, para eso deben descomprimirse antes, por ejemplo:

cp /var/www/resbase/sivel-dump-22.sql.gz /tmp/volcado.sql.gz
gzip -d /tmp/volcado.sql.gz

Si requiere editar un volcado para eliminar las líneas que borran las tablas (i.e las de la forma DROP TABLE) puede emplear:

grep -v "DROP TABLE" /tmp/volcado.sql > /tmp/volcadosindrops.sql
		

Para ver brevemente las diferencias entre 2 volcados puede emplear:

diff /tmp/volcado.sql /tmp/volcadosindrops.sql | less
		

../../bin/importacd.sh

Que intenta restaurar la base de datos de un volcado posiblemente incluido en un CD quemado con bin/copiacd.sh o con bin/copiadvd.sh. Antes de efectuar este procedimiento saque un volcado de la base que tenga.

Otras herramientas que respaldan todas las bases de todos los sitios configurados y que se ejecutan desde el directorio con fuentes de SIVeL (por defecto /var/www/htdocs/sivel son:

bin/resptodositio.sh

Realiza las operaciones de respaldo de cada uno de los sitios (es decir ejecuta ../../bin/respaldo.sh desde cada uno de los sitios configurados).

../../bin/copiacd.sh o ../../bin/copiadvd.sh

Que quema un CD o un DVD con el contenedor cifrado (por defecto /var/resbase.img o el que se especifique en la variable IMAGENRLOCAL de confv.empty y por tanto confv.sh). El archivo de comandos bin/importacd.sh permite recuperar uno de los volcados almacenados en una copia de respaldo generada con esta herramienta.

2.1.1. Procedimiento de volcado en detalle

Si no tiene una instalación de adJ estándar ajuste variables relacionadas con volcados en el archivo conf.php de su sitio, en particular la variable rlocal que debe indicar el directorio en el que quedarán los volcados generados con ../../bin/pgdump.sh.

Para sacar un volcado comprimido de la base, desde un interprete de comandos:

$ cd /var/www/htdocs/sivel/sitios/sivel
$ ../../bin/pgdump.sh

Al ejecutarlo se generará un archivo de la forma /var/www/resbase/sivel-dump-08.sql.gz, en lugar de /var/www/resbase/ el directorio que haya configurado y en lugar de 08 el día del mes.

2.1.2. Procedimiento de restauración a partir de una copia en CD

  1. Saque una copia de respaldo de la base del sitio donde restaurará. Por ejemplo empleando rutas y sitio por defecto:

    cd /var/www/htdocs/sivel/sitios/sivel
    ../../bin/pgdump.sh
                            

    Ponga el CD o el DVD con la copia de respaldo generada con bin/copiacd.sh o con bin/copiadvd.sh.

  2. Ubiquese en el directorio del sitio en el que restaurará la base y ejecute importacd. Por ejemplo empleando las rutas y sitios por defecto:

    cd /var/www/htdocs/sivel/sitios/sivel
    ../../bin/importacd.sh
                            

  3. Siga las instrucciones y cuando le presente los volcados disponibles eliga el más reciente cuyo tamaño no sea 0.

  4. Pruebe los datos que restauró.

2.1.3. Configuración de respaldo automático diario

Se recomienda que configure ejecución diaria de bin/resptodositio.sh. Esto se hace por defecto en OpenBSD adJ con una tarea cron a las 12:00M.

Si desea verificar la tarea cron o configurarla en un sistema tipo Unix, desde la cuenta que administra SIVeL en una terminal ejecute:

crontab -e
	

Esto le permitirá editar un archivo al cual debe añadir una línea, guardarlo y salir. La línea es:

0 12 * * * cd /var/www/htdocs/sivel/ ; sudo rm /tmp/respaldo-*; ./bin/resptodositio.sh > /tmp/respaldo-stdout 2> /tmp/respaldo-stderr
	

que indica ejecución de 3 ordenes todos los días del mes a las 12:00M. Es recomendable que pruebe las 3 ordenes programadas ejecutando desde la línea de comandos y como el usuario al cual programa la tarea:

cd /var/www/htdocs/sivel/ 
sudo rm /tmp/respaldo-*
./bin/resptodositio.sh > /tmp/respaldo-stdout 2> /tmp/respaldo-stderr
	

Tras ejecutarlas deben crearse volcados en /var/www/resbase y transmitirse volcados si lo configuró. Si no opera como esperaba revise los archivos /tmp/respaldo-stdout y /tmp/respaldo-stderr.

2.2. Publicación web

Suponemos que tiene una segunda instalación de SIVeL --preferiblemente en un computador diferente al de la base principal-- para consulta pública por el web de los datos públicos (i.e sin fuentes). Para actualizar esa segunda instalación debe:

  1. En la instalación fuente asegúrese de configurar computador destino en la variable $maquinaweb, por ejemplo miservidor.miong.org. El usuario destino en $usuarioact y el directorio donde quedará un volcado en el destino (la información que llegará a este directorio no incluye fuentes por lo que no requiere estar cifrada), por ejemplo /var/www/resbase.

  2. En la instalación fuente como usuario administrador de SIVeL ejecute:

    cd /var/www/htdocs/sivel/sitios/sivel
    ../../bin/actweb.sh
    						

    Este script generará un volcado, del cual eliminará las fuentes y enviará el volcado resultante con scp al destino configurado con un nombre de la forma web-sf-sinf-22.sql.gz.

  3. Ingrese al servidor destino y ejecute:

    cd /var/www/htdocs/sivel/sitios/sivel
    ../../bin/pgdump.sh
    ../../bin/pubweb.sh
    						

  4. Pruebe el nuevo sitio. También puede realizar algunas operaciones de verificación como contar cantidad de registros en cada tabla en fuente y en destino (ver siguiente sección).

2.3. Otras operaciones con la Base de Datos

Puede administrar usuarios desde la línea de comandos en el directorio de un sitio con:

../../bin/agus.sh

Para agregar un usuario. Al ejecutarlo podrá ingresar toda la información requerida.

../../bin/elimus.sh juan

Para eliminar el usuario juan.

Si olvida la clave de un usuario puede eliminarlo y volver a crearlo o ingresara a la interfaz SQL y modificar el condensado SHA256 con la clave (ver ejemplo más adelante).

Para contar los registros de las tablas de la base empleada por su sitio:

cd /var/www/htdocs/sivel/sitios/sivel
../../bin/cuenta.sh
                        

Puede familiarizarse más con la estructura de la base de datos documentanda en este manual y explorarla con comandos SQL (con cuidado) desde una interfaz interactiva plana que inicia desde el directorio de su sitio con:

cd /var/www/htdocs/sivel/sitios/sivel
../../bin/psql.sh
                        

Por ejemplo para examinar las cuentas y condensados SHA de claves ejecute allí:

SELECT id_usuario, password FROM usuario;
                        

Si por ejemplo olvida la clave del usuario juan puede ponerle la clave noolvidar así:

UPDATE usuario SET password='1e6d8c848f4c51b9e01e5512ac4ae413de3e1840';
                        

Desde esa interfaz puede realizar otras operaciones SQL como borrar, un ejemplo para eliminar acciones bélicas se incluye en un archivo de comandos que puede ejecutar así:

cd /var/www/htdocs/sivel/sitios/sivel
../../bin/elim-belicas.sh
                        

Ese archivo de comandos a su vez emplea bin/elimcomun.sh, que facilita eliminar los casos incluidos en una vista.

2.4. Retroalimentación por correo desde Consulta Web

La información complementada por un usuario en el formulario que se ve tras oprimir el botón 'Comente Caso', será cifrada y enviada a una cuenta de correo.

Hay 3 aspectos por configurar:

  • Ubicación del programa openssl. Que típicamente será ubicado por el script bin/prep-chroot.sh en el directorio /var/www/usr/sbin/ y autodetectado o especificado en el momento de la configuración con conf.sh

  • Llave de cifrado. Especificada en el archivo conf.sh de su sitio como PALABRA_SITIO.

    [Aviso]Aviso

    Cambie una sola vez la llave de cifrado que se distribuye con SIVeL.

  • Cuenta de correo que recibirá la información cifrada. Especificada en el archivo conf.sh del sitio en la variable receptor_correo.

En la cuenta configurada se recibirán dos correos por cada retroalimentación, ambos con el mismo mensaje pero el primero lo incluye en el cuerpo del mensaje en hexadecimal, mientras que el segundo lo incluye en binario como adjunto.

El adjunto puede guardarse en un archivo, digamos /tmp/cifrado, y si la llave de cifrado fuera la cadena `La llave', podría descifrarse y guardarse en el archivo /tmp/descif con:

openssl bf -nosalt -d -in /tmp/cifrado -out /tmp/descif -k "La llave"
		

El mensaje en hexadecimal primero tendría que salvarse en un archivo, digamos /tmp/hex, pasarse a binario, digamos al archivo /tmp/cifrado y después descifrarse como se explicó en el párrafo anterior. Para convertir de hexadecimal a binario podría emplear el script herram/hex2bin.php distribuido con las fuentes de SIVeL, que de estar ubicadas en /var/www/htdocs/sivel, se emplearía así:

cd /var/www/htdocs/sivel
php herram/hex2bin.php < /tmp/hex > /tmp/cifrado
		

2.5. Configuración de un nuevo sitio

Dado que SIVeL 1.1 es multisitio es posible sobre una misma instalación de fuentes, configurar diversos sitios cada uno con su URL, autenticación y base de datos únicos.

Para agregar un nuevo sitio (digamos sivelmb) en una términal ubiquese en las fuentes de SIVeL ejecutando:

cd /var/www/htdocs/sivel/sitios
./nuevo.sh sivelmb
        

a continuación agregue un punto de entrada en el servidor web, por ejemplo para ingresar desde el servidor con la URL https://127.0.0.1/sivelmb/, si las fuentes de SIVeL están en /var/www/htdocs/sivel agregué a la sección de Alias de /var/www/conf/httpd.conf. Puede editar el archivo de configuracion con:

sudo xfw /var/www/conf/httpd.conf
        

Busque la palabra "Alias" y agregue:

Alias /sivelmb/ "/var/www/htdocs/sivel"
        

y reinicie el servidor web desde una terminal con:

sudo apachectl stop
sudo sh /etc/rc.local
        

Después cree un enlace que permita redireccionar a su nuevo sitio, para determinar el nombre del enlace convierta los símbolos '/' del URL a '_' y páselo a mayúsculas o aún más sencillo intente ingresar al URL donde debe ver un mensaje que incluirá instrucciones para crear el enlace. Para este ejemplo desde el directorio sitios ejecute:

ln -s sivelmb 127.0.0.1_SIVELMB