Mirar abajo


40683907114Desarrollamos 5352128402ideas creativas para personas exitosas. El futuro se acerca5511513278.......esta aquí5508100298

Sábado, 19 de Mayo 2012

Segunda parte de la aplicacion distribuida en Ruby on Rails, Php, Cakephp

Domingo, 26 de Junio de 2011 17:45

Segunda parte de la aplicacion distribuida en Ruby on Rails, Php, Cakephp

por  Jose Heriberto Perez Magaña
Vota este articulo
(1 Voto)

Pues bien para continuar debemos de instalar el wampserver en las otras maquinas que van a compartir de forma local la base de datos, despues de esto tendremos que realizar algunas modificaciones para que la aplicacion se pueda comunicar con los otros servidores locales de la red local “LAN”, primero que nada para configurar una aplicacion para usar bases de datos remotas en una red local  necesitaremos configurar el wampserver para usarlo en red con tu aplicacion los errores que normalmente encontraras al tratar de conectarte a otro servidor sin realizar las configuraciones que a continuacion explico son las siguientes:


forbiden al tratar de acceder por ejemplo en lugar de localhost(127.0.0.1) a la ip “192.168.1.100” o  192.168.1.100/phpmyadmin tambien se nos mostrara el error de “forbiden” que no tienes acceso.

Entonces para quitar estos errores realizaremos unas configuraciones en los servidores wampserver y mas especifico en el archivo de apache httpd.conf el cual lo podremos encontrar al dar click en el menu inicio donde este nuestro icono de wampserver y luego en apache, httpd.conf y darle click para que se abra con nuestro bloc de notas.


Cambiar estas lineas:

#   onlineoffline tag - don't remove
   Order Deny,Allow
   Allow from 127.0.0.1


Por estas otras para poder acceder desde cualquier maquina que este en la red y no solo desde localhost sino desde la ip que tengamos asignada en nuestra maquina servidor

#   onlineoffline tag - don't remove
   Order Allow,Deny
   Allow from all
#   Allow from 127.0.0.1


Despues de esto ya podras accedere a tu sitio remoto desde la otra maquina que no tiene el wampserver pero si quieres utilizar las bases de datos de phpmyadmin remota en red necesitaras tambien configurar el alias para ello ve a C:\wamp\alias. y abre el archivo de phpmyadmin.conf and agrega las siguientes lineas ,que tambien lo puedes acceder desde el wampserver en la barra de inicio, wampserver,apache, alias directories,phpmyadmin edit alias y tienes que cambiar las siguientes lineas:


Cambiar esto:


<Directory "c:/wamp/apps/phpmyadmin3.2.0.1/">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride all
       Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Directory>


Por estas otras lineas:


<Directory "c:/wamp/apps/phpmyadmin3.2.0.1/">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride all
       Order Allow,Deny
    Allow from all
    Allow from 127.0.0.1
</Directory>


pues bien ahora que tenemos todo configurado para poder configurar nuestros script de php o de cakephp o de Ruby on Rails desde su configuracion de donde especificamos los datos de acceso al servidor de base de dato mysql y se conecten a la  base de datos de la otra computadora tenemos que crearle su propia cuenta de usuario como la siguiente todo esto desde el phpmyadmin de la maquina remota creamos la cuenta de usuario en privilegios donde le especificamos que le vamos a dar permiso de que otro servidor remoto en la red se conectara a su base de dato por ejemplo podemos crear un usuario con las siguientes especificaciones


usuario: ip-del-servidor-remoto-local-que-se-conectara-a-la-base-de-datos
host: ip-del-servidor-remoto-local-que-se-conectara-a-la-base-de-datos
contraseña: una contraseña que quieras o igual lo puedes dejar en vacio
volver a escribir. la contra si escogiste una


Y puedes acceder solo a una base de datos o especificarle cuales nomas.


Ojo: cuidado con el firewall y los antivirus desactivar todo por que si no te va a marcar que no te puedes conectar a la base de datos o que estan mal lo datos de configuracion aunque ya lo hayas configurado todo bien.


