Configuracion de Apache/PHP/Informix's Setup

Contenido/contents:
Intro
Freetype2
gd
openssl
Apache
imap
Informix csdk
PHP
Pagina principal/Home page

Intro
He venido utilizando Apache/PHP/Informix desde el sistema operativo RedHat 7, actualmente uso Redhat 9 y el procedimiento que detallo funciona para instalar las ultimas versiones en base a los programas fuente. I's been using Apache/PHP/Informix since RedHat 7 times, now I'm using RedHat 9 and the following procedure install the latest version from the source tarball.
No tengo mucha experiencia con los 'configure' pero con los pasos que muestro se resuelven varios problemas especiales que tiene RH9. I don't have many expirence with the 'configure' script but with this steps you can bypass the tricks of RH9.
Todos los archivos fuentes los descargo en el mismo directorio: All the tarballs are downloaded in the following directory:
export HOME_SRC=/home/src
Nota que la ruta de los archivos a descargar (wget) y los directorios creados pueden (y deben) cambiar conforme cambien el numero de version.
Estos numeros de version son los 'ultimos' al 29 de abril del 2004.
Note that the path of files to download (wget) and the subdirectory created will change according to the version number.
This version number are current as april 29, 2004.
Este cambio de nombre de versiones y subdirectorios nos permite tener a la mano varias versiones en el disco duro. This change in the version number and subdirectory name allow us to have several versions in the harddisk.
Freetype2
Es para generar textos 'dinamicamente' en las imagenes generadas con gd.

Descargamos la ultima distribucion de la version 2.
Is used to generate text dynamically in the images build with gd.

Download the latest tarball of version 2.
cd $HOME_SRC
wget http://umn.dl.sourceforge.net/sourceforge/freetype/freetype-2.1.8.tar.gz
Extraemos el contenido del archivo. Extract the tarball.
tar xvfz freetype/freetype-2.1.8.tar.gz
Nos cambiamos al directorio donde dejo los archivos. Change to the directory just extracted.
cd freetype-2.1.8
Configuramos, compilamos e instalamos de la manera 'usual'. Configure, compile and install 'as usual'.
./configure
make
make install
gd
Con gd podemos generar graficas e imagenes dinamicamente, se que ya PHP incluye gd en su distribucion pero con esto aseguro que es la ultima version, y yo lo empece a hacer desde que no venia incluida y ya me acostumbre.

Descargamos la ultima version de la pagina de boutell.
With gd we can build graphics and images dynamically, PHP already includes gd in the tarball but with this procedure I can be sure I have the latest version, and I started this procedure before gd were included.

Download the latest version from the boutell page.
cd $HOME_SRC
wget http://www.boutell.com/gd/http/gd-2.0.23.tar.gz
Extraemos el contenido de archivo. Extract the tarball.
tar xvfz gd-2.0.23.tar.gz
Nos cambiamos al directorio donde queadores los archivos. Change to the directory just extracted.
cd gd-2.0.23
Aqui configuramos diciendole que tome el freetype que recien instalamos. Here we must configure with the option to use the newly freetype created.
./configure --with-freetype=/usr/local
No se porque pero aunque le dimos la ruta en el configure, el make requiere que freetype exista abajo de este directorio.
Hacemos una liga simbolica de las librerias freetype2 en este directorio.
I can't determine why I need to make this symlink even if the configure especifies the correct directory.
Make this link only if the make complains.
ln -s /usr/local/include/freetype2/freetype freetype
Ahora si ya debemos de poder compilar e instalar. We can compile and install as usual.
make
make install
openssl
He tenido problemas para borrar el rpm de openssl que viene con RH9 por las dependencias que tiene. Mi solucion instalar la nueva version de openssl sin borrar el paquete de RH9.

Lo uso para las paginas en area segura https, y las conexiones seguras a algunos servidor de correo.
I've problems to remove the openssl RPM included with the RH9 distro, complains for dependencies. My solution install the new version in another directory without removing the RH9 package.

