[SOLUCIONADO] PROBLEMAS varios posteriores a una instalación en producción

Hola, ayer instalamos sobre un servidor con CentOS 5 (con privilegios de root), toba y nuestro proyecto:
Ya estaba instalados:

  • Apache 2.2.x
  • PHP 5.2.x con las extensiones GD2, PDO-PGSQL, y PGSQL.
  • PostgreSQL 8.4.x

El proceso que seguimos fue el siguiente:

  • El proyecto en Desarrollo, se exportó y luego compiló.
  • Se hizo un backup de la base de datos para restaurarla en el servidor.
  • Se creo la base de datos, el rol de acceso, etc.
  • Se instaló toba en la carpeta toba_1.5.0 y salio funcionando “sin problemas” (hubo que iniciar una o 2 veces la instalacion ya que tiraba errores relacionados con permisos, y no nos tomó el proyecto nuestro copiado dentro de la carpeta proyectos en forma directa (lo sacamos de ahí, instalamos y luego lo copiamos nuevamente)).
  • Se modificó el archivo httpd.conf agregando el Include para que tome la configuración del toba.conf
  • Luego, tuvimos acceso al toba_editor y al toba_usuarios desde la web.
  • Se cambio la contraseña del usuario toba.
  • Se copió la carpeta del proyecto (metadatos, metadatos-compilados, php, www) en toba_1.5.0/proyectos.
  • Se configuró en instalacion.ini el flag de producción, se sacó de comentario la constante que define el comportamiento como compilado del proyecto en aplicacion.php define(‘apex_pa_metadatos_compilados’, 1), asimismo se modificó la constante para que el modo del log sea info define(“apex_pa_log_archivo_nivel”, 7), y se deshabilitó el modo debug define(“apex_pa_validacion_debug”, 0).
  • Con el shell de toba cargado (hubo que cargar los exports a mano ya que no los tomó por defecto), se ejecutó toba proyecto cargar -p {proyecto}. Acá tuvimos problemas ya que no lo cargaba en la instancia. Suponemos que puede haber sido por un tema de los exports del shell de la consola. Editamos a mano los archivos de configuración (bases.ini, incluimos los distintos esquemas e instancia.ini)
  • Finalmente logramos acceso al proyecto, tanto a través de web como del toba_editor
  • Se eliminaron los proyectos toba_editor y toba_referencia con comandos del shell toba proyecto eliminar -p {proyecto}
  • Se eliminaron los archivos físicos de dichos proyectos
  • Se limpiaron a mano los archivos bases.ini, toba.conf, para eliminar los puntos de accesos de esos proyectos y la declaración de la base de datos del proyecto de referencia que no se borraron en forma automática.