Pues bien despues de esto solo ocupamos en nuestro archivo de configuracion de base de datos especificar la informacion de la cuenta de usuario que creamos y ya estaremos utilizando la base de datos remota y si quisieramos utilizar una tablas de un servidor local remoto y otras del servidor local pues simplemente creamos diferentes archivos de configuracion y dependiendo del catalogo o de la base de datos y la tabla unicamente mandamos llamar el archivo respectivo asi modificara esta tabla y las que tu quieras a continuacion presento algunos ejemplos de archivos de configuracion para Ruby on Rails y php.


Bueno suponiendo que tengo tres maquinas en mi red local y que dos son servidores corriendo con el wampserver y una sera la cliente entonces estas serian mis configuraciones:


192.168.1.1 - servidor 1
192.168.1.2 - servidor 2
192.168.1.3 - supongamos que no tiene wampserver y sera el cliente


Entonces si por ejemplo tuvieramos dos catalogos de clientes y facturas y un catalogo o mas bien sus datos los quiero guardar de la siguiente manera:


catalogo “clientes” esta en el servidor 1 “192.168.1.1” o sea la tabla clientes.
catalogo “facturas” esta en el servidor 2 “192.168.1.2” o sea la tabla facturas.


Y todos los archivos de mi aplicacion supongamos los colocare en el webroot de wampserver del servidor 1, con lo cual el cliente “192.168.1.3” cuando quiera entrar a modificar o agrergar nuevos datos a su aplicacion web distribuida en php, Ruby on Rails lo hara colocando en el navegador la direccion “192.168.1.1:3000/mi-aplicacion-ruby” para el caso de ruby on Rails y para el caso de si fuera una aplicacion en php 192.168.1.1/mi-aplicacion-php, con lo cual logicamente se guardaran los datos en los dos servidores en sus respectivas tablas, pues bien tambien debemos de crear para la configuracion que a continuacion describo yo cree una base de datos en el servidor 1 y servidor 2 desde phpmyadmin y le puse a ambas “basedatosdistribuida” , pues bien despues de toda esta explicacion escribo mis configuraciones en caso de que sea php o Ruby on Rails en nuestra aplicacion web distribuida.


Configuraciones para aplicación web distribuida php


Script de configuracion php o muchas veces llamado conexion.php jejeje


Para el servidor 1 “192.168.1.1” que es donde se encuentran todos los archivos de nuestra aplicacion web distribuida en php.


conexion1.php (este utiliza la base de datos local de su tabla clientes)


$db_host="192.168.1.1"; // Host al que conectar, o también podemos poner localhost
$db_nombre="basedatosdistribuida"; // Nombre de la Base de Datos
$db_user="root"; // Nombre del usuario con permisos suficientes
$db_pass="password"; // Contraseña de dicho usuario


conexion2.php (Esta utiliza la base de datos del servidor 2, tabla facturas)


$db_host="192.168.1.2"; // Host al que conectar, habitualmente es el ‘localhost’
$db_nombre="basedatosdistribuida"; // Nombre de la Base de Datos que se desea utilizar
$db_user="192.168.1.1"; // Nombre del usuario que creamos con su ip para hacer referencia al servidor que se conectara a esta base de datos del servidor 1 al servidor 2
$db_pass="password"; // Contraseña de dicho usuario.


Para el caso de Ruby on Rails la configuracion servia la siguiente, tambien creariamos dos archivos de configuracion de base de datos.yml en mi caso:


database.yml

development:
 adapter: jdbcmysql
 encoding: utf8
 reconnect: false
 database: basededatosdistribuidas_development
 pool: 5
 username: root
 password: su-contraseña-creada
 host: 192.168.1.1 #tambien puedes poner localhost


# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
 adapter: jdbcmysql
 encoding: utf8
 reconnect: false
 database: basededatosdistribuidas_test
 pool: 5
 username: root
 password: su-contraseña-creada
  host: 192.168.1.1 #tambien puedes poner localhost


