"La Gaceta de Linux...haciendo de Linux un poco más divertido!"


Instalación de Base de Datos para Web de Mark

Zope, Apache, Mysql, PostgreSQL, Perl, Python, PHP

Por Mark Nielsen

Traducido al Español por: Martha Fiorella Ospina Lobato
el día 08 de Setiembre del 2000 para: La Gaceta de Linux


  1. Introducción
  2. Opinión de Mark sobre la utilidad del Software Libre
  3. El script de Instalación
  4. Conclusión
  5. Referencias

Introducción

Encuentro más fácil instalar servicios sin usar rpms, porque puedo instalar versiones diferentes. Soy un fiel creyente en jamás usar rpms cuando tenga servicios que emplean programas binarios diseñados para clientes. La única excepción es emplear el debian GNU/Distribución Linux que tiene algunas características claras.

Por qué Mark sobrelleva el problema de instalar todos estos servicios de base de datos? Es una herramienta de aprendizaje que ha sido muy útil en todos sus trabajos. Será de gran ayuda tener demostraciones auténticas cuando tengamos la oportunidad de usar software libre. Todas las ventajas asociadas con el software que referiremos más adelante han sido muy útiles en todos sus trabajos.

Opinión de Mark sobre la utilidad del Software Libre

El Software que Mark emplea es todo lo que usted necesita para llegar a ser un programador de base de datos para Web de gran reconocimiento. Remítase a Dice.com y otras páginas web. Casi todas las ventajas que usted necesita para su software comercial pueden ser aprendidas en primer lugar a través de un software libre que veremos posteriormente. La ventaja de este software libre es que usted podrá usarlo con capacidades ilimitadas. Instálelo en su portátil - - no necesita una licencia, sólo conocer las ventajas que se requieren para aplicar con el software libre - - siempre que pueda obtenerlo y aprenderlo. No tiene que esperar hasta tener una simple licencia. Estas ventajas son transferibles con otros servidores web, bases de datos y con frecuencia emplearán los lenguajes detallados en lista posteriormente en cualquier empresa.

Tenemos la gran expectativa de que usted podrá convencer a sus jefes o empresa para que usen el software libre. El software libre nos permite ahorrar grandes cantidades de dinero así como crear un ambiente donde sus limitaciones sean sólo las personas y hardware. En un sentido genérico puedo decir que he encontrado que ésto hace que la gente controle grandes redes de trabajo mejor diseñadas que todos los que instalan software comercial.

Aquí hay una de las razones por las que Mark ha considerado esta instalación muy valiosa:

  1. Python - - Era fanático acérrimo de Perl hasta que Python apareció inesperadamente. Me tomó meses que otras personas me digan para cambiarme a Python antes que decida hacerlo. Ahora a menos que necesite un módulo Perl específico, uso Python. Voy a ver qué puedo hacer para ayudar a los módulos del puerto Perl para Python con el módulo mod_snake para Apache. Python es el lenguaje que usa desarrollo de rápida aplicación y es un lenguaje clave para el servidor web Zope. Aprenda Python ahora y Ud. será un empleado valiosos o posteriormente un consultor. Cuando el mercado prospere para los programadores de Python, será mas fácil obtener un trabajo con Python que con Perl. Donde Perl estaba hace 5 años, Python está hoy en día. Está ganado terreno en el mundo de las corporaciones lentamente. Usted puede crear binarios Python de tal manera que no necesite Python instalado para correr un programa Python. Python es un lenguaje orientado a objetos. El aspecto positivo de Python es que hará binarios JAVA, por lo tanto puedo obviar el escribir código JAVA. Realmente desearía otro lenguaje que estuviese libre y abierto que podría reemplazar JAVA en los buscadores. En mi opinión JAVA necesita ser reemplazado, o ser totalmente de código abierto antes de que yo pueda considerarlo en aspectos de la ética y en aspectos de los negocios. Hasta que no sea de Licencia Gratuita (GNU) o algo similar, yo considero que debe poner su vida en manos de las corporaciones (cuando usted no necesite) ser escéptico.
  2. Perl - - El estándar del desarrollo web. Es el lenguaje más potente que hay para el desarrollo de base de datos en Web. No es tan amigable para el usuario como PHP, pero me gusta más porque Perl puede hacer más que una Base de Datos para Web. Perl y Phyton son los dos lenguajes que uso para escritura.
  3. PHP  - - Un lenguaje bonito para las personas que sólo quieren desarrollar base de datos para Web. No lo uso mucho por que quiero ser realmente bueno con Perl y Phyton y no quiero divulgar tanto mis habilidades.
  4. Apache - - El mejor servidor Web en el Mundo. No necesito explicarlo. Usted puede usar Apache y SSL como una interfaz de usuario y poner Zope detrás de Apache y SSL. Así como Zope puede ser encriptado directamente.
  5. Zope - - Un servidor Web muy potente que ofrece seguridad, base de datos y escritura HTML todo en uno. Es muy cierto que el servidor aprende a desarrollar aplicaciones rápidas. Zope y Apache son incompatibles, pero pueden trabajar juntos cuando se reescribe el módulo de Apache. Apache y Zope se complementan el uno al otro y tienen propósitos específicos. Si usted aprende Zope y Apache, nunca necesitará aprender otro servidor Web.
  6. PostgreSQL - - El mejor servidor de base de datos libre en el mundo. Me he dado cuenta que PostgreSQL está basado en la elegancia y algo similar a Oracle para un programador SQL. PostgreSQL tiene PL/pgSQL ( como PL/SQL en Oracle ), tiene procedimientos almacenado, sus contadores son similares a Oracles, y usted puede insertar comandos Perl en el lado de sentencias SQL si usted compila Perl en PostgreSQL. La única cosa que no me gusta sobre PostgreSQL es su mal manejo con objetos grandes. Si PostgreSQL tuviera un método fácil para usar Objetos Grandes como MySQL tiene, yo nunca usaría MySQL para trabajo privado.
  7. MySQL - - Un gran y rápido servidor de base de datos que muchas compañías usan en combinación con PHP. Me gusta, pero prefiero PostgreSQL, porque MySQL carece de muchas cosas. Yo no quiero divulgar mis habilidades sobre muchos servidores de bases de datos, y así, PostgreSQL y Oracle son mis favoritos porque ellos tienen muchas características. MySQL es bueno para bases de datos rápidas y simples. Su fácil manejo de Objetos Grandes es realmente óptimo, ésa es la razón por la que la utilizo. Yo creo que MySQL y PostgreSQL tienen propósitos diferentes y ambos son buenos. Me gusta experimentar y probar cosas nuevas, asi que el PstgreSQL siempre será así para mí.

