Después de pelearme un buen rato he conseguido instalar una máquina virtual con APEX 3.1.2 de modo que sea totalmente accesible desde la máquina host, de modo que solamente con arrancar la máquina virtual ya tengo acceso a una instalación APEX sin ensuciar mi SO host.
Instalación
1) Instalación de VirtualBox
En mi caso particular, mi equipo Host también es un Ubuntu 8.04. Podéis instalaros la VirtualBox bajándoos el .deb de la página o bién añadiendo la siguiente línea en vuestro /etc/apt/sources.list:
deb http://download.virtualbox.org/virtualbox/debian hardy non-free
luego podemos instalar desde Synaptics nuestro VirtualBox 2.0.2 (solamente es necesario descargar los módulos genéricos).
2) Creación de la máquina Virtual en VirtualBox:
Yo os aconsejaría crear dos discos virtuales:
- 8GB -> Para Instalación de Ubuntu + APEX
- 1,5GB -> Memoria SWAP (no uséis menos de 1024MB porqué sinó no podréis instalar la Oracle XE)
A continuación realizar la instalación de Ubuntu en la máquina virtual.
3) Instalación de Oracle XE:
Nos bajamos la última versión de Oracle Express Edition 10g (XE) para Linux de www.oracle.com
Suponiendo que nos hemos bajado la versión oracle-xe_10.2.0.1-1.0_i386.deb, nos ubicamos en el directorio donde esté el fichero y ejecutamos:
$ sudo dkpg -i oracle-xe_10.2.0.1-1.0_i386.deb
Una vez termine, ejecutamos los pasos de configuración:
$ sudo /etc/init.d/oracle-xe configure
Yo he dejado todos los valores por defecto.
4) Instalación de APEX 3.1.2
Nos bajamos la última versión de APEX en http://apex.oracle.com y la descomprimimos en algún sitio.
Ahora será necesario ejecutar unos scripts desde el usuario SYS mediante SQLPLUS. Si nos fijamos, la instalación nos habrá creado un nuevo tipo de usuario de SO llamado Oracle. Yo he creado un nuevo usuario de SO asociado a oracle, que he llamado también oracle (con password: oracle).
En primer lugar debemos cambiar al usuario de SO administrador de Oracle:
Ahora debemos cargar las variables de entorno para conseguir un buen funcionamiento de la instalación de APEX. Para ello podemos ejecutar:
export TMP=/tmp
export TMPDIR=/tmp
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export PATH=/usr/bin:$ORACLE_HOME/opmn/bin:$ORACLE_HOME/bin:${PATH}
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
export ORACLE_SID=XE
export TNS_ADMIN=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin
y con esto ya tenemos las variables de entorno inicializadas (si no habéis tocado ningún parámetro debería funcionaros a la perfección, sino revisad los directorios).
Importante: Nos ubicamos en el directorio donde hayamos descomprimido el ZIP de instalación de APEX. Dentro de ese directorio deben haber los ficheros apexins.sql, apxxepwd.sql, etc.
Nos conectamos a sqlplus con modo sys:
$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production ON Thu Oct 9 18:56:14 2008
Copyright (c) 1982, 2005, Oracle. ALL rights reserved.
SQL> conn / AS sysdba
Connected.
Ejecutamos el primer script de instalación:
SQL> @apexins PASSWORD SYSAUX SYSAUX TEMP /i/
Nota: Cambiamos PASSWORD por el password que hayamos asignado en el paso 3
Si no se ha producido ningún error continuamos con el siguiente paso, que es cambiar el password del workspace internal:
Nos pedirá un password para posteriormente poder acceder al workspace: internal con usuario admin.
El siguiente paso hace un update de las imágenes:
SQL> @apxldimg.sql APEX_INSTALL
Nota: Cambiamos APEX_INSTALL por el directorio donde hayamos descomprimido el ZIP de instalación. Hay que poner la ruta completa.
5) Si todo ha ido bien, ya deberíamos poder acceder a nuestra nueva instalación de APEX escribiendo en un navegador la siguiente dirección:
http://localhost:8080/apex
Configuración para poder acceder remotamente
Ahora vamos a configurar nuestro entorno de modo que podamos acceder a nuestro entorno desde fuera de la máquina virtual (por ejemplo desde el SO Host).
1) Ejecutamos el siguiente comando desde sqlplus como usuario SYS (loguearnos como en el paso 4):
SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
PL/SQL procedure successfully completed.
Con esto permitimos conexiones remotas a APEX.
2) Ahora apagamos nuestra máquina virtual. Una vez completamente apagada, vamos a editar el XML asociado a nuestra máquina virtual para hacer un port forwarding de los puertos que queremos redirigir de nuestra máquina guest a nuestra máquina host. Normalmente el fichero xml asociado acostumbra a estar en nuestro home: /home/usuario/.VirtualBox/Machines/NOMBRE/fichero.xml
Abrimos el fichero y añadimos las siguientes lineas dentro del tag :
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/httpd/GuestPort" value="8080"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/httpd/HostPort" value="8080"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/oraclexe/Protocol" value="TCP"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/oraclexe/GuestPort" value="1521"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/oraclexe/HostPort" value="1521"/>
Nota: Esto también se puede hacer por medio del comando
VBoxManage setextradata …
Volvemos a encender nuestra máquina virtual.
Una vez encendida, podemos verificar que tenemos acceso si intentamos navegar desde nuestro SO Host a la dirección:
http://localhost:8080/apex
Espero que os sirva!!!
PD: Como recibo mucho spam, si no os contesto podéis enviarme un email a: josepcoves(arroba)gmail.com
Fuentes usadas:
http://www.oracle.com/technology/products/database/application_express/html/3.1_and_xe.html
http://download.oracle.com/docs/cd/B32472_01/doc/install.300/b32468/install.htm#CHDHIJGE
http://download-east.oracle.com/docs/cd/B25329_01/doc/admin.102/b25107/network.htm#BHCBCFBA
http://www.virtualbox.org/