Monthly ArchiveFebruary 2009
DB & Oracle Fernando José on 08 Feb 2009
ApEx, OracleXe en Servidor Dedicado ( Desarrollo Oracle Económico?)
Versión — 0001
Estaba buscando una forma económica de desarrollar con Oracle, probé con Amazon Web Services (AWS) pero salía la cuenta muy alta ( alrededor de 100 USD mes ). Ahora encontré un servidor dedicado por 20 EUR al mes ( económico ) en la gama baja de ovh.es, completamos el cuadro con Oracle XE y Apex.
Limitaciones: La base de datos XE está limitada a un procesador y 4GB que es más que suficiente para una aplicación orientada a una PYME. El servidor de entrada de ovh.es es un Celeron con 1GB en RAM, nuevamente suficiente para una PYME.
Resumen: Contratamos un servidor en Kemsirve con Ubuntu ( gama baja de ovh.es ), instalamos Oracle XE para Ubuntu( Base de datos ), y luego instalamos Oracle ApEx ( Entorno RAD para Oracle ).
Tutorial:
Después de contratar un servidor en Kemsirve, llegará un mail con instrucciones para conectarse como root al servidor contratado. Para conectarse al servidor se puede utilizar putty si se está en windows o ssh directamente si se está en un servidor linux. Una vez conectado como root es bueno configurar unas pocas reglas de iptables ya que el servidor Ubunto no tendrá un muro de fuego por defecto, especialmente para no exponer la base de datos directamente al internet ( muy mala idea ).
iptables -A INPUT -i eth0 -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –dport 8080 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
iptables -A INPUT -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -I INPUT 5 -m limit –limit 5/min -j LOG –log-prefix “iptables denied: ” –log-level 7
iptables -A INPUT -i eth0 -j DROP
Las anteriores son reglas que permiten el acceso a los puertos 22,80 y 8080 (ssh, 80 y 8080) , a hacer ping y bloquean todo el resto del tráfico.
Una vez que esto está listo se puede instalar Oracle XE, como root editamos el archivo /etc/apt/sources.list ( se puede usar el comando nano si no se sabe usar en vi ) y agregamos esto al final:
#oracle repos deb http://oss.oracle.com/debian unstable main non-free
Esto incluye el repositorio de Oracle en la lista de aquellos que se puede utilizar para instalar paquetes. Luego instalamos el Oracle XE con los siguientes comandos como root ( el servidor de Kemsirve usar root, si es un Ubuntu se puede usar el comando sudo).
#>wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
#>apt-get update
#>apt-get install oracle-xe
Después de unos minutos está instalado el software pero no tenemos la base todavia, para instalar y configurar la base como root ponermos el comando:
#>/etc/init.d/oracle-xe configure
Durante el procesos de configuración se nos solicitará la clave para los usuarios administradores de la base SYS y SYSTEM ( recordarla! ), luego nos preguntará si queremos iniciar el servicio de la base de datos y listener cuando el servidor se arranque. El proceso crear la una base de datos, configura el listener y establece los archivos de necesarios para iniciar los servicios ( ya se que no hay servicios en los debian!).
Oracle XE ya viene con una versión de ApEx pero es una versión anterior para actualizarla debemos descargarla de la red de tecnología de oracle (otn.oracle.com) y tener una cuenta activa, el registro es gratuito pero es un paso indispensable para continuar. Una vez que se tenga la cuenta podemos proceder con la descarga desde el servidor utilizando lynx ( recurso obtenido de la página web del Pythian Group ), asi como oracle:
#>su – oracle – para pasar a ser el usuario oracle
oracle> cd — para regresar al home de oracle
~oracle> rm .lynx_cookies — en caso de existir este archivo
~oracle> vi lynx.cfg –se puede utilizar nano
Añadimos las siguiente líneas archivo al editarlo
SET_COOKIES:TRUE
PERSISTENT_COOKIES:TRUE
ACCEPT_ALL_COOKIES:TRUE
COOKIE_FILE:~/.lynx_cookies
INCLUDE:/etc/lynx.cfg
Luego llamamos a lynx ( navegador web en consola (que locura!)).
~oracle> lynx -cfg=./lynx.cfg http://download.oracle.com/otn/java/appexpress/apex_3.1.2.zip
Se nos presentará una pantalla para introducir el usuario y contraseña de la red tecnológica de oracle, luego aplastamos botón derecho o intro para descargar el archivo en el mismo directorio en el cual llamamos a la aplicación. Tomá unos pocos minutos es una descarga de alrededor de 90MB.
El instalador de Oracle para debian y todos sus primos está bien, sin embargo no declara las variables de entorno para poder usar la base de datos XE, es por ello que creamos como oracle ( ojo seguimos como oracle ) el archivo .bash_profile.
~oracle> vi .bash profile– en caso de existir este archivo
Agregamos estas líneas:
#!/bin/bash
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_HOME
ORACLE_SID=XE
export ORACLE_SID
PATH=$PATH:$ORACLE_HOME/bin
export PATH
Luego cargamos estas variables de entorno que nos permitirán usar el software de la base de datos.
~oracle> . .bash_profile
–para cargar el perfil en la sesión actual, no necesario si se realizan otras conexiones.
~oracle> env | grep ORACLE
–para valirdar que el ORACLE_HOME y ORACLE_SID esten presentes
~oracle> env | grep PATH
–para valirdar que el PATH apunte a ORACLE_HOME/bin
Una vez establecidas estas variables se debe descomprimir el software que descargamos en algún lugar, yo lo pongo junto a los binarios de la base:
~oracle> cd –para regresar al home de oracle
>>oracle>mv apex_3.1.2.zip ./app/oracle/product/
>>oracle>cd app/oracle/product/
>>oracle>unzip apex_3.1.2.zip
esto crea un directorio que se llama “apex”.
>>oracle>cd apex
>>oracle>sqplus sys@xe as sysdba – para ingresar a la base como sys
—> ingresamos el password
SQL> @apexins SYSAUX SYSAUX TEMP /i/ –este comando instala apex
Después de unos 30 minutos el proceso debe terminar sin errores, inmediatamente sale al sistema para debemos configurar todavia la cuenta de administrador y el puerto del ApEx, para ello como oracle:
~oracle>sqplus sys@xe as sysdba
– para ingresar a la base como sys
SQL>@apxchpwd
– para cambiar la password del usuario “admin” de apex
SQL>@apex_epg_config /usr/lib/oracle/xe/app/oracle/product
– para configurar el plsql gateway (la web)
SQL>ALTER USER ANONYMOUS ACCOUNT UNLOCK;
–desbloquea el usuario anónimo (para la web)
SQL>@apxldimg.sql /usr/lib/oracle/xe/app/oracle/product
–para actualizar la imágenes de ApEx
SQL> SELECT DBMS_XDB.GETHTTPPORT FROM DUAL;
–para validar en que puerto está configurado el gateway ( tiene que ser 8080).
SQL>EXEC DBMS_XDB.SETHTTPPORT(8080);
–para establecer el puerto (en caso de que no sea correcto).
Todos estos pasos se encuentran en la guía de instalación de Oracle ApEx aunque un poco más dispersos. Para ingresar a apex ponemos la dirección del servidor http://miservidor:8080/apex , para ingresar a la consola de administraciónhttp://miservidor:8080/apex/apex_admin.
Ahora bien con esto termino la versión 00001 de esta guía, para poder realizar una aplicación se ingresa a la consola con administrador se crea un workspace de desarrrollo se hace logout y se ingresa con el usuario de desarrollo y el nombre del workspace ( hoy ya me cansé pongo pantallas de eso luego).
Como podrá intuir cualquier paranoico ( yo soy uno ) esta configuración no es extremadamente segura ( depende de que tan seguro sea el oracle ), se puede utilizar un servidor web para redireccionar la información de ApEx eso también espero descubrir como.
Finalmente el producto no está completo sin poder generar PDFs para descargar documentos imprimibles, sé que eso se puede realizar redireccionando datos a un Tomcat y utilizando unas cuantos servlets, ya que la solución de Oracle para ello es de pago, eso también espero adjuntarlo a este tutorial.
Espero que sea de utilidad.
Slds
FJA