Script de Instalación

#### Antes de que algo este realizado, vaya al directorio apache/src
#### y edite Configuration.tmpl añada información sin comentarios y así sucesivamente.
#### Responda "y" solo para configurar apache con mod_perl,
###      pero no deje mod_perl compile apache. 
### Añada
#       AddModule modules/mod_snake/libmod_snake.a
# al final de src/Configuration.tmpl en apache. 

### Luego haga lo siguiente.

cd mysql-3.22.32
mkdir /usr/local/mysql-3.22.32
./configure --prefix=/usr/local/mysql
make
make install

cd ../postgresql-7.0.2/src
mkdir /usr/local/postgresql
./configure --prefix=/usr/local/postgresql --with-perl -with-odbc
make
make install
chown -R postgres /usr/local/postgresql

### Solo configure apache, pero no lo compile
cd ../apache_1.3.12
make clean
./configure --prefix=/usr/local/apache
cd ../mod_snake-0.2.0
./configure  --prefix=/usr/local/mod_snake --with-apache=/usr/local/src/apache_1.3.12
make
make install

### No tiene perl compilado apache, solo está configurado apache 
cd ../mod_perl-1.24
make clean
perl Makefile.PL EVERYTHING=1 APACHE_PREFIX=/usr/local/apache
make test
make install

### Compile apache
cd ../apache_1.3.12
make
make install

### Para lo que quizás deseen obtener php3 trabajando con php4, 
### usted puede tener el material instalado, pero yo tengo el error
#Syntax error on line 208 of /usr/local/apache/conf/httpd.conf:
#Cannot load /usr/local/apache/libexec/libphp3.so into server: /usr/local/apache/libexec/libphp3.so: undefined symbol: dlst_first
#/usr/local/apache/bin/apachectl start: httpd could not be started
### Gracias a Cunningham por mencionar que se puede obtener php3 y php4
### trabajando en apache al mismo tiempo. Aún tuve algunos errores, 
### de tal manera que sólo abandoné php3. 

#cd ../php-3.0.16
#./configure  \
#--enable-versioning \
#--with-pgsql=/usr/local/postgresql \
#--with-mysql=/usr/local/mysql \
#--with-config-file-path=/usr/local/apache/ --enable-track-vars \
#--with-apxs=/usr/local/apache/bin/apxs --with-xml
#make
#make install

cd ../php-4.0.1pl2
./configure  \
--enable-versioning \
--with-pgsql=/usr/local/postgresql \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/apache/ --enable-track-vars \
--with-apxs=/usr/local/apache/bin/apxs --with-xml
make
make install

cd ..
mv Zope-2.2.0-src /usr/local/Zope
chown -R nobody /usr/local/Zope
cd /usr/local/Zope

### Ponga el  password y recuérdelo
su - nobody 'python wo_pcgi.py
### Mi habilidad para obtener un password que pueda recordar, mala seguridad
su - nobody 'python zpasswd.py -u mark -p Something'

### Iniciar los servidores web
su -c nobody '/usr/local/Zope/start' & 
chown -R nobody /usr/local/apache
/usr/local/apache/bin/apachectrl start

#### Ejecute este comando de tal manera que php pueda encontrar las librerías mysql

ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.6.0.0 /usr/lib/libmysqlclient.so.6

