pedroescudero.info Sobre programación, tecnología, etc

18feb/104

Instalar Oracle Express Edition con soporte desde PHP5 en Ubuntu/Debian

Para instalar Oracle Express Edition en Ubuntu o Debian, de manera que luego podamos atacarla desde nuestra aplicación web desarrollada en PHP5 seguiremos los siguientes pasos.

A) INSTALACIÓN Y CONFIGURACIÓN DE ORACLE XE

1.- Instalación dependencias
#apt-get install bc libaio1

2.- Instalación del paquete , descargarlo desde aquí
#cd /usr/src
#dpkg -i  oracle-xe-universal_10.2.0.1-1.0_i386.deb

3.-  configuración de parámetros
/etc/init.d/oracle-xe configure

Specify the HTTP port that will be used for Oracle Application Express [8080]: 8080
Specify a port that will be used for the database listener [1521]:1521
Ingresar el password para las cuentas de administración (SYS & SYSTEM) : 123456
Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]: y

4.- Configuración de variables de entorno

#vi /root/.bashrc

##Variables de servidor oracle xe
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID=XE
export PATH

5.- Pruebas de variables

#echo $ORACLE_HOME
#echo $ORACLE_SID

6.- Verificar variables de inicio de oracle

#cat $ORACLE_HOME/network/admin/tnsnames.ora
#mkdir /etc/oracle
#cp $ORACLE_HOME/network/admin/tnsnames.ora /etc/oracle

7.- verificar inicio correcto

# cd $ORACLE_HOME/bin
# tnsping XE

si sale :

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dapper)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
TNS-12545: Connect failed because target host or object does not exist

reiniciar servicio : /etc/init.d/oracle restart

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = mail)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
OK (10 msec)

entonces todo esta correcto.

8.-  conexión al servidor vía sqlplus como sys

#sqlplus sys as sysdba
Enter password: 123456

Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 – Production

SQL>

9.- Desbloquear usuario HR , para poder conectarnos

SQL> alter user HR account unlock;
User altered.

SQL> alter user HR identified by 654321;
User altered.

SQL> exit;

10.- Conectarse por sqlplus como usuario HR

#sqlplus HR/654321@XE

SQL*Plus: Release 11.1.0.6.0 – Production on Sat Nov 1 09:12:54 2008

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 – Production

SQL>
11.- Estamos conectados ahora Probamos  realizar una consulta a una tabla ya creada en la instalación.

SQL> select * from JOBS;

JOB_ID       JOB_TITLE                   MIN_SALARY MAX_SALARY
———- ———————————– ———- ———-
AD_PRES    President                    20000      40000
AD_VP       Administration Vice President        15000      30000
AD_ASST    Administration Assistant             3000    6000
FI_MGR       Finance Manager                 8200      16000
FI_ACCOUNT Accountant                     4200    9000
AC_MGR       Accounting Manager                 8200      16000
AC_ACCOUNT Public Accountant                 4200    9000
SA_MAN       Sales Manager                10000      20000
SA_REP       Sales Representative              6000      12000

Hasta aquí tenemos correcto el servidor ahora configuramos apache php para hacer consultas

ANEXOS

1.-Verificar si el servicio esta activo , Aveces no se porque el servicio no se inicia durante el startup , para eso podemos verificar si el servicio esta activo.

# cd $ORACLE_HOME/bin
# tnsping XE

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = mail)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
OK (10 msec)

B-1) INSTALACIÓN DEL SOPORTE PARA ORACLE EN PHP5

1.- Instalar dependencias
#apt-get install apache2.2-common libapache2-mod-php5 php5 php5-cli rpm libaio1

2.-Bajar los paquetes :

- oracle-instantclient-basic-11.1.0.1-1.i386.rpm
- oracle-instantclient-devel-11.1.0.1-1.i386.rpm
- oracle-instantclient-sqlplus-11.1.0.1-1.i386.rpm

de la siguiente direccion : http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html
3.-Instalar los paquetes
#rpm -ivh /root/oracle-instantclient-*
4.- Crear directorio para archivos de configuración
#mkdir /etc/oracle

5.- Copiar/verificar el archivo tnsnames.ora del servidor local/remoto dónde nos vamos a conectar y copiarlo a /etc/oracle/

###########################################
# tnsnames.ora Network Configuration File:

XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mail)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

################################################################