I use openssl por secure pages (https) and to connect to some POP3 mail servers.
Bajamos la ultima version del openssl. Download latest version of openssl.
cd $HOME_SRC
wget http://www.openssl.org/source/openssl-0.9.7d.tar.gz
Extraemos el contenido. Extract the tarball
tar xvfz openssl-0.9.7d.tar.gz
Nos cambiamos al directorio recien extraido. Change to the directory just extracted.
cd openssl-0.9.7d
Configuramos, compilamos e instalamos como de costumbre. Para que tome el directorio /usr/local/ssl y no tenga conlicto con el openssl de RH9. Configure, compile and install as usual. This takes the directory /usr/local/ssl and there is no conflict with the RH9 package.
./configure
make
make install
Ahora el truco es agregarle al principio del PATH el directorio de esta nueva instalacion. Trick. Add to the begging of the PATH variable the directory of this new instalation.
openssl version # old 9.7a
export PATH=/usr/local/ssl/bin:$PATH
openssl version # last 9.7d
Apache
Obtenemos la ultima version del Apache httpd server. En el ejemplo esta uno de los muchos sitios espejos para descargar. Get the latest version of the Apache httpd server. In this example I get the tarball from one mirror, please use your nearest mirror.
cd $HOME_SRC
wget http://apache.247available.com/httpd/httpd-2.0.49.tar.gz
Extraemos el contenido del archivo. Extract the tarball.
tar xvfz httpd-2.0.49.tar.gz
Nos cambiamos al directorio recien creado. Change to the directory just extracted.
cd httpd-2.0.49
Ahora configuramos las opciones deseadas. Las opciones de configuracion que yo use son:
  • --enable-ssl : Para poder tener paginas https en mi servidor
  • --enable-so : Para poder compilar el PHP como modulo dinamico
  • --enable-rewrite : Para algunas reglas para corregir URL
  • --enable-deflate : Para comprimir las paginas al ser enviadas
Se pueden agregar o borrar las opciones segun las necesidades (excepto so).
Configire with the desired options. I use only this options:
  • --enable-ssl : To use secure pages, https
  • --enable-so : To be able to compile PHP as a dynamic module
  • --enable-rewrite : To overwrite some URL
  • --enable-deflate : To compress static pages in the server
You can add o delete options as needed (but so is mandatory).
./configure --enable-ssl --enable-so --enable-rewrite --enable-deflate=yes
make
make install
Para simplificar la administracion del apache puede ser conveniente agregar en el PATH la ruta del apache. To easy the administration of apache may be usefull to add the apache directory to the PATH.
export PATH=$PATH:/usr/local/apache2/bin
Imap
Para poder usar algun programa de Webmail para consultar y mandar correos desde una pagina del servidor (ej. nocc, squirrelmail, etc.), es necesario habilitar las extension de IMAP del PHP. In order to use any webmail program to read and send e-mail from a web page (eg. nocc, squirrelmail, etc.), the PHP IMAP extension is rquired.
Para descagar la ultima version del kit de herramientas para IMAP (toolkit) use el siguiente comando: To download the latest IMAP toolkit use:
cd $HOME_SRC
wget ftp://ftp.cac.washington.edu/mail/imap.tar.Z
Para extraer los archivos teclee: To extract the source files type:
uncompress imap.tar
tar xvf imap.tar
Nos debemos de cambiar al directorio recien creado We need to change to the directory
cd imap-2002b
Este es de los paquetes 'raros' que no tienen configure, para compilarse teclee: This library doesn't use configure, tou should use:
make slx
Como solo se requiere la libreria cliente 'c-client' para configurar el PHP, fue mas sencillo para mi copiar solo los archivos requeridos: For configuring PHP you only need the c-client API, so I only copied the required files:
cp c-client/rfc822.h c-client/mail.h c-client/linkage.h /usr/local/include
cp c-client/c-client.a /usr/local/lib
Informix csdk
Para poder usar las funciones ifx_ en PHP hay que habilitar la extension configurando el --with-informix.

