martes, 25 de octubre de 2011


1 . Instalación de PostgreSQL 2 . Instalación de Apache y PHP como módulo mismo 3 . Ejemplos

En este articulo vamos a tratar la instalación y configuración de un servidor web, utilizandoApache como servidor, PHP como lenguaje interpretado de alto nivel y PostgreSQL como base de datos. Con esta combinacion podremos crear páginas dinamicas y obtener informacion de nuestra base de datos para presentarla via web. Por ultimo, daremos unos cuantos ejemplos de como programar nuestras páginas web utilizando estos programas.

Partimos de la base de que tenemos una máquina con Linux instalado y funcionando y con todas las herramientas necesarias para la compilación de programas (gcc,make,..). Este artículo se basará en Apache 1.3.x, PHP 3.0.x y PostgreSQL 6.5.x y ha sido comprobado en un equipo con Apache 1.3.6, PHP 3.0.12 y PostgreSQL 6.5.1. Lo primero que tenemos que hacer es bajarnos los tres paquetes con los programas necesarios y grabarlos en un directorio de nuestro sistema (por ejemplo, /local/download/):

Una vez que tenemos los programas, tendremos que elegir el lugar donde los vamos a instalar. En este artículo suponemos que instalaremos:

Apache en: /usr/local/apache/

PHP como módulo de Apache

PostgreSQL en: /usr/local/pgsql/

Catalogo Web: /home/httpd/html/

Instalación de PostgreSQL

Lo primero que tenemos que hacer es crear una cuenta que administrará la base de datos:

Cuenta de administración de la BD
   [localhost]$ su    [localhost]$ /usr/sbin/adduser postgres    [localhost]$ passwd postgres    [localhost]$ exit  

Una vez creada la cuenta Postgres crearemos los directorios que utilizaremos para instalar PostgreSQL con los permisos adecuados:

Creación de directorios para la correcta instalación de PostgreSQL
   [localhost]$ su    [localhost]$ cd /usr/src    [localhost]$ mkdir pgsql    [localhost]$ chown postgres:postgres pgsql    [localhost]$ cd /usr/local    [localhost]$ mkdir pgsql    [localhost]$ chown postgres:postgres pgsql    [localhost]$ exit   

Empezamos con el proceso de compilación/instalación:

Proceso de compilación/instalación
   [localhost]$ su postgres    [localhost]$ cd /usr/src/pgsql    [localhost]$ gunzip -c /local/download/postgresql-6.5.x.tar.gz                  | tar xvf -     [localhost]$ cd /usr/src/pgsql/postgresql-6.5.x/src    [localhost]$ ./configure --prefix=/usr/local/pgsql                  --with-tcl --with-perl     [localhost]$ gmake all > make.log 2>&1 &    [localhost]$ tail -f make.log     [localhost]$ gmake install > make.install.log 2>&1 &    [localhost]$ tail -f make.install.log    [localhost]$ exit  

Ahora tenemos que decirle al sistema donde poder encontrar las librerias necesarias, para ello actualizamos el fichero /etc/ld.so.conf:

Actualización del fichero de configuración
   [localhost]$ su    [localhost]$ echo /usr/local/pgsql/lib >> /etc/ld.so.conf    [localhost]$ /sbin/ldconfig.    [localhost]$ exit  

Tambien tendremos que actualizar el fichero ~/.bash_profile de la cuenta administradora de la base de datos, en este caso Postgres (si utilizais otro shell que no sea bash, tendreis que cambiar el archivo correspondiente, en vez de .bash_profile):

Actualización del fichero profile
   [localhost]$ su postgres     ****************************************    Editar el archivo ~/.bash_profile y     anadirle lo siguiente    ****************************************     PATH=$PATH:/usr/local/pgsql/bin    MANPATH=$MANPATH:/usr/local/pgsql/man    PGLIB=/usr/local/pgsql/lib    PGDATA=/usr/local/pgsql/data    export PATH MANPATH PGLIB PGDATA     ****************************************    Salir para que los cambios surtan efecto    ****************************************     [localhost]$ exit  

Una vez que hemos terminado de instalar la base de datos y configurar nuestro sistema, tenemos que inicializarla y arrancarla:

Inicialización y arranque de la BD
   [localhost]$ su postgres    [localhost]$ initdb    [localhost]$ cd     [localhost]$ nohup postmaster -i > pgserver.log 2>&1 &    [localhost]$ exit  

Ya tenemos nuestra base de datos PostgreSQL, instalada y funcionando. Ahora solo tenemos que administrarla, para ello nada mejor que leerse los manuales de documentación de la misma y aprender SQL. Solamente nos queda hacer un par de ajustes en la configuración para que podamos acceder a postgreSQL via PHP/web. Lo primero es incluir en el archivo/usr/local/pgsql/data/pg_hba.conf la siguiente linea:

host all tu_maquina_IP tu_maquina_NETMASK trust