### Coloque esto en su script de inicialización para apache.
### esto hace que PHP trabaje. 

LD_LIBRARY_PATH=/usr/local/postgresql/lib
export LD_LIBRARY_PATH
PATH=$PATH:/usr/local/postgresql/bin
export PATH
export LIBDIR=/usr/local/postgresql/lib

/usr/local/apache/bin/apachectl start


### RECUERDE inicializar la base de datos para postgresql y mysql.
### Ejecute los comandos shell ya mencionados
### Para postgresql,

mkdir /usr/local/postgresql/data
chown -R postgres /usr/local/postgresql
cd /usr/local/postgresql
su postgresql -c '/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data'
/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data start

### Para inicializar MySQL 
cd /usr/local/src/mysql-3.22.32
chown -R postgres  /usr/local/mysql
su postgres -c 'scripts/mysql_install_db'
su postgres -c '/usr/local/mysql/bin/safe_mysqld' &
### Recuerde cambiar el password para el servidor y para configurar
### los permisos para los otros usuarios. 

#### Recuerde configurar permisos en MySQL y PostgreSQL para
#### el username que Zope y Apache están debajo. 

#### Aqui tenemos algunas opciones del archivo httpd.conf  que las pongo abajo

 

 SetHandler perl-script
 PerlHandler Apache::OutputChain Apache::SSIChain Apache::Registry 
 PerlSendHeader On
 Options ExecCGI
 

AddType application/x-httpd-php4 .php4 

### Aún no he hecho nada con el módulo mod_snake. 

#### Estos son mis archivos y directorios en /usr/local/src
Apache-OutputChain-0.07           Zope-2.2.0-src
Apache-OutputChain-0.07.tar.gz    Zope-2.2.0-src.tgz
Apache-SSI-2.13                   apache_1.3.12
Apache-SSI-2.13.tar.gz            apache_1.3.12.tar.gz
ApacheDBI-0.87                    mod_perl-1.24
ApacheDBI-0.87.tar.gz             mod_perl-1.24.tar.gz
DBD-CSV-0.1023.tar.gz             mod_snake-0.2.0
DBD-ODBC-0.28.tar.gz              mod_snake-0.2.0.tar.gz
DBD-Oracle-1.06.tar.gz            mysql-3.22.32
DBD-Pg-0.95.tar.gz                mysql-3.22.32.tar.gz
DBD-XBase-0.161.tar.gz            php-3.0.16
DBI-1.14                          php-3.0.16.tar.gz
DBI-1.14.tar.gz                   php-4.0.1pl2
Install                           php-4.0.1pl2.tar.gz
Install~                          postgresql-7.0.2
Msql-Mysql-modules-1.2214         postgresql-7.0.2.tar.gz
Msql-Mysql-modules-1.2214.tar.gz

Conclusión

Bien, no hay conclusión, sólo comentarios.
Combinar estos programas con CVS, y almacenar cualquier cambio que usted haga a su base de datos con CVS (como escribir procedimientos almacenados, formatear tablas o cuadros, páginas web, etc. ), puede ser una combinación muy poderosa para principiantes y dudas experimentadas.

Le he estado diciendo a la gente por años que se identifique con la tecnología en referencia. Me he dado cuenta de un gran número de trabajos que requieren estas habilidades en estos últimos años. Aún si usted no está usando este material en el futuro, estos programas tienen todas las herramientas para familiarizarlo con los conceptos que son transferibles a cualquier paquete relacionado con software comercial. El mayor reto que tuve para aprender estas habilidades y obtener trabajos relativamente buenos fue la práctica y un software con qué poder experimentar ( hace algunos años, cuando quería involucrarme en el diseño de base de datos para Web, obtener un sistema MS me habría costado sobre los 10,000 dólares, cuando aún era estudiante. Linux ya había aparecido. Todo era libre. Tenía todo el material. Tenía todos los lenguajes de programación, servidores web, material de base de datos y capacidades de trabajo en red. Así que aquí me tienen ).

La clave para ser un buen programador en el desarrollo de base de datos para web, es ser bueno en un lenguaje script, java-script, HTML, SQL genérico, Apache, y otros servidores de base de datos. Si usted aprende todas estas habilidades de Linux, lo suficiente de software, como Apache, PostgreSQL, Perl, Python y Zope serán portados a NT y otros Unices. Así usted podrá aprenderlos fácilmente en otras plataformas.

Espero que esto sea de gran ayuda para los principiantes y no hagan críticas negativas sobre mis comentarios!

Referencias

  1. apache.org
  2. zope.org
  3. php.net
  4. python.org
  5. perl.com
  6. postgresql.org
  7. mysql.com


Mark trabaja como un hombre de computadoras en The Computer Underground y también en ZING y también en GNUJobs.com (pronto).


Copyright © 2000, Mark Nielsen
Publicado en el número  57 de Linux Gazette, Septiembre 2000