Ahora bien, los problemas que tenemos son los siguientes:

  1. la forma correcta de llevar nuestro proyecto a producción (no usaremos por ahora svn), será exportar, luego compilar, luego subir la carpeta del proyecto, versionando la anterior a mano (metadatos, metadatos-compilados, php, www)? o hay otra forma de hacerlo?

  2. la sesión no caduca, esto lo seteamos en esta etapa de esa forma en el toba_editor, poniendo en 0 el valor correspondiente… esto causa que un usuario al no realizar un logout y cerrar la ventana del navegador, al iniciar nuevamente el mismo en la misma sesión, sigue logueado. Al no tener el toba_editor, donde podemos configurar la caducidad de la sesion por inactividad? es decir, la sesión sería eterna salvo que pase X tiempo sin actividad?
    Asimismo, como podemos setear el tiempo de caducidad de los 3 intentos fallidos? está en null, por lo que nunca resetea el contador, no importa si en algún momento el usuario se loguea correctamente (en este pundo, no sería bueno que al loguearse correctamente se reiniciar el contador de intentos fallidos?.. no me pasa utilizando el Ingreso de usuario definido en el proyecto).
    Para hacer la consulta más general… estos datos, podemos modificarlos en producción? o simplemente deberé cambiarlos en desarrollo y luego subir el nuevo proyecto compilado?

  3. como podemos activar la auditoría? sin el toba_editor no tengo idea de como hacerlo…

  4. podemos eliminar el punto de acceso en toba.conf del proyecto toba_usuarios? desde nuestro proyecto tenemos un enlace a la interfaz de gestión de usuarios, por lo que no lo necesitaríamos salvo extrema necesidad ese acceso desde web. El tema es que alguien con permisos para hacerlo, en la estructura actual, sin caducación de sesión podría ingresar en la PC de un usuario logueado, “adivinar” el acceso y utilizarlo.

  5. los ef-combo-editables no funcionan (¿?). Accediendo al proyecto desde web, en el mismo Windows, los combo-editables no devuelven valores al ingresar caracteres en los mismos. En desarrollo, siguen funcionando. Será un Bug de los compilados?

  6. tuvimos un problema al configurar los usuarios y perfiles(cuando no son Administradores) el usuario se cuelga sin motivo aparente. El error que brinda al colgarse la aplicación es HTTP 500 (¿?). Sin embargo, pareciera que el usuario se loguea, ya que si se ingresa por el punto de acceso web al toba_usuarios, se lo hace sin necesidad de logueo a través de dicho usuario.
    Por ejemplo:
    se creo un perfil de Mantenimiento, que tenía acceso al item de Inicio, y a una carpeta con varias operaciones, de la cual, solo tenía acceso al vínculo con el toba_usuarios.
    Luego creamos un usuario con permiso de Administrador al toba_usuarios, y de Mantenimiento a nuestro proyecto.
    Al ingresar al sistema, se produjo el problema citado.
    Asimismo, nos pasó con otros usuarios que tienen distintos perfiles funcionales, pero sin acceso al toba_usuarios.
    Este punto nos preocupa… no en esta instancia de reciente puestra en producción, pero si a un cortisimo plazo.

Mil gracias!!!

Hola Martin

Se hizo un backup de la base de datos para restaurarla en el servidor.

Es la base de datos de la instancia de toba? Si es así, me parece que no es necesario ya que por lo que veo más adelante, lo que hicieron fue instalar el framework. De todas maneras si lo que hicieron fue levantar la base y luego acomodar el bases.ini para apuntar a la nueva configuración, entonces está bien.

Se copió la carpeta del proyecto (metadatos, metadatos-compilados, php, www) en toba_1.5.0/proyectos.

Para que no queden lugar a dudas y para una próxima instalación en producción, yo, Rodrigo Miranda, recomiendo :stuck_out_tongue:

  • Descargar toba en alguna carpeta a elección
  • Descargar el proyecto dentro de la carpeta proyectos de toba
  • Instalar el framework utilizando el script instalar dentro de la carpeta bin de toba
  • Utilizando los comandos administrativos eliminar los proyectos que no son necesarios de la instancia (toba_referencia, toba_editor)
  • Eliminar los directorios de estos proyectos
  • Setear el flag es_produccion en 1

Pasos más, pasos menos, de ésta manera no dejas lugar a la ecavicación :P. Toba instalado, proyecto cargado en la instancia en producción.

Suponemos que puede haber sido por un tema de los exports del shell de la consola.

Creo que en algún momento había tenido un problema similar en linux, no recuerdo como lo solucione. Dejaremos este punto a alguien que la tenga más clara.

1) la forma correcta de llevar nuestro proyecto a producción (no usaremos por ahora svn), será exportar, luego compilar, luego subir la carpeta del proyecto, versionando la anterior a mano (metadatos, metadatos-compilados, php, www)? o hay otra forma de hacerlo?

Es como vos decís, hay que hacerlo a mano si no contas con svn. Este es el momento en el cuál te vas a preguntar “porque no estoy usando svn?”. No es necesario contar con un servidor web + trac + svn, también funciona simplemente creando un recurso compartido en la red y crear un repositorio allí. Al menos hasta que puedan tener andando un repositorio como dios manda. Altamente recomendada es la lectura de este libro gratuito http://svnbook.red-bean.com/. Digo recomendada por no decir obligatoria.