Y la segunda es dar privilegios de acceso en tu base de datos/tablas al usuario "Nobody"para que pueda coger los datos de la misma (Nobody es el usuario que ejecuta el servidor Apachepor defecto). Para ello puedes hacer lo siguiente:

Dar privilegios a la BD
   ***************************************    Suponemos que tenemos una base de datos    llamada prueba, con una tabla llamada    direcciones    ***************************************     [localhost]$ su postgres    [localhost]$ psql prueba    prueba=> GRANT SELECT ON direcciones    prueba=> TO nobody;     prueba=> z    prueba=> q    [localhost]$ exit  

Instalación de Apache y PHP como módulo mismo

Pasamos a la segunda parte de este artículo, para ello procederemos como sigue:

Instalación de Apache/Php
     [localhost]$ su     [localhost]$ cd /usr/src    [localhost]$ gunzip -c /local/download/apache_1.3.x.tar.gz                  | tar xvf -    [localhost]$ gunzip -c /local/download/php-3.0.x.tar.gz                  | tar xvf -    [localhost]$ cd apache_1.3.x    [localhost]$ ./configure --prefix=/usr/local/apache    [localhost]$ cd ../php-3.0.x    [localhost]$ ./configure --with-pgsql=/usr/local/pgsql                  --with-apache=../apache_1.3.x --enable-track-vars                  --enable-sysvsem --enable-sysvshm                 --enable-url-includes    [localhost]$ make    [localhost]$ make install    [localhost]$ cd ../apache_1.3.x    [localhost]$ ./configure --prefix=/usr/local/apache                  --activate-module=src/modules/php3/libphp3.a    [localhost]$ make    [localhost]$ make install    [localhost]$ cd ../php-3.0.x    [localhost]$ cp php3.ini-dist /usr/local/lib/php3.ini    [localhost]$ exit  

Ya tenemos apache instalado y PHP como módulo del mismo. Ahora tenemos que hacer unos cuantos ajustes en la configuración para que todo funcione. Tenemos que editar el fichero/usr/local/apache/conf/httpd.conf y añadirle lo siguiente:

Actualización del fichero de configuración
   AddType application/x-httpd-php3 .php    DirectoryIndex index.html index.php  

Estas dos lineas son las únicas necesarias para que Apache sepa que hacer con un fichero que contenga código PHP. Existen otras opciones que deberias actualizar en vuestro fichero/usr/local/apache/conf/httpd.conf para terminar de configurar Apache, por ejemplo:ServerAdmin, ServerName, DocumentRoot, directivas "Directory", etc. Los comentarios incluidos en este fichero son autoexplicativos y no deberiais tener ningun problema para ajustar la configuración a vuestro sistema. Ahora sólo nos queda arrancar el servidor Apache:

Arranque del servidor
   [localhost]$ su    [localhost]$ /usr/local/apache/bin/httpd                  -f /usr/local/apache/conf/httpd.conf    [localhost]$ exit  

NOTA: Para obtener toda la información/documentación completa pasaros por Apache documentación y PHP documentación.

Ejemplos

Lo primero que tenemos que hacer es comprobar que PHP funciona bien. Para ello podemos crear un fichero index.php en nuestro catalogo web /home/httpd/html/ con las siguientes lineas:

Creación fichero index.php
             Pagina index de prueba                       Dia/hora: ".date("d/m/Y - H:i:s")."
"; ?>

Este fichero deberia de daros como resultado dos lineas en pantalla, una de ellas con el dia y la hora de vuestro servidor. Una vez comprobado que PHP funciona, vamos a crear una página web, que acceda mediante PHP a PostgreSQL y que nos devuelva como resultado el contenido de una de las tablas de la base de datos. Suponemos que ya tenemos una base de datos llamada prueba, con una tabla direcciones que contiene tres campos calle,ciudad,pais. La máquina que estamos utilizando es servidor.domain.es y PostgreSQLutiliza el puerto 5432(puerto por defecto).

Acceso a PostgreSQL
             Pagina index de prueba                            Problemas de conexion con la base de datos.               ";         exit;    }     $sql="SELECT * FROM direcciones ORDER BY pais;";      /* Ejecuta y almacena el resultado de la orden        SQL en $resultado_set */    $resultado_set = pg_Exec ($conexion, $sql);    $filas = pg_NumRows($resultado_set);      /* Presenta la informacion almacenada en $resultado_set */    for ($j=0; $j < $filas; $j++) {     echo "Direccion: ".pg_result($resultado_set, $j, 0)."
Ciudad: ".pg_result($resultado_set, $j, 1)."
Pais: ".pg_result($resultado_set, $j, 2)."

"; } /* Cierra la conexion con la base de datos */ pg_close($conexion); ?>

Esta página web nos deberia de presentar la información contenida en la tabla direcciones de la base de datos prueba. Y a partir de aquí solamente teneis que leer la documentación y usar vuestra imaginación para crear páginas web dinámicas, actualizadas y que presenten la información contenida en vuestras bases de datos.

0 comentarios:

Publicar un comentario