El amigo ZiTaL ha escrito un how to detallado de como poder utilizar conexiones oracle en debian en los desarrollos en PHP el cual “fusilo”

Muy importante: Antes de empezar a instalar tendremos que tener como mínimo 1024 MB de SWAP (área de intercambio) libre, por lo que aconsejo que tengas como mínimo 1,5 GB de SWAP (área de intercambio).

PRE-INSTALACIÓN: Necesitamos el paquete libaio1.

apt-get install libaio1

Para empezar tenemos que conseguir los siguientes RPM’s de la página de Oracle:

Oracle instantclient basic
Oracle instantclient devel
Oracle instantclient sqlplus

Que los podemos descargar de aquí:

http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html

Si quereis los he pasado a deb con alien y los podeis descargar aquí:

http://zital.no-ip.org/debian/oracle/

Y descargamos los ficheros.

Si no os fiais de mi, pues simplemete habrá que pasarlos de rpm a deb con alien:

apt-get install alien
alien oracle-instantclient-basic_11.1.0.1-2_i386.rpm
alien oracle-instantclient-devel_11.1.0.1-2_i386.rpm
alien oracle-instantclient-sqlplus_11.1.0.1-2_i386.rpm

y ya tendremos los deb correspondientes.

los instalamos:

dpkg -i oracle-instantclient-basic_11.1.0.1-2_i386.deb
dpkg -i oracle-instantclient-devel_11.1.0.1-2_i386.deb
dpkg -i oracle-instantclient-sqlplus_11.1.0.1-2_i386.deb

Ahora creamos la carpeta /etc/oracle:

mkdir /etc/oracle

Y crearemos dentro de esta carpeta el archivo tnsnames.ora

nano /etc/oracle/tnsnames.ora

Y tendremos que crear un fichero del estilo:

NOMBRE_MAQUINA.DOMINIO.COM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
...

Cambiar NOMBRE_MAQUINA, DOMINIO.COM, HOST y PORT por sus respectivos valores.

Según cuantos servidores Oracle tengamos ;)

Si no sabeis rellenar este fichero, CREO que lo podremos encontrar en el servidor donde este alojado el servidor de base de datos de Oracle.

Ahora tendremos que editar el .bashrc del root y le añadiremos las siguientes lineas:

nano /root/.bashrc
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


Para que los cambios del .bashrc surjan efecto tendremos que volvernos a logear.

Ya hemos terminado de instalar el cliente de Oracle.

Instalacion de Apache2.2 con PHP5:

Si ya lo tienes instalado omite este paso ;)

apt-get install apache2.2-common libapache2-mod-php5 php5

Instalacion del oci8 para php:

apt-get install php-pear php5-dev
pecl install oci8

Al instalar el oci8 nos aparecera un prompt del tipo:

1-1, 'all', 'abort', or Enter to continue:

Pulsamos 1 y ENTER

y escribimos lo siquiente en el prompt:

shared,instantclient,/usr/lib/oracle/11.1.0.1/client/lib/

y pulsamos ENTER para confirmarlo y otra vez ENTER para que empiece la instalación

el sistema empezará a compilar el módulo y si todo ha ido bien nos pondrá algo como:

Build process completed successfully
Installing '/usr/lib/php5/20060613+lfs/oci8.so'
install ok: channel://pecl.php.net/oci8-1.2.5
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini

solamente nos quedará añadir las correspondientes lineas en el php.ini:

echo extension=oci8.so >> /etc/php5/apache2/php.ini

y reiniciar el apache:

/etc/init.d/apache2 reload

Espero que os sirva de ayuda ;)

Fuente original: esdebian.org

Leer entradas relacionadas:

La puesta en marcha de un servicio web de alto rendimiento no nace de la noche a la mañana. Es un trabajo constante en el que tienen que ir de la mano la cordinación de más de un departamento. El departamento de desarrollo tiene que preveer el crecimiento haciendo escalable el desarrollo de la aplicación coordinando con las necesidades y/o requisitos del departamento de sistemas.