Donde ¨mail¨ es el nombre del servidor.

6.- Agregar variables de entorno
#vim /root/.bashrc

#Variables de cliente oracle xe
export TNS_ADMIN=/etc/oracle
export SQLPATH=/usr/lib/oracle/11.1.0.1/client/bin
export LD_LIBRARY_PATH=/usr/lib/oracle/11.1.0.1/client/lib/;$LD_LIBRARY_PATH
export PATH=$PATH:$SQLPATH

7.- Reiniciar la sesión de root para que los cambios en las variables de entorno tengan efecto.

8.- Comprobar conectividad con servidor  local/remoto

#sqlplus usuario@servidor

Dónde usuario es el nombre de usuario o esquema y servidor es uno de los definidos en el tnsnames.ora
Pedirá la contraseña y si todo va bien nos devolverá el prompt del servidor Oracle.

B-2) Generar e Instalar módulo OCI en PHP

1.- Instalar dependencias
#apt-get install build-essential php5-dev

2.- Si no está creado, creamos el directorio de fuentes
#mkdir -p /usr/local/src

3.- Descargamos las fuentes PECL del futuro módulo OCI:
#wget http://pecl.php.net/get/oci8-1.2.4.tgz

4.- Descomprimimos
#tar xzf oci8-1.2.4.tgz

5.- Entramos al directorio creado
#cd /usr/local/src/oci8-1.2.4

6.- Preparamos el módulo para que sea generado para PHP
#phpize

7.- Configuramos el módulo para la generación
#./configure –with-oci8=instantclient,/usr/lib/oracle/11.1.0.1/client/lib/

La ruta es dónde se encuentran los *.so que hemos instalado con el InstantClient

8.- Construcción e instalación
#make
#make install

9.- Editamos la configuración de PHP.

#vim /etc/php5/apache2/php.ini

Añadimos la línea:
extension=oci8.so

y repetimos lo mismo para el archivo /etc/php5/cli/php.ini

10.- Reiniciamos Apache
#/etc/init.d/apache2 restart

11.- crear phpinfo.php para verificar el modulo oci8
#vi /var/www/apache2-default/phpinfo.php

<?php

// Muestra toda la información, por omisión INFO_ALL
phpinfo();

// Mostrar sólo la información de módulos.
// phpinfo(8) produce el mismo resultado.
phpinfo(INFO_MODULES);

?>

12.- Generar consulta basica

#vi /var/www/apache2-default/consulta.php

<?php

$connection = ocilogon(“HR”,”654321″,”//192.168.1.180/XE”);
$query = “select * from JOBS”;
$statement = oci_parse ($connection, $query);
oci_execute ($statement);
$statement = oci_parse ($connection, $query);
oci_execute ($statement);
echo “JOD_ID|JOB_TITLE|MIN_SALARY|MAX_SALARY”;
while ($row = oci_fetch_array ($statement, OCI_BOTH)) {
echo “$row[0]|$row[1]|$row[2]|$row[3]“;
}
oci_close($connection);

?>

- Donde  ¨192.168.1.180¨ seria la ip del servidor o maquina de la implementacion
- Verficiamos la consulta  entrando a :  http://ipdelamaquina/apache2-default/consulta.php   , si nos genera la consulta entonces ya tenemos todo completo y podemos empezar a desarrollar nuestras aplicaciones

Vía: http://jroliva.wordpress.com

Etiquetado con: , , , , 4 Comentarios
26nov/090

Tutorial rápido de PHP

Publica hoy Zootropo en su blog MundoGeek un tutorial mas que recomendable de PHP, ideal para tener a mano cuando hemos pasado mucho tiempo sin tocar el lenguaje y no recordamos la sintaxis o la manera de hacer esto o aquello.

Ver Tutorial rápido de PHP (MundoGeek)

14sep/090

CodeIgniter

Code Igniter LogoCodeIgniter es un framework PHP que implementa el patrón de arquitectura de software MVC.

Algunas ventajas de usar CodeIgniter.

  • Deja pocas huellas, podríamos decir que apenas se siente.
  • Es ligero, tiene un buen rendimiento.
  • Gran compatibilidad con distintas versiones de PHP.
  • Prácticamente no requiere configuración.
  • No hay que ceñirse a reglas de programación restrictivas.
  • No es necesario aprender a usar un lenguaje de plantillas propio del framework.
  • Evita las solucioens complejas en favor de las sencillas.
  • Tiene una dicumentación clara y entendible.

CodeIgniter es un framework rápido de aprender y de utilizar. Mediante su uso, puedes crear portales PHP mucho más rápido de lo habitual y lo que es incluso mejor, adquiriendo buenos hábitos de programación, y realizando casi sin darte cuenta una aplicación fácilmente sostenble y escalable.

CodeIgniter puede descargarse desde aquí. Su documentación está disponible en inglés aquí.

Adicionalmente pongo a tu disposición un manual en español de CodeIgniter en PDF de una versión anterior, pero ideal para empezar a utilizarlo. Puedes descargarlo aquí. Por último, he habilitado un subdominio con la documentación de CodeIgniter en español y online. Al igual que el manual, es de una versión anterior, pero sigue siendo una referencia válida y de gran utilidad. Puedes acceder a la documentación de CodeIgniter en español y online a través del subdominio codeigniter.pedroescudero.info.

25ago/090

Prepararse para desarrollo web, selección de herramientas

Nos hemos decidido a crear una aplicación web, así que vamos a empezar por el principio, escogiendo las herramientas que vamos a necesitar.

Como vamos a desarrollar para entorno web, la aplicación funcionará sobre un explorador web y esto es lo primero que necesitamos. Para desarrollar usa siempre Firefox. ¿Por qué? Porque Firefox ofrece mejores herramientas para desarrollar y depurar que el resto de exploradores. Nunca uses para desarrollar Internet Explorer. El explorador de Microsoft cumple los estándares a medias, es habitual que tus desarrollos funcionen en todos los exploradores y cuando vayas a probarlos en Internet Explorer den fallos inexplicables debido a peculiaridades del explorador mal documentadas. Si puedes evitarlo, no programes para Internet Explorer, este explorador es una lacra para los desarrolladores y no adaptarse a él es la mejor manera de que se pongan las pilas y lo mejoren para que se adapte al mundo. Naturalmente, debido al gran número de usuarios de Windows y al desconocimiento, Internet Explorer sigue ocupando una cuota de mercado superior al 30%, por lo que en muchos desarrollos te verás obligado a tenerlo en cuenta. Ármate de paciencia.

Pero volviendo a Firefox, en este explorador tenemos varias herramientas imprescindibles. Primero tenemos la consola de JavaScript (Herramientas -> Consola de errores ó Ctrl+Mayús.+J) que viene con el explorador. Adicionalmente, como complementos tenemos varios muy útiles.

De los que yo uso habitualmente, por un lado tenemos Web Developer, herramienta imprescindible que nos permite controlar todo lo que está pasando en nuestra página. Por otro lado está Firebug, potente herramienta de depuración que nos permite hacer cambios en nuestro código al vuelo.

Una vez seleccionado el explorador, vamos con la herramienta de desarrollo propiamente dicha. Existen muchos entornos muy pesados, que hacen cantidad de cosas y te meten código como de la nada en tus aplicaciones web. En muchos casos el código no es óptimo y además son lentos. Cómo estamos aprendiendo, en mi opinión es mejor utilizar una herramienta que nos permita controlar absolutamente todo y en la que necesitemos saber exáctamente lo que estamos haciendo. Si usas Linux, puedes usar una herramienta del tipo Bluefish, que te facilita el trabajo pero no programa por tí. Me parece que existía un compilado de Bluefish para Windows, de todos modos en Windows hay una herramienta que todo programador debería tener a mano, Notepad++. Es el editor de código fuente mas potente y cómodo que conozco. Ante todo, si realmente quieres desarrollar aplicaciones web, no uses Dreamweaver o Frontpage, el mundo te lo agradecerá.

Por último, la parte mas importante del desarrollo web (y de todos los desarrollos) es la documentación. Sin ella estás perdido, así que aunque al principio te resulte complicada, te tendrás que ir acostumbrando a ella. Necesitamos toneladas de documentación para poder hacer exáctamente lo que queramos, pero no te agobies, no te pongas a leer documentación como si fuese novela, ve aprendiendo poco a poco según lo vayas necesitando.

Adjunto una relación de enlaces a documentación que pueden ser de utilidad:

Con esto hay para empezar. Si vés que falta algo o conoces alguna buena web con documentación para programación web, por favor, deja un comentario.