# Instalación y Actualización

La instalación será aún más fácil si destina un computador como servidor de SIVeL. Si debe emplear en el mismo computador otros sistemas operativos se recomienda que destine un disco duro independiente para SIVeL y configure un gestor de arranque que permita ingresar a uno o a otro en el momento de arrancar el equipo. En último caso también es posible instalar en un mismo disco OpenBSD y otros sistemas como Linux o Windows, para esto asegúrese de dejar una partición primaria de al menos 2GB para OpenBSD (si se trata de un computador nuevo haga la solicitud al vendedor, si se trata de un computador donde ya está instalado Windows/Linux destine una de las particiones existentes o emplee una herramienta para reparticionar).

Para instalar puede descargar de Internet la imagen ISO de la distribución Aprendiendo De Jesus (adJ) &VER-ADJ; (ver ) y quemarla en un CD como imagen ISO (no como simple archivo o de lo contrario no podrá arrancar su computador con esta). AdJ es una distribución de OpenBSD &VER-OPENBSD; con todos los paquetes requeridos por SIVeL, SIVeL, datos públicos del Banco de Datos de DH, DIH y VPS del CINEP y un script de instalación que instala y configura SIVeL y sus prerrequisitos.

Por precaución saque copia de la información importante de su disco. Inicie su computador con el CD. Instale OpenBSD respondiendo las preguntas del instalador estándar de OpenBSD --y teniendo cuidado de instalar justo en el disco o partición que ha destinado para OpenBSD. Reinicie y configure arranque múltiple si es el caso. Una vez entre en su sistema recién instalado ejecute el script `/inst-adJ.sh` y responda las preguntas que le hace recordando dejar PostgreSQL en imagen encriptada, a continuación ejecute el script `/inst-sivel.sh`.

El resto de instrucciones de este capítulo, le servirán si tiene inconvenientes con el procedimiento anterior o si prefiere hacer una instalación menos automatizada o en otras plataformas.

## Prerrequisitos

- Sistema tipo Unix, recomendamos OpenBSD &VER-OPENBSD; (ver ) y en particular la distribución Aprendiendo de Jesús (ver ).

- Para hacer pruebas durante la configuración puede emplear una consola y el navegador tipo texto `lynx`, sin embargo se sugiere configurar X-Window (ver ) y un navegador gráfico como `mozilla-firefox`.

- Se sugiere crear dos imágenes encriptadas en las que residirán la base de datos y copias de respaldo respectivamente. Cada una debe ser al menos de 100MB aunque se sugiere 700MB --para que quepa cada una en un CD por si desea mantener copias de respaldo (ver ).

- Servidor web con SSL, recomendamos Apache con `mod_ssl` (ver ). Sugerimos que lo ejecute con `chroot` en `/var/www` y que cree el directorio `/var/www/tmp` para que PostgreSQL ubique su socket allí, con permisos de ejecución, lectura y escritura para todos.

- PostgreSQL (ver ), sugerimos que la configure para usar sockets en `/var/www/tmp`. Así mismo se sugiere que active autovaciado en `/var/postgresql/data/postgresql.conf` con las líneas:

      autovacuum = on
      stats_start_collector = on
      stats_row_level = on

- PHP 5 con módulo para PostgreSQL y Pear (ver instalación de PHP 5 en ).

  Se sugiere editar `/var/www/conf/php.ini` para asegurar que tiene:

      max_execution_time = 900
      max_input_time = 900

  así cada analista tendrá más tiempo de edición en algunos casos.

  Para instalar `pear` en OpenBSD, configure la variable `PKG_PATH` (ver ) y ejecute:

      # pkg_add $PKG_PATH/pear-version.tgz

- Puede instalar algunos paquetes estables de pear que también están disponibles como paquetes de OpenBSD por ejemplo con:

      # pkg_add pear-DB

  Otros paquetes estables para pear los puede instalar con una conexión a Internet por ejemplo con:

      # pear install Auth
      # pear install HTML_Common
      # pear install HTML_Menu
      # pear install HTML_QuickForm
      # pear install HTML_QuickForm_Controller
      # pear install HTML_Table
      # pear install HTML_Javascript
      # pear install HTML_CSS
      # pear install Date
      # pear install DB_DataObject
      # pear install Mail
      # pear install Mail_Mime
      # pear install Net_Socket
      # pear install Net_SMTP
      # pear install Benchmark

  Y los paquetes en desarrollo en el momento de este escrito los puede descargar e instalar con:

      # pear download Validate
      # pear install ./Validate-*
      # pear download DB_DataObject_FormBuilder
      # pear install ./DB_DataObject_FormBuilder-*

## Procedimiento de instalación

1. Aunque no es indispensable se recomienda que cree una cuenta para sivel (digamos con login `sivel`).

2. Instale en un directorio utilizable por Apache con SSL. Por ejemplo si las fuentes están en `~/baja/sivel-&PRY-VERSION;.tar.gz` y va a instalar en el directorio `/var/www/users/sivel` que debería ser visible para Apache, emplee:

       # cd /var/www/users
       # mkdir sivel
       # ln -s /var/www/users/sivel/ /home/sivel/sivel
       # cd /home/sivel
       # tar -x -vz -s "/sivel-[0-9.]*/sivel/g" -f ~/baja/sivel-&PRY-VERSION;.tar.gz
       # cd sivel
       # chown -R sivel:sivel .
       # chmod -R a+r .
       # chmod -R a+x aut
       # chmod -R go-rx bin
       # touch ultimoenvio.txt
       # chown www:www ultimoenvio.txt

   Después puede editar `/var/www/conf/httpd.conf` y cambiar algunas líneas de la configuracion de SSL (remplace `miServidor` y `micorreo@midominio.org` por valores apropiados para su caso):

       DocumentRoot /var/www/users/sivel
       ServerName miServidor
       ServerAdmin micorreo@midominio.org
       ErrorLog logs/error_log
       TransferLog logs/access_log