Para RH9 las versiones anteriores a 2.81.UC2X5 del CSDK mandaban errores de "undefined reference to `__ctype_b'". La version X5 solo era para clientes con soporte pagado, por fortuna ya hicieron 'publica' la version 2.81.UC3 y se puede descargar del sitio de IBM.
In order to use the ifx_ functions in PHP you must enable the extension with the --with-informix option of the configure command.

For RH9 versions of the Informix CSDK older than 2.81.UC2X5 had the problem of "undefined reference to '__ctype_b'". Version X5 was only available for paid support customers only, but now version 2.81.UC3 is available at the IBM site.
Hay que agregar las variables de medio ambiente de Informix. Yo recomiendo en el archivo /etc/profile para que se ejecute cada vez que se conecta un usuario.
Agregar las siguientes instrucciones (o las que requiera su servidor) al final del archivo /etc/profile:
You should setup the Informix environment variables. I sugest in the /etc/profile file wich is executed for every user at logon.
export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=adela_n
export DBDATE=DMY2/
export DBCENTURY=C
export PATH=/usr/local/ssl/bin:$PATH:$INFORMIXDIR/bin:/usr/local/apache2/bin
Hay que desactivarnos y volvernos a conectar para que tome el nuevo medio ambiente: We need to logout and login again to take the new environment in effect.
logout
Agregamos el grupo y usuario de informix: Add the group and users 'informix':
groupadd informix
useradd -g informix -d $INFORMIXDIR informix
Como IBM cambia las opciones para descargar y la ultima ves me pidio registrarme para descargalo, solo les digo consiganlo. As IBM change the options to download the CSDJ and the last time they ask me for my users/password, I only say get the CSDK!
cd $INFORMIXDIR
umask 0
# http://www-306.ibm.com/software/data/informix/tools/csdk/
#
# Esquina inferior derecha / bottom right corner
# Informix CSDK Downloads
#
# Download: clientsdk.2.81.UC3.LINUX-I32.tar
# Informix Downloads for Linux (Informix Client SDK V2.81.UC3 32 bit for Linux on Intel)
# Version: 2.81.UC3
# File Size: 67MB
# Languages Included: English US
Este archivo tar contiene al archivo csdk.cpi y varios archivos de documentacion. This tarball contains the file csdk.cpi and the documentation.
tar xvf clientsdk.2.81.UC3.LINUX-I32.tar
Ahora extraemos el contenido del archivo csdk.cpi. Nota, en el manual de instalacion le falta el < en el comando y provocado mas de un dolor de cabeza a los que como yo tenemos mas practica con tar que con cpio. Now we extract the content of the csdk.cpi file. Note, in the Installation Guide there is a < missing in the command and is a headache for people like me with more experince in tar than with cpio.
cpio -icdumB <csdk.cpi
Ahora si procedemos a instalar el CSDK. Y contestamos a las preguntas que nos haga. We are ready now to install the CSDK:
./installclientsdk
Ahora procedemos a agregarle las librerias al ld. Al final del archivo /etc/ld.so.conf hay que agregar los siguientes directorios: Now we add the librarias to the ld linker. At the end of the /etc/ld.so.conf file add the folowwing lines:
/opt/informix/lib
/opt/informix/lib/esql
/opt/informix/lib/cli
/opt/informix/lib/client
/usr/local/lib
Una ves agregados los directorios hay que ejecutar el comando ldconfig para tome los cambios. We need to execute the ldconfig command to activate the changes in configuration.
ldconfig
Ahora solo falta configurar los archivos $INFORMIXDIR/etc/sqlhosts y /etc/services.
Para configurar estos archivos lo mas sencillo es preguntarle al DBA del servidor, pero aqui doy algunos trucos para la conectividad.
We only need to configue the $INFORMIXDIR/etc/sqlhosts and /etc/services files.
To configure this files the easy solutionis is to ask the DBA wich configured the server, but here are some tricks for the conectivity of IDS.
PHP
Una ves instaladas la ultimas versiones en base a programas fuentes de las librerias criticas y de que tengamos instaldos los RPMs de las otras librerias necesarios (lipjpeg-devel, zlib-devel, unixODBC-devel, etc.), procedemos a instalar el PHP.
Descargamos el paquete.
Once we have installed the latest version of the 'critical' lilbraries thru source tarball and have the latest RPMs of the 'others' libraries ( libjpeg-devel, zlib-devel, unixODBC-devel, etc.), we proced to install PHP.
Download the tarball.
cd $HOME_SRC
wget http://us4.php.net/get/php-4.3.6.tar.gz/from/this/mirror
Extraemos los archivos y nos cambiamos al directorio recien creado. Extract the files and change to the new directory.
tar xvfz php-4.3.6.tar.gz
cd php-4.3.6
Los parametros de configuracion que use son:
  • --with-apxs2 : Para que se cargue como modulo dinamico en el apache
  • --without-mysql : No uso MySQL
  • --with-gd, --with-jpeg-dir, --with-zlib-dir, --with-freetype-dir : Para que tome la ultima version instalada y no la que viene con PHP
  • --with-informix : Para conectareme a la base de datos Informix
  • --with-unixODBC : Para habilitar 'otras' conexiones via ODBC
  • --with-imap, --with-imap-ssl : Para poder usar clientes Webmail