production:
 adapter: jdbcmysql
 encoding: utf8
 reconnect: false
 database:  basededatosdistribuidas_production
 pool: 5
 username: root
 password: su-contraseña-creada
  host: 192.168.1.1 #tambien puedes poner localhost


database_remota.yml

development:
 adapter: jdbcmysql
 encoding: utf8
 reconnect: false
 database: basededatosdistribuidas_development
 pool: 5
 username: 192.168.1.1
 password: su-contraseña-creada
 host: 192.168.1.2 #tambien puedes poner localhost


# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
 adapter: jdbcmysql
 encoding: utf8
 reconnect: false
 database: basededatosdistribuidas_test
 pool: 5
 username: 192.168.1.1
 password: su-contraseña-creada
  host: 192.168.1.2 #tambien puedes poner localhost


production:
 adapter: jdbcmysql
 encoding: utf8
 reconnect: false
 database:  basededatosdistribuidas_production
 pool: 5
 username: 192.168.1.1
 password: su-contraseña-creada
 host: 192.168.1.2 #tambien puedes poner localhost


Para poder utilizar los dos archivo en el caso de php solo necesitamos hacer el include de nuestra conexion respectiva al momento de dar de alta, editar, listar o borrar y para el caso de ruby on Rails necesitamos,


En nuestro archivo controlador padre “application_controller.rb”, ubicado en la carpeta de todos los controladores colocarmos el siguiente codigo o funcion que llamaremos despues desde el modelo en el que quieramos usar otra base de datos,


#mediante este modulo podemos especificar que nuestros modelos usaran otra base
#de datos asi como otro servidor en el que esta alojada
module ExternalDatabase
 def self.included(base)
    config = YAML.load(File.open('config/database_remota.yml'))

    if config and ENV['RAILS_ENV']
     base.establish_connection(config[ENV['RAILS_ENV']])
    else
     raise 'External Database not configured'
    end
 end
end

y desde nuestro modelo de facturas que se guardar en el servidor 2 entonces en el modelo incluiriamos esta funcion para que cuando uses ese catalogo lo guarde en otra base de datos y en otro servidor el codigo es el siguiente:


#utilizado para especificar que se utilizara otro servidor y otra base de datos
 #en en el cual se especifican los datos de conexion
 include ExternalDatabase


Y listo ahora si accedemos a nuestra aplicacion desde cualquier computadora que se encuentre en la red local escribiendo en nuestro navegador  la direccion 192.168.1.1/mi-aplicacion-php o tambien 192.168.1.1:3000/miaplicacion-rails para Ruby on Rails cada vez que demos de alta o un cliente o una factura podremos observar que se guarda en servidores diferentes, con lo cual fragmentamos o distribuimos nuestra aplicacion, si quieres ademas hacer replicacion de datos muy pronto escribire una guia similar haciendo referencia la replicacion de datos ademas de ser una aplicacion web distribuida php, Ruby on Rails

Regresar a la Primera parte del tutorial de como crear una aplicacion distribuida en Ruby on Rails, cakephp, php y otros lenguajes web que usen base de datos mysql

Ultima modificacion el Jueves, 28 de Julio de 2011 18:26
Jose Heriberto Perez Magaña

Jose Heriberto Perez Magaña

1 Suscritos

Suscripción a Blog

Recibe notificaciones por correo electrónico de nuevos articulos agregados.
0 Suscritos

Suscripción a comentarios

Recibe notificaciones a tu correo electronico de nuevos comentarios Agregados.

Dejar comentario

Asegúrese de introducir la información (*) requiere que se indique. Básicos del código HTML es permitido.
Esta área es solo para comentarios si deseas cotizar o contratar haz clic aquí.

Más Información...

logo

Bienvenido para nosotros es un placer tenerte aquí te invitamos a conocer nuestros diferentes productos y servicios.

Estamos convencidos que la mejor recomendación con nuestros clientes es la calidad de nuestro trabajo pero queriendo llevar más allá nuestro servicio ofrecemos precios muy competitivos.