De lo contrario, para actualizar tu proyecto deberías:

  • Exportar tu proyecto localmente
  • Compilar metadatos
  • Copiar la carpeta de tu proyecto al servidor en producción pisando cualquier archivo, salvo el punto de acceso aplicacion.php que probablemente contenga algunos seteos como por ejemplo el de usar metadatos compilados y algunos más que mencionas en tu consulta.

Lo que podes hacer también es dejar la compilación para hacerla en producción y asegurarte de que todo metadato en producción se compile correctamente.

2) la sesión no caduca, esto lo seteamos en esta etapa de esa forma en el toba_editor, poniendo en 0 el valor correspondiente... esto causa que un usuario al no realizar un logout y cerrar la ventana del navegador, al iniciar nuevamente el mismo en la misma sesión, sigue logueado. Al no tener el toba_editor, donde podemos configurar la caducidad de la sesion por inactividad? es decir, la sesión sería eterna salvo que pase X tiempo sin actividad?

Probablemente ésta entrada en la wiki de toba te aclare ésta pregunta

http://toba.siu.edu.ar/trac/toba/wiki/FAQ#duracion-sesion

Para hacer la consulta más general... estos datos, podemos modificarlos en producción? o simplemente deberé cambiarlos en desarrollo y luego subir el nuevo proyecto compilado?

Como el tema de la duración de la sesión es un mix entre toba y PHP, si modificas las propiedades básicas del proyecto, deberás compilar nuevamente y subir los cambios.

3) como podemos activar la auditoría? sin el toba_editor no tengo idea de como hacerlo...

Activas la auditoría utilizando los comandos administrativos toba proyecto crear_auditoria -p PROYECTO. Si la auditoria ya existe, entonces la actualiza con cualquier cambio que hayas realizado en tu base. De todas maneras tenes que indicar en las propiedades básicas de tu fuente de datos, que utilice la auditoría. Con lo cuál deberás exportar tu proyecto localmente, compilar y subir esos cambios a producción.

4) podemos eliminar el punto de acceso en toba.conf del proyecto toba_usuarios? desde nuestro proyecto tenemos un enlace a la interfaz de gestión de usuarios, por lo que no lo necesitaríamos salvo extrema necesidad ese acceso desde web. El tema es que alguien con permisos para hacerlo, en la estructura actual, sin caducación de sesión podría ingresar en la PC de un usuario logueado, "adivinar" el acceso y utilizarlo.

Si eliminas el punto de acceso al proyecto toba_usuarios, no vas a tener acceso aún cuando lo vincules desde algún menú. El alias en toba.conf le sirve a apache para saber donde encontrar lo que se está solicitando. Si lo eliminas, alpiste. Lo que deberías hacer es utilizar perfiles funcionales para usuarios específicos y restringir el acceso a ésta operación.

5) los ef-combo-editables no funcionan (¿?). Accediendo al proyecto desde web, en el mismo Windows, los combo-editables no devuelven valores al ingresar caracteres en los mismos. En desarrollo, siguen funcionando. Será un Bug de los compilados?

Lo voy a probar… mientras te voy dejando respuestas para el resto.

6) tuvimos un problema al configurar los usuarios y perfiles

Analizaron los logs de apache? Logs de toba? Algún log? Habría que analizar la configuración de los usuarios y perfiles y además ver si esto sigue pasando aún sin metadatos compilados.

Hola Rodrigo,

Un punto más, la exportación tanto de PDF como de Excel tira un error 500. Que puede llegar a ser? permisos? que directorios necesita tener acceso el proceso que genera los archivos?

Saludos!

Juan

Probaste cambiar los permisos utilizando el comando administrativo descripto en el paso 11 de ésta guía? http://toba.siu.edu.ar/trac/toba/wiki/Instalacion#GuíaGNULinux

El comando es

sudo ./bin/toba instalacion cambiar_permisos -u <mi_usuario> -g <Usuario Apache generalmente es www-data>