Por supuesto se pueden agregar o borrar opciones segun sus necesidades.
I use the following configuration parameters:
  • --with-apxs2 : To load PHP as a dynamic module in the Apache server
  • --without-mysql : I don't use MySQL
  • --with-gd, --with-jpeg-dir, --with-zlib-dir, --with-freetype-dir : To force the use of the last version of GD and not the included with PHP
  • --with-informix : To connect to the Informix database
  • --with-unixODBC : To enable 'others' conections thru ODBC
  • --with-imap, --with-imap-ssl : To use Webmail clients
Of course you can add o remove options according to tour needs.
./configure --with-apxs2=/usr/local/apache2/bin/apxs \
            --without-mysql --with-gd=/usr/local  \
            --with-jpeg-dir=/usr/local/lib        \
            --with-zlib-dir=/usr/local/lib \
            --with-freetype-dir=/usr/local/lib \
            --with-informix=$INFORMIXDIR \
            --with-unixODBC=/usr/lib \
            --with-imap  --with-imap-ssl=/usr/local/lib
Una ves que verificamos que NO mando NINGUN error el configure por librerias o extensiones no encontradas, procedemos a compilarlo e instalarlo. Once verified that there're NO error messages in the configure due to missing libraries, we proceed to compile and install.
make
make install
Despues de esto hay que modificar los archivos de configuracion de Apache para que reconozca las extensiones .php como codigo PHP.
Se puede declarar cualquier otra extension para que se procese como PHP, incluso se puede procesar los .html o los .asp, de esta manera el usuario va a ver paginas con extension .asp y no adivinara que se esta procesando con PHP.
En el archivo /usr/local/apache2/conf/httpd.conf hay que agregar estas lineas a la altura donde estan definidos los otros AddType.
Now we need to modify the configuration files of Apache to define the file extension .php as PHP code.
We can define any file extension to be procesed as PHP code, even we can declare .html or .asp as PHP code, this way when the user see pages with extension .asp he can't guess it's a PHP page!
. In the file /usr/local/apache2/conf/httpd.conf we need to add this lines below the others AddType.
AddType application/x-httpd-php .php
AddType application/x-httpd-php .wml
AddType application/x-httpd-php-source .phps
Tambien hace falta el archivo de configuracion de PHP. En caso de que NO tengas un archivo php.ini anterior, puedes copiar un archivo con la configuracion recomendada para luego modificarlo segun tus necesidades. We also need a PHP configuration file. In case you DON'T have a previous php.ini file, you can copy the recommended configuration file and then customize it.
cp php.ini-recomended /usr/local/lib/php.ini
Ahora si ya se arranca el apache con los cambios. We're ready to start the Apache server with the changes.
apachectl stop
apachectl start
Para verificar la instalacion lo mejor es ejecurtar un pequeño programa PHP que ejecute la funcion phpinfo(), ahi se verifica la lista de modulos instalados y su configuracion. To verify the installation the easy way is to execute a little PHP program with the phpinfo() function, this list the list of extension installed and their configuration.
<?php
phpinfo();
?>