3. Cree un usuario para PostgreSQL para manejar la base de datos:

       # mkdir /var/www/tmp
       # chmod a+w /var/www/tmp
       # su - _postgresql
       $ createuser -h /var/www/tmp/ -A -d sivel
       $ exit

4. Ejecute el archivo de comandos de configuración:

       ./conf.sh

5. En el directorio con fuentes (`/home/sivel/sivel`) copie el archivo `aut/conf.php.plantilla` en `aut/conf.php` y edite este último (sólo tendrá que hacer cambios si empleó un usuario o desea emplear una base de datos con un nombre diferente a `sivel`). Asegurese de tener un usuario para PostgreSQL y que tal usuario quede configurado en `aut/conf.php`

   Copie el archivo `DataObject.ini.plantilla` en `DataObject.ini` y editelo (debe coincidir usuario con el de `aut/conf.php`).

   Copie el archivo `vardb.sh.plantilla` en `vardb.sh` y modifique la ruta de instalación en la variable `dirap`.

   Pude poner el logo de su organización en `imagen/FondoSecc.jpg`. Si el nombre de la base de datos que emplea no es `sivel` (digamos que es `sivel-devel`) cree enlaces simbólicos:

       ln -s sivel.ini sivel-devel.ini
       ln -s sivel.links.ini sivel-devel.links.ini

6. Para crear y poblar la base de datos, desde una cuenta con permiso para crear bases de datos de PostgreSQL (en este ejemplo `sivel`) ejecute:

       	./bin/creapg.sh

7. Agregue uno o más usuarios con:

       	./bin/agus.sh

   Uno de los usuarios que cree debe estar en el rol de administrador.

8. Desde un navegador abra el directorio en el que instaló. Si lo requiere puede revisar errores en la bitácora de Apache (por defecto `/var/www/log/error_log`).

### Otros pasos de instalación opcionales

1. Si desea generar la documentación:

       $ cd doc
       $ ./conf.sh
       $ cp personaliza.ent.plantilla personaliza.ent

   modifique `personaliza.ent` y finalmente:

       make

2. Si desea configurar un esquema de respaldos puede emplear los archivos de comandos `bin/pgdump.sh` y `bin/respaldo.sh`, que facilitan hacer respaldo diario y mantener la copia del último mes en el computador local y opcionalmente de la última semana en un computador remoto. Requieren `scp` y algunas variables de configuración de `aut/conf.php` (ver ).

3. Para activar corrección ortográfica, instale ispell e ispell-spanish. Si Apache corre chroot en un directorio (digamos `/var/www`), cree en ese directorio la estructura de directorios que requieren ispell e ispell-spanish y copie lo básico de estos en la nueva estructura ---las librerías compartidas que `ispell` requiera puede verlas con `ldd`. Eventualmente podrá efectuar estas operaciones con el script `bin/prep-chroot.sh` distribuido junto con las fuentes de SIVeL.

   Una vez instale y pruebe `ispell` en el directorio chroot, desde el directorio de fuentes de SIVeL verifique que la ruta esté especificada en `confv.empty` (variable `CHROOT`) y ejecute:

       $ rm confv.sh
       $ ./conf.sh

   Finalmente puede editar `aut/conf.php` para modificar el mensaje que se presenta cuando se encuentras errores ortográficos (`MENS_ORTOGRAFIA`).

   Una vez en operación podrá agregar palabras que sean correctas en el diccionario configurado (por defecto está en las fuentes de SIVeL con nombre `ispell.dic`); una palabra por línea, sin dejar espacios a izquierda ni derecha. Si va a agregar palabras con tildes, cambie la vocal tildada por la vocal sin tilde pero con un apostrofe como prefijo, por ejemplo la palabra "nación" se agrega como "naci'on" (sin comillas).

4. Para publicar la Consulta Web en Internet y activar retroalimentación encriptada por correo vea .

## Actualización

Si ya tiene instalado SIVeL pero no la última versión, sugerimos:

1. Revise la versión de SIVeL que tiene instalada

2. De resultarle posible actualice el sistema operativo completo empleando la distribución AdJ más reciente y el script de instalación `inst-sivel.sh`. De esta forma asegurará tener versiones recientes de todos los componentes (particularmente PHP, PostgreSQL, Pear y paquetes de Pear como `DB_DataObject_FormBuilder`), que pueden ser requeridos por versiones recientes de SIVeL.

3. Revise el apéndice y siga los pasos de actualización que allí se describan comenzando en la versión que tenía instalada hasta la versión más reciente. Termine la actualización abriendo con un navegador SIVeL pero agregando a la dirección `actualiza.php` (e.g `https://127.0.0.1/actualiza.php`).

## Pruebas de regresión

Una vez instale o actualice SIVeL es recomendable que ejecute las pruebas de regresión para verificar que en su plataforma opera como se espera. Ejecutelas desde una terminal en el subdirectorio `pruebas` del directorio con fuentes de SIVeL (e.g `cd /home/sivel/sivel/pruebas`). Los scripts eliminarán y crearán una base de datos con nombre `sivel-prueba`.

No use la base `sivel-prueba` porque será borrada cada vez que se ejecuten las pruebas de regresión.

Después ejecute:

    				./pruebas.sh

un resumen del resultado se presentará en pantalla, si alguna de las pruebas falla por favor reportenos el inconveniente adjuntando el archivo `pruebas.bitacora` que contiene datos sobre su instalación y posibles fallas.