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
).
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 | |
---|---|
Los volcados generados con |
../../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 | |
---|---|
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 | |
---|---|
Los volcados generados con |
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:
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.
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.
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
.
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
Siga las instrucciones y cuando le presente los volcados disponibles eliga el más reciente cuyo tamaño no sea 0.
Pruebe los datos que restauró.
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
.
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:
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
.
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
.
Ingrese al servidor destino y ejecute:
cd /var/www/htdocs/sivel/sitios/sivel ../../bin/pgdump.sh ../../bin/pubweb.sh
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).
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.
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 | |
---|---|
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
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