Despabilando la MonoNeurona::Internet es de todos [Inicio] [Regresar]
Server Side \ PostgreSQL con perl en el WEB
Server Side
PostgreSQL con perl en el WEB

Este artículo ha sido consultado en 924 ocasiones.

Apache+perl=Mod_Perl

Aún cuando PHP es un lenguaje de programación práctico y de desarrollo más rápido y barato que otros lenguajes, como java. Nunca es recomendable quedarse demasiado atado a un único lenguaje. Todo desarrollador y/o Webmaster debe manejar al menos un lenguaje de amplio espectro, también llamados lenguajes de propósito general, estos lenguajes nos sirven lo mismo para generar reportes en PDF de los archivos modificados en nuestro servidor de tal a tal fecha, que para hacer un sencillo formulario Web.

Perl es una excelente elección pues es un lenguaje extremadamente poderoso y versátil, además está disponible en todas las plataformas comerciales lo que hace que nuestros programas sean facilmente portables. Además perl es un decano de la programación, pues se encuentra cerca de su versión 6.0, Hay extensiones d epero En este mini-tutorial aprenderemos a visualizar una tabla de PostgreSQL a través de Apache y un script de perl. Necesitaremos los siguientes paquetes:

  1. PostgreSQL
  2. Apache-perl
  3. libdbd-pg-perl

Busca en tu distribución los paquetes e instálalos (me han comentado que Mandrake 9.x no posee el paquete DBI para PostgreSQL pero se puede obtener aquí) si usas Debian instála los paquetes con apt-get:

# apt-get install postgresql apache-perl libdbd-pg-perl

NOTA: ¿Por qué apache-perl y no apache?, porque apache perl posee el módulo mod_perl. mod_perl es la integración de dos de las más robustas tecnologías web: Apache+Perl, apache perl es un demonio httpd de apache con el lenguaje perl incrustado en él, lo que mejora substancialmente la velocidad y el rendimiento de las páginas web. Uno de los probleas de los CGI (Commun Gateway Interface) de perl era que cada uno de ellos iniciaba un proceso en el servidor, con mod_perl esto ya no sucede y la carga al servidor se reduce.

Bien, pasemos a PpstgreSQL, agrega la siguiente línea al archivo /etc/postgresql/pg_hba.conf:

local all trust

Asigna un password al usuario postgres:

# passwd postgres

Reinicia la base de datos:

# /etc/init.d/postgresql restart

Cambia al usuario postgres, crea la base de datos DBTEST e ingresa en ella:

# createdb DBTEST && psql DBTEST &&

Crea la tabla tb_usuarios y agrega algunos registros:

DBTEST>create table tb_usuarios (id serial, nombre varchar(50), email varchar(30));
DBTEST>INSERT INTO tb_usuarios VALUES (NEXTVAL('tb_usuarios_id_seq'), 'Ian Murduck' , 'ianmur@debian.org');
DBTEST>INSERT INTO tb_usuarios VALUES (NEXTVAL('tb_usuarios_id_seq'), 'Debora Murduck' , 'debmur@debian.org');
DBTEST>INSERT INTO tb_usuarios VALUES (NEXTVAL('tb_usuarios_id_seq'), 'Bruces Perens' , 'bperens@debian.org');

Con el usuario que ejecuta Apache (puedes conocer quién es el usuario si revisas el archivo /etc/apache-perl/httpd.conf ) crea el directorio "pruebas" en el directorio raíz de apache, en mi caso el directorio raíz es /var/www de modo que el directorio queda en /var/www/pruebas. Busca está línea en el archivo /etc/apache-perl/httpd.conf:

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

Y cambiala por:

ScriptAlias /pruebas/ /var/www/pruebas/

Dos líneas abajo verás:

<Directory /usr/lib/cgi-bin/>

También cambia la ruta a /var/www/pruebas/.

Reinicia apache:

# /etc/init.d/apache-perl restart

Corta y pega las siguientes líneas y guardalo como /var/www/pruebas/usuarios.pl y con permisos 755.


#!/usr/bin/perl -w

# la opción -w arroja más advertencias útiles # $| = 1;
#prendo el autoflushing para que no guarde en el buffer

print "Content-Type: text/html\n\n" if $ENV{HTTP_USER_AGENT};
print "<html>\n";
print "<head><title>Sample</title></head>\n<body>\n";
##Cargo las interfaces de postgresql use Pg;
use DBI;

my $dbname = 'DBTEST';

my $host = 'localhost';

my $username = 'postgres';

my $password = 'mipassword';

print "primera marca<br> \n";

my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host= $host;",$username,$password,{printError=> 1}) or die "Cant connect to postgreSQL: $DBI::errstr ($DBI::err)\n";

print "Estoy conectado! <br> \n";

my $query="SELECT * FROM tb_usuarios;";

$sth = $dbh->prepare($query);

$sth->execute;

print "<table align='center' border='1'> \n";

while (@vetor = $sth->fetchrow) {

print "<TR>\n";

$sth->bind_columns(undef, \$id, \$nombre, \$email);

print "<TD VALIGN=TOP>$id</TD><TD VALIGN=TOP>$nombre</TD><TD VALIGN=TOP>$email</TD>\n";

print "</TR>\n";

}

print "</table>\n";

$sth->finish;

$dbh->disconnect();

print "Estoy desconectado <br> \n";

print "</body></html>";

Cambia la variable $password por el password que asignaste al usuario postgres, colócate en http:/localhost/pruebas/usuarios.pl y listo!!, haz hecho tu primer acceso a Postgresq con DBI y mod_perl.

TIP!: muchas veces los errores de programación en mod_perl producen la misma página de error en apache, es más cómodo desarrollar viendo el log de errores de apache-perl para conocer los errores de salida, para ello como root teclamos:

# tail -f /var/log/apache-perl/error.log


Última actualización: 2007-04-29 10:57:00-05



ir arriba
The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework CSS GNU Hacker