You are on page 1of 9

Linux, Apache, PHP e Informix

Este sencillo guión ha sido redactado para aquellos usuarios de Linux e Informix
que quieren acceder a sus bases de datos por web, con apache y PHP.

Después de indagar por la red y tras comprobar que las distribuciones de SuSe
Linux no instalan correctamente Apache y el módulo PHP para informix y tras varios
meses de sufrimiento, paso a detallaros mi experiencia.

Partimos de la base que Informix está correctamente instalado en tu máquina (es


de pago y se entiende que estará instalado)

Para acceder a Informix con Apache y PHP necesitamos instalar el CSDK para
informix, este paquete es necesario para que cualquier soft cliente (por ejemplo PHP)
pueda atacar las bases de datos Informix.

INSTALACIÓN DEL CLIENTE CSDK INFORMIX

Si no lo tienes en los cedés de Informix, puedes encontrarlo en la siguiente dirección:

http://www14.software.ibm.com/webapp/download/preconfig.jsp?id=2002-12-
16+16%3A21%3A39.260871C

Descomprimes el fichero que has bajado

$ unzip csdk280_uc21lin_ux.zip

Aparecerá un directorio DOC, un fichero key.txt y el fichero csdk.rpm

Te identificas como root

$ su

Exportas la variable INFORMIXDIR, en mi caso tengo instalado Informix en


/usr/lib/informix, es posible que tú lo tengas en /opt/informix

$ INFORMIXDIR=/usr/lib/informix

Instalamos el CSDK

$ rpm -i csdk.rpm

Configuramos el SQLHOSTS de informix

$ cd /usr/lib/informix/etc

$ vi sqlhosts

Aparecerá algo similar a esto,


#**************************************************************************

#                          INFORMIX SOFTWARE, INC.

#                             PROPRIETARY DATA

#       THIS DOCUMENT CONTAINS TRADE SECRET DATA WHICH IS THE PROPERTY OF

#       INFORMIX SOFTWARE, INC.  THIS DOCUMENT IS SUBMITTED TO RECIPIENT IN

#       CONFIDENCE.  INFORMATION CONTAINED HEREIN MAY NOT BE USED, COPIED OR

#       DISCLOSED IN WHOLE OR IN PART EXCEPT AS PERMITTED BY WRITTEN AGREEMENT

#       SIGNED BY AN OFFICER OF INFORMIX SOFTWARE, INC.

#       THIS MATERIAL IS ALSO COPYRIGHTED AS AN UNPUBLISHED WORK UNDER

#       SECTIONS 104 AND 408 OF TITLE 17 OF THE UNITED STATES CODE.

#       UNAUTHORIZED USE, COPYING OR OTHER REPRODUCTION IS PROHIBITED BY LAW.

#   Title:      sqlhosts.demo

#   Sccsid:     @(#)sqlhosts.demo       9.2     7/15/93  15:20:45

#   Description:

#               Default sqlhosts file for running demos.

#**************************************************************************

#demo_on        onipcshm        on_hostname     on_servername

sr_db           sesoctcp        maquina         sqlexecd

***************************************************************************

Añadimos la siguiente línea

sr_db sesoctcp   máquina    sqlexecd

donde sr_db es el servidor de la base de datos


donde sesoctcp es el protocolo tcp para atacar al motor de la base de datos
(también llamado backend)

donde maquina es el nombre corto del ordenador en que instalas informix (el
nombre de tu máquina) Este debe pertenecer a una dirección IP única en el caso
de ordenadores con más de una dirección IP o tarjeta de red y puede que el
demonio arranque en una dirección IP no deseada o no esperada.

donde sqlexed es el demonio que ejecutamos para acceder a informix.

Editamos los servicios para añadir el servicio Informix en el puerto adecuado.

$ vi /etc/services

Buscamos la posición que corresponde al puerto 3536 y añadimos una nueva línea.

sqlexecd         3536/tcp         # Informix

Si tenemos el puerto ocupado, buscamos otro que esté libre, no es obligatorio que esté
en dicho puerto.

INSTALACIÓN DE APACHE Y PHP PARA INFORMIX (PHP como módulo


estático de Apache)

Las instalaciones por defecto de YAST en SuSe no sirven para acceder a Informix

