Proyecto

General

Perfil

"""
Abiesweb - Consultas simples catálogo de abies
Copyright (C) 2012 Francisco Mora <francisco.mora.sanchez@gmail.com>

License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html)

"""

Esto es una pequeña utilidad que hice hace tiempo para poder consultar a través de una aplicación web desarrollada con web2py, el catálogo de
nuestra biblioteca abies. Es muy primitiva, ya que fue cuando comencé con web2py, pero creo que útil quizá para algunos. Los pasos para
instalarla son los que describo a continuación. Debemos tener los siguientes archivos, es importante que los scripts mdb2tool y
abies.sh tengan permisos de ejecución:
. abies.mdb -> evidentemente los datos del programa abies
. abies.sh -> script que procesa el mdb e incorpora los datos en mysql
. mdb2mysql -> script perl que genera el SQL desde el MDB
. abiesweb.tar.gz -> aplicación web2py abiesweb
. web2pyapache -> configuración apache web2py

PASOS:

1. Debemos crear en nuestro servidor mysql, bien desde la consola mysql o bien desde phpmyadmin,
una base de datos con las siguientes características:

nombre: abies
codificación: UTF-8 España


2. Creación de un usuario con nombre "abies", sin contraseña y permiso de lectura/escritura en esta base de datos.

3. Cada cierto periodo de tiempo procederemos a importar los datos a esta base de datos desde el fichero "abies.mdb"
de la aplicación abies. Así tendremos actualizada la base de datos hasta el momento en que lo realizamos. Este proceso es el que
hay que realizar de forma periódica. Es necesario que donde ejecutemos el script tengamos instalado los paquetes debian
"mdbtools" y "mysql-client", además de y en la misma carpeta esté el archivo abies.mdb. Este script exporta la base de datos de access de abies a un
formato SQL que entiende mysql e importa a mysql esos datos. Ejecutaremos la orden:

./abies.sh

Podemos ver la base de datos con phpmyadmin.

Hemos de tener en cuenta que si el proceso lo realizamos en una máquina que no es la que tiene el servidor mysql, hemos de
configurar el servidor mysql para que acepte peticiones que provengan de máquinas que no sean ella misma, esto se hace editando
el fichero "/etc/mysql/my.cnf", del ordenador con el servidor mysql, comentando la línea:

#bind-address = 127.0.0.1

Para permitir conexiones de otras máquinas clientes. Una vez hecho esto reiniciamos el servicio mysql para que tome la nueva
configuración.

4. Lo siguiente consiste en descargar el web2py de la página del proyecto: "http://www.web2py.com/examples/static/web2py_src.zip".
Descomprimimos este archivo en una carpeta del servidor mysql, por ejemplo "/var/www/web2py". Para arrancar el framework:

unzip web2py_src.zip
chown -R www-data:www-data web2py
cd /var/www/web2py

5. Ahora debemos instalar la aplicación abiesweb. Tambien configuraremos la ruta de acceso a la base de datos.
Para ello, y siguiendo con la secuencia anterior:

cd /var/www/web2py/applications
tar xvzf dondetenemosabiesweb.tar.gz .

Descomprimimos el archivo abiesweb.tar.gz en esa ruta y se habrá creado la carpeta abiesweb.
Ahora editaremos el siguiente archivo:
/var/www/web2py/applications/abiesweb/models/db.py
Buscaremos la línea:
db = DAL('mysql://abies:abies@web/abies',pool_size=10) # if not, use SQLite or other DB
Reemplazaremos web por el nombre del servidor de la base de datos, o por localhost si está en la misma
máquina. Guardaremos el cambio.

6. Para arrancar web2py, con el servidor web que lleva integrado (modo "lento"), lento si el número de peticiones es elevado,
realizaremos lo siguiente:

cd /var/www/web2py
python web2py.py -a "passwordquequeramosparaadministracion" &

Este comando arrancará un proceso web en el puerto 8000.

7. Ya podremos probar si todo ha ido bien. Para ello abriremos un navegador web e iremos a la siguiente página:

http://nombremaquina:8000/abiesweb

Donde nombremaquina tiene que ser sustituido por el nombre de la máquina en que hemos descargado web2py. Una vez aquí podremos buscar
por título, autor/a, editorial. La caja de texto espera a teclear al menos 4 caracteres y una vez tecleados realiza búsquedas a la base
de datos apareciendo debajo de la caja de texto el resultado. Cuando pinchamos en un libro nos aparece una pequeña ficha de información,
que incluye los ejemplares existentes, localización, etc. Además podremos acceder desde aquí a los títulos de la editorial o bien a las
obras de algún autor/a.

El proceso web2py se ha quedado funcionando en segundo plano. Si reiniciamos la máquina tendremos que volver a iniciarlo manualmente.

8. (Recomendado) Si queremos mayor velocidad de proceso, la forma que voy a describir hace que sea apache quien sirve la aplicación o aplicaciones que estén metidas
en web2py. Tendremos que utilizar la extensión WSGI de apache, para que éste procese las peticiones y no el servidor web integrado de web2py, para ello hay que
hacer varias modificaciones, evidentemente hay que tener instalado apache2 y libapache2-mod-wsgi.

Ya no es necesario arrancar el proceso web2py (punto 6), si lo está deberemos hacer un kill al proceso para eliminarlo, ya que sino apache se
quejará de que hay otro proceso sirviendo en el puerto 8000. Este puerto puede cambiarse sin problema.
Copiaremos en /etc/apache2/sites-available el fichero "web2pyapache" y activaremos el sitio:
cp dondetenemosweb2pyapache /etc/apache2/sites-available
a2ensite web2pyapache
service apache2 restart

Si todo ha ido bien visitando el enlace del punto 7, podremos acceder a la misma aplicación pero siendo apache quien la sirve.



(1-1/5)