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

