Custom Search
Bloggers Activos
Una historia para meditar tonathiu
K3b burning failed asimov
La evolución del Programador mandrake
Darwin no perdió la fe por desarrollar la teoría de la evolución blacksoul
El Dalai Lama dice: vendaval
Religión, fanatísmo o Terrorismo? blacksoul
De regreso a la Mononeurona y probando NetBSD 4.0 luzbel
Dani people's vaio chilicuil
Una Canción Triste vendaval
¡Lo hemos conseguido! der_teufel
Last Download
Segunda Fundación
Segunda Fundación
Continuación del Curso de DB
rnstux
Gentoo Linux 2008.0 released
asarch
Libro de Servidores GNU/LINUX Licencia CC
vendaval
Asus lanza rival para el iMac
aarkerio
El ACTA se discute en el G8
aarkerio
Ese elusivo 1%
aarkerio
Tattoo
aarkerio
Manda al diablo a Telcel
asarch
Seguimiento de Cuba...
vendaval
Las mentiras
aarkerio
Google Groups Karamelo
Visit this group
GNU/Linux
GNU/Linux
Hacktivismo
Hacktivismo
Debian
Debian
NetBSD
NetBSD
WWW
WWW
Guia Linux
Guia Linux
Server Side
Server Side
Ofimatica
Ofimatica
Despabilando...
Despabilando...
Mundo Maya
Mundo Maya
Literatura
Literatura
Agora
Agora
Psicologia
Psicologia
Economia
Economia
Ambientalismo
Ambientalismo
Desarrollo
Desarrollo
Biologia
Biologia
No a la crueldad
No a la crueldad

Hacktivism

LinuxChix button

Server Side \ PostgreSQL con perl en el WEB
Server Side
PostgreSQL con perl en el WEB

Este artículo ha sido consultado en 795 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

Printable version

Add comment:



Captcha




Que estas haciendo?
chilicuilchilicuil está:
Gracias por la ayuda rnstux :D
1 day, 6 hours ago

der_teufelder_teufel está:
|-O
1 day, 7 hours ago

rnstuxrnstux está:
checa esto!! agregale lógica y listo. http://tinyurl.com/5s7ttw
2 days, 4 hours ago

rnstuxrnstux está:
WTF?..
2 days, 4 hours ago

chilicuilchilicuil está:
Algun mononeuron sabra como agregar excepciones al firewall de win xp sp2 con vb6?
2 days, 7 hours ago

mandrakemandrake está:
Aarkerio como va el cyber? con linux
2 days, 8 hours ago

Que estuvimos haciendo >>
Chipotle Software

Uso OpenOffice.org
Una vez a la semana
Nunca
Uso otra ofimática
Todos los días
Una vez al mes
Rapiditas
Problemas de Lenguaje en niños
13740 lecturas
Anticoncepción de Emergencia
11560 lecturas
Sexualidad infantil y juvenil
11096 lecturas
Rompiendo cualquier clave WEP en unos pocos minutos
8691 lecturas
Sinapsis y exocitosis
8100 lecturas
Mi primer CakePHP, mmmmm cakeee
6366 lecturas
Evolución filética en las hepáticas
5940 lecturas
BASH y Primeros Comandos
4901 lecturas
CakePHP II Active Record
4674 lecturas
Cómo convertirse en hacker
4233 lecturas
Add to Technorati Favorites

ir arriba
Buscar el yo en el poderío del oro es edificar sobre arena. Henrik Johan Ibsen

The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework XHTML GNU Hacker Chipotle Software

Too Cool for Internet Explorer