Por ello, bajamos las fuentes y las compilamos

En mi caso he bajado el apache 1-3-26-39 src.rpm

También he bajado PHP-4.3.1.tar.gz

Es más cómodo abrir dos consolas, si así lo haces recuerda exportar en cada una de ellas
el informixdir

$ INFORMIXDIR=/usr/lib/informix

Empezamos...

Instalamos las fuentes de APACHE

$ rpm -i apache-1.3.26-39.src.rpm

Descomprimimos el PHP

$ tar -xvzf PHP-4.3.1.tar.gz

Accedemos al directorio de las fuentes de Apache, en el caso de SuSe Linux es

$ cd /usr/src/packages/SOURCES
Descomprimimos el apache_1.3.26.tar

$ tar -xzf apache_1.3.26.tar

entramos en el directorio recién creado

$ cd apache_1.3.26

Comenzamos la compilación

$ ./configure

$ cd ..

No hacemos nada más de momento (ni make ni nada)

Accedemos al directorio generado al descomprimir PHP

$ cd /home/yo/php-4.3.1

Comenzamos la compilación

$ ./configure --with-apache=/usr/src/packages/SOURCES/apache_1.3.26
--with-informix=/usr/lib/informix

Ten en cuenta los directorios donde estén tanto apache como informix

Continuamos la compilación

$ make

$ make install

Volvemos al directorio de las fuentes de apache

$ cd /usr/src/packages/SOURCES/apache_1.3.26

Compilamos de nuevo apache con la siguiente línea. Aunque no existe libphp4.a, lo


creará en este momento.

$ ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a

$ make

$ make install  (sí es una instalación nueva)

Volvemos al directorio de PHP

$ cd /home/yo/php-4.3.1
Copiamos el fichero php.ini.dist en /usr/local/lib/

$ cp php.ini-dist /usr/local/lib/php.ini

Ahora puedes editar el nuevo php.ini y modificar las opciones del PHP

Necesitamos editar el fichero httpd.conf y añadir la aplicación PHP

$ cd /www/conf/

$ vi httpd.conf

añadimos la siguiente línea

  AddType application/x-httpd-php .php

Con esto la instalación está hecha.

COMPROBACIÓN DE LA INSTALACIÓN

Probamos que funcione el php

Para ello creamos un fichero que situamos en /www/htdocs/ y que contiene lo siguiente

$ vi info.php

Contenido

<?

phpinfo();

?>

Iniciamos el apache

$ /www/bin/apachectl start

Abrimos el navegador y nos conectamos a http://localhost ó http://127.0.0.1 ó


http://ip.interna.del.servidor

Si todo ha ido bien, funcionará el apache

Comprobamos que funcione el PHP

Con el navegador nos conectamos a http://localhost/info.php

Si nos sale la página de PHP y nuestra configuración, es que todo va bien

CONFIGURACIÓN DE APACHE PARA INFORMIX


Hemos de decirle al APACHE donde está el informix y demás variables de entorno

Para ello editamos el fichero apachectl

$ cd /www/bin/

$ vi apachectl

#!/bin/sh

# Apache control script designed to allow an easy command line interface

# to controlling Apache.  Written by Marc Slemko, 1997/08/23

# The exit codes returned are:

#       0 - operation completed successfully

#       1 -

#       2 - usage error

#       3 - httpd could not be started

#       4 - httpd could not be stopped

#       5 - httpd could not be started during a restart

#       6 - httpd could not be restarted during a restart

#       7 - httpd could not be restarted during a graceful restart

#       8 - configuration syntax error

# When multiple arguments are given, only the error from the _last_

# one is reported.  Run "apachectl help" for usage info

# |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||

# --------------------                              --------------------

INFORMIXDIR=/usr/lib/informix export INFORMIXDIR

INFORMIXSERVER=sr_db export INFORMIXSERVER

DBPATH=/usr/dbs export DBPATH


DB_LOCALE=es_es.8859-1 export DB_LOCALE

CLIENT_LOCALE=es_es.8859-1 export CLIENT_LOCALE

DBDATE=mdy4 export DBDATE

DBEDIT=vi export DBEDIT

DBMONEY=. export DBMONEY

