Instalación de DB2-Express en Debian (Linux) y driver DB2 para servidor Apache+PHP

Con esta guía podremos compilar el driver necesario para poder usar las funciones de DB2 desde PHP. Para este fin, tendremos que descargar y usar las librerías incluidas en alguna de las versiones de DB2. En el momento de la publicación de este artículo no recojo la creación de tablas, pero esta parte debería ser la más fácil. Al final dejo la documentación en la que me basé para hacer esta guía. Una vez creada la BBDD, podríamos usar un framework PHP con Doctrine (como Symfony2) para que se encargue del manejo y escritura de datos en DB2.

La versión que elegí fue DB2 Express-C, que es una versión gratuita que ofrece IBM. Por otra parte, la elección de la versión 32bits facilitará la instalación utilizando obviamente una distribución también de 32bits.

Descargar DB2 Express-C for Linux 32bits de:

http://www-01.ibm.com/software/data/db2/express-c/download.html

Crear directorio temporal:

1
#mkdir /tmp/ibm

Copiar archivo “special_31160_linuxia32_expc.tar” en el directorio /tmp/ibm y descomprimir:

1
2
#tar -xvf v10.5fp1_linuxia32_expc.tar.gz -C /tmp/ibm/
#tar -xvf special_31160_linuxia32_expc.tar -C /tmp/ibm/

Instalar dependencias. En mi caso tuve que instalar libpam mediante apt-get (Debian)

1
#apt-get install libpam0g:i386

En mi caso también tuve que crear un enlace simbólico a la librería:

1
#ln -s /lib/i386-linux-gnu/libpam.so.0 /lib/libpam.so.0

Si todas las dependencias están instaladas y bien enlazadas, al usar el siguiente comando de db2 express-c debería aparecer todo correcto:

1
#./tmp/ibm/db2prereqcheck -v 10.5.0.1

Dentro del directorio temporal de instalación, crear el fichero de respuestas:

1
#nano db2server-install.rsp

Pegando el siguiente contenido, cambiando los passwords :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
PROD                      = EXPRESS_C
FILE                      = /opt/ibm/db2
LIC_AGREEMENT             = ACCEPT
INTERACTIVE               = YES
INSTALL_TYPE              = COMPACT
COMP                     = APPLICATION_DEVELOPMENT_TOOLS // Imprescindible

** Instance Creation Settings
** --------------------------
INSTANCE                  = DB2_INST
DB2_INST.NAME             = db2inst1
DB2_INST.GROUP_NAME       = db2grp1
DB2_INST.HOME_DIRECTORY   = /home/db2inst1
DB2_INST.PASSWORD         = password
DB2_INST.TYPE             = ESE
DB2_INST.AUTOSTART        = YES
DB2_INST.START_DURING_INSTALL = YES
DB2_INST.SVCENAME         = db2cdb2inst1
DB2_INST.PORT_NUMBER      = 50000
DB2_INST.FENCED_USERNAME  = db2inst1
DB2_INST.FENCED_GROUP_NAME = db2grp1
DB2_INST.FENCED_HOME_DIRECTORY = /home/db2inst1
DB2_INST.FENCED_PASSWORD = password

Ejecutamos el instalador:

1
#./db2setup -r db2server-install.rsp # ********** Ver nota abajo

Después de unos minutos debería completar la instalación:

1
2
3
4
5
6
7
8
9
...
Task #33 start
Description: Updating global profile registry
Estimated time 3 second(s)
Task #33 end

The execution completed successfully.

For more information see the DB2 installation log at "/tmp/db2setup.log".

Para comprobar que la instalación fue correcta usamos el siguiente comando:

1
#./opt/ibm/db2/bin/db2val

Que debería devolver lo siguiente:

1
2
3
4
DBI1379I  The db2val command is running. This can take several minutes.
DBI1335I  Installation file validation for the DB2 copy installed at
      /opt/ibm/db2 was successful.
DBI1343I  The db2val command completed successfully. For details, see the log file /tmp/db2val-140530_104343.log.

Con esto ya tendríamos nuestro servidor DB2 Express-C instalado. La guía también cubre la instalación de otras versiones de DB2 de pago. El requisito sería cambiar el archivo de respuestas en la línea donde se menciona el producto (cadena “PROD”) ajustándolo con la versión de DB2 que se quiere instalar:

Para compilar la librería de DB2 para PHP, a continuación hay que usar:

1
#pecl install ibm_db2

 

Esta guía está más enfocada a la instalación de un servidor web Apache/PHP con soporte para DB2. Se entiende que la máquina que correrá la BBDD será otra. Por lo tanto, te preguntará por la carpeta de instalación, aunque podrías usar la de una instancia de DB2 en el caso de tenerla creada :

/opt/ibm/db2” o “/home/db2inst1/sqllib”

Si todo es correcto, la compilación terminará de la siguiente forma:

1
2
3
4
5
Build process completed successfully
Installing '/usr/lib/php5/20100525+lfs/ibm_db2.so'
install ok: channel://pecl.php.net/ibm_db2-1.9.5
configuration option "php_ini" is not set to php.ini location
You should add "extension=ibm_db2.so" to php.ini

 
************************************* NOTA *************************************
Es posible que la instalación no pueda realizarse porque falten las cabeceras de los ficheros de desarrollo.
En mi caso, aunque la línea del fichero de respuesta:

COMP = APPLICATION_DEVELOPMENT_TOOLS

debería ser suficiente para instalarlas, tuve que realizar la instalación manual de DB2 Express-C con el comando “./db2_install”, indicando que la carpeta de instalación sería “/opt/ibm/db2”
**********************************FIN NOTA ************************************

Documentación usada:

Instalación de Express C debe ser con los headers para poder compilar la librería para PHP:

Otras referencias:

  • Adsense