Un papel fundamental para su crecimiento es la disponibilidad y velocidad del servicio. Aquí es donde se tiene que analizar como vamos a hospedar la web.

En cuanto al desarrollo hay que preveer la escabilidad técnica por parte del equipo de sistemas para el correcto funcionamiento con tráfico elevado.

El análisis de la base de datos es un papel muy muy pero muy importante en todo esto. Una vez completado el esquema de la BD es importante el definir que tablas tendrán más escritura para poder, en un mañana próspero y posible la separación de BD’s con tablas diferentes en caso de que así lo requiera el proyecto. No obstante, MySQL puede dar mucho juego. Desde el montar un cluster de BD a crear BD’s con replicación o separar las tablas de la BD en diferentes BD con la desventaja que ello podría acarrear en un futuro.

Ahora es cuando nos sentamos a pensar con que tecnología vamos a trabajar. Exceptuando los servicios de Microsoft no conozco ningún sitio web de alto rendimiento que esté funcionando con ISS por lo que por el momento vamos a comenzar con tecnologías libres.

Sistema Operativo: Debian Estable
Servidor Web: Apache 2
Base de datos: MySQL 5.0
Código: PHP 5.1

Leer entradas relacionadas:

La utilidad “ab” (Apache Benchmark) sirve para hacer pruebas de carga a un servidor apache.

Por ejemplo 100 consultas, con una concurrencia de 5 usuarios a la vez.


ab -n100 -c5 http://www.dominio.com/

No olvidar el “/” final en el URL

Probar con diferentes niveles de concurrencia. Y no olvidar ver las opciones con ab –info pues es batante flexible.

Usage: ab [options] [http://]hostname[:port]/path
Options are:
    -n requests     Number of requests to perform
    -c concurrency  Number of multiple requests to make
    -t timelimit    Seconds to max. wait for responses
    -p postfile     File containing data to POST
    -T content-type Content-type header for POSTing
    -v verbosity    How much troubleshooting info to print
    -w              Print out results in HTML tables
    -i              Use HEAD instead of GET
    -x attributes   String to insert as table attributes
    -y attributes   String to insert as tr attributes
    -z attributes   String to insert as td or th attributes
    -C attribute    Add cookie, eg. 'Apache=1234. (repeatable)
    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
                    Inserted after all normal header lines. (repeatable)
    -A attribute    Add Basic WWW Authentication, the attributes
                    are a colon separated username and password.
    -P attribute    Add Basic Proxy Authentication, the attributes
                    are a colon separated username and password.
    -X proxy:port   Proxyserver and port number to use
    -V              Print version number and exit
    -k              Use HTTP KeepAlive feature
    -d              Do not show percentiles served table.
    -S              Do not show confidence estimators and warnings.
    -g filename     Output collected data to gnuplot format file.
    -e filename     Output CSV file with percentages served
    -h              Display usage information (this message)

Leer entradas relacionadas:

Podeis leer información sobre lo que es un ataque de denegación de servicio (DOS) en Wikipedia.

Para que un Servidor Web deje de responder a tiempo enviándole miles de peticiones simultáneas puede llegar a provocar el mal funcionamiento del servicio e incluso el cuelgue del mismo. Una configuración descuidada o consultas creadas de manera inadecuada por el programador de la Web puede hacer que al recibir un ataque de estas características la Web deje de funcionar.

Por eso es recomendable que aunque la Web que se programe sea ligera de contenido que la optimización sea desde el principio del desarrollo. Así que no descuides tus programas por tiempo y/o sencillez aparente.

Leer entradas relacionadas:

Si queremos tener subdominios dinámicos en nuestro sitio web, solo tendremos que crear esta sencilla regla de rewrite.

RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(.+)\.dominio\.com
RewriteRule .* /index.php?s=%1 [L]

De esta manera si recibimos esto: http://usuario.dominio.com la regla lo que ejecuta es http://www.dominio.com/index.php?s=usuario

Obviamente tendremos que tener el apache configurado con el mod_rewrite.

Leer entradas relacionadas:


© 2007 Pensando en Red | iKon Wordpress Theme | Powered by Wordpress