PATH=$PATH:$INFORMIXDIR/bin export PATH

SQLEXECD=$INFORMIXDIR/lib/sqlexecd export SQLEXECD

DBCENTURY=C export DBCENTURY

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$INFORMIXDIR/bin:$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql export
LD_LIBRARY_PATH

# the path to your PID file

PIDFILE=/www/logs/httpd.pid

# the path to your httpd binary, including options if necessary

HTTPD=/www/bin/httpd

# a command that outputs a formatted text version of the HTML at the

......

Hemos añadido las variables que necesita apache para conectarse a Informix (quizás
más variables de las necesarias)

               INFORMIXDIR=/usr/lib/informix export INFORMIXDIR  <--- directorio


donde se encuentra Informix (en algunos casos es /opt/informix)

               INFORMIXSERVER=sr_db export INFORMIXSERVER        <--- Servidor


de la base de datos (igual que en /usr/lib/informix/etc/sqlhosts)

               DBPATH=/usr/dbs export DBPATH                     <--- Directorio donde se


encuentran las bases de datos. Puedes poner más de un directorio separados
por dos puntos. Ejemplo DBPATH=/usr/dbs:/home/yo/dbs export
DBPATH                    

               DB_LOCALE=es_es.8859-1 export DB_LOCALE           <--- Idioma español.


Puedes cambiar  es_es.8859-1 por Pc-Latin-1 si tienes problemas con las ñ,
Ç, €, etc ...
               CLIENT_LOCALE=es_es.8859-1 export CLIENT_LOCALE   <--- Idioma
español para el cliente

               DBDATE=mdy4 export DBDATE                         <--- Formato de fecha

               DBEDIT=vi export DBEDIT                           <--- Hace referencia al editor

               DBMONEY=. export DBMONEY                          <--- Separador decimal

               PATH=$PATH:$INFORMIXDIR/bin export PATH           <--- Directorio


donde están los binarios de Informix

               SQLEXECD=$INFORMIXDIR/lib/sqlexecd export SQLEXECD  <---


Demonio para acceder a Informix

               DBCENTURY=C export DBCENTURY                        <--- Para el efecto 2k

               LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$INFORMIXDIR/bin:
$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql export
LD_LIBRARY_PATH <--- dirección de las librerias

INICIO AUTOMÁTICO DE APACHE

Esto es para que se inicie automáticamente el Apache al arrancar el ordenador

Copiamos el fichero apachectl en /etc/init.d/

$ cp /www/bin/apachectl /etc/init.d/apache

Le damos los permisos necesarios

$ chmod 755 /etc/init.d/apache

Accedemos al nivel de ejecución 5 y creamos un enlace a este fichero

$ cd /etc/init.d/rc5.d

$ ln -s /etc/init.d/apache S72apache

Para iniciar, parar, reiniciar el apache manualmente podemos usar la siguiente orden

$ /www/bin/apachectl start     (start, stop, restart)

INICIO AUTOMÁTICO DE sqlexecd

Creamos un fichero con el siguiente contenido para iniciar automáticamente el demonio


sqlexecd.

$ vi ifxd
Contenido:

INFORMIXDIR=/usr/lib/informix export INFORMIXDIR

$INFORMIXDIR/lib/sqlexecd sr_db

cd $INFORMIXDIR/lib

./sqlexecd sr_db –l sqlexecd.log

De este modo se iniciará el demonio sqlexecd y también generará en


$INFORMIXDIR/lib un fichero llamado sqlexecd.log que recogerá los mensajes
procedentes del demonio.

Copiamos el fichero ifxd en /etc/init.d/

$ cp /home/yo/ifxd /etc/init.d/ifxd

Le damos los permisos necesarios

$ chmod 755 /etc/init.d/ifxd

Accedemos al nivel de ejecución 5 y creamos un enlace a este fichero

$ cd /etc/init.d/rc5.d

$ ln -s /etc/init.d/ifxd S73ifxd

Si te ves en la necesidad de utilizar este pequeño guión y te surge alguna duda, puedes
enviarme tus comentarios a la siguiente dirección de correo electrónico

manolo@notejode.com

Si está en mi mano intentaré ayudarte.

Agradecería me notificarais cualquier añadido o modificación del presente guión.

You might also like