Instalar Magento en localhost partiendo de una copia del servidor

Magento aplicacion opensourse para eCommerceHay muchas formas de instalar magento en un localhost, las tipicas son las que nos muestran en la documentacion de magento, pero algunas veces lo que necesitamos es crear una version de pruebas de nuestra tienda para usarla en local y hacerle cosas sucias…. muy sucias.

En esos casos mas que una instalacion limpia necesitamos un clon de lo que esta en nuestro servidor. No voy a entrar en detalles de como instalar la infraestructura (apache, mysql, php, zend, etc) ni sobre que sistema hacerlo, mi recomendacion es que mientras se parezca el entorno de pruebas al entorno de produccion habra menos sorpresas, pero aqui parto de que ya tenemos funcionando y bien configurados al menos Apache con todo lo que necesitamos, mysql, php con todo lo que necesitamos, phpmyadmin y acceso como administrador para poder copiar, reiniciar servicios, etc.

Primero lo primero, tenemos que recoger de nuestro servidor que queremos clonar lo siguiente:

  • backup de nuestro magento (todo el directorio de instalacion completito preferiblemente con sus permisos)
  • dump de la base de datos de magento
  • los datos de instalacion de magento: usuario de la BD, clave, usuario administrativo, clave, etc (esto se puede extraer de los archivos de configuracion, pero siempre sera mas sencillo si lo tenemos todo a mano)
  • esto lo buscamos en nuestro pc: las ubicaciones de nuestros archivos de configuracion local de apache para hacer las modificaciones pertinentes

vale, ahora al tajo:

Yo mantengo una estructura de directorio para todas las aplicaciones de mi servidor local, no es obligatorio, pero es recomendable, asi que lo primero es escoger el directorio para instalar las aplicaciones (que se encuentre del acceso publico por favor, nada del clasico htdocs o www) y alli creas cuatro directorios:

  • config: para el archivo de configuracion de apache
  • mysql: para los dumps de la base de datos
  • htdocs: para los archivos publicos de la aplicacion
  • scripts: para los scripts administrativos (aunque en este post no lo voy a tratar)

Lo siguiente es descomprimir el backup de nuestro magento en el directorio htdocs.

Ahora vamos a preparar la base datos con la informacion de configuracion del servidor que deveriamos tener a mano… Que no la tienes, pues no pasa nada dentro del directorio de magento busca el archivo /app/etc/local.xml
alli encontraras entre otra informacion algo como esto:

 
<connection>
   <host>localhost</host>
   <username>DB_USUER</username>
   <password>DB_PASSWORD</password>
   <dbname>DB_NAME</dbname>
   <active>1</active>
</connection>

Vale ahora que si o si ya tienes la informacion, crea una base de datos mysql llamada como DB_NAME, asignale un usuario DB_USER con password DB_PASSWORD, a ese usuario dale permisos para lectura, escritura, etc y asegurate que pueda acceder desde localhost.

Para asegurarnos que puede acceder desde localhost tratamos de logearnos a mysql con ese usuario:

ejemplo para linux:

sudo mysql -uDB_USER -pDB_PASSWORD

en windows, no se usaria el sudo, y quizas en lugar del comando mysql deba usarse mysqld.exe, segun como se haya instalado mysql en ese equipo.

Si funciona pasamos a configurar apache, sino… de vuelta al phpmyadmin o lo que uses para modificar tus usuarios de mysql y revisa que le diste permiso para acceder desde localhost no basta con usar el codin %, asegurate de que hay un usuario DB_USER@localhost

Configurar apache: primero vamos a crear un archivo en el directorio config, puede tener cualquier nombre que termine en .conf, yo suelo usar el nombre del dominio que estamos cloando, pero para gustos… en este ejemplo lo llamare magento. luego entonces creamos /config/magento.conf y le metemos dentro el siguiente codigo

Alias /magento/ "/RUTA_A_DIRECTORIO_DE_APLICACIONES/htdocs/"
Alias /magento "/RUTA_A_DIRECTORIO_DE_APLICACIONES/htdocs"
<Directory "/RUTA_A_DIRECTORIO_DE_APLICACIONES/htdocs">
    Options Indexes MultiViews
# EL ALLOWOVERRIDE ES IMPORTANTE PARA QUE FUNCIONE MODREWRITE
    AllowOverride All  
    Order allow,deny
    Allow from all
</Directory>

Aqui hay un par de detalles importantes: AllowOverride All para poder tener activo el mod_rewrite que usara magento. La ruta al directorio de aplicaciones sea la correcta para el sistema operativo con el que trabajas. Y finalmente el Alias es el nombre con lo convocaras desde el navegador, puedes cambiarlo.

Recuerdan que habia que tener claro donde estan los archivos de configuracion de apache? vale pues les toca el turno. Nos buscamos el archivo de configuracion principal de apache, en cada caso puede variar un poco, pero en el mio son tres: /etc/apache2/apache2.conf donde esta la configuracion principal, para mos modulos activos tengo archivos de configuracion en la carpeta /etc/apache2/mods_enabled y /etc/apache2/httpd.conf donde esta la informacion de los sitios de usuario, etc. cada cual tendra que ver cual le toca segun que y como hizo sus instalaciones.

pues bien hay que asegurarse que en algun lugar de la configuracion se carga el modulo rewrite
en Linux debe aparecer

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

en windows seria

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.dll

para forma menos complicada de hacerlo, abro el achivo /etc/apache2/httpd.conf y añado al final estas dos lineas:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Include "/RUTA_A_DIRECTORIO_DE_APLICACIONES/config/magento.conf"

Despues reiniciamos apache y aqui viene el truco, si no se quejo es que todo va bien. Si el log nos muestra un error o apache no arranca es porque o bien el modulo se cargo dos veces, no esta instalado asi que borramos la linea del LoadModule si se sigue quejando y la ruta al archivo magento.conf es correcta, es porque el modulo rewrite no esta instalado. instalalo

Bueno una vez que apache a sido reconfigurado y reiniciado, toca retocar el archivo .htaccess en el directorio htdocs donde vaciamos nuestro backup. en /htdocs/.htaccess buscamos la siguientes lineas

############################################
## you can put here your magento root folder
## path relative to web root

    RewriteBase /index.php/

y cambiamos la base de reescritura para que funcione con el Alias que escogimos, magento en nuestro ejemplo. quedaria asi:

    RewriteBase /magento/index.php/

es importante no comerse el / del final.

Finalmente nos aseguramos que los directorios clasicos tienen permisos de lectura y escritura:

  • htdocs/var/.htaccess
  • htdocs/magento/app/etc
  • htdocs/magento/var
  • htdocs/magento/media

Si queremos tener acceso a magento connect para poder probar modulos y otras cosas bellas, entonces tendremos que darles permisos de lectura, escritura y ejecucion a todo htdocs… TODO, es en serio sino no va a funcionar. Yo no lo tengo funcionando porque tengo ya instalados los modulos que necesito y prefiero no tener discrepancias entre los permisos de mi servidor y mi ambiente de pruebas, pero de nuevo eso va al gusto del consumidor.

Ahora toca la parte mas importante de todo proceso: elevamos nuestras plegarias los demonios de la maquina, reiniciamos apache por ultima vez y finalmente escribimos en el browser: http://localhost/magento.

Si todo esta correcto deberiamos ver un clon de nuestra tienda corriendo en local, quiere decir que nuestras plegarias fueron escuchadas, por lo que sacrificamos un tiristor en nombre de los dioses. De lo contrario quiere decir que hemos incurrido en la ira de alguno de los demonios de la maquina y no tendremos mas remedio que llevar nuestros ruegos ante el altar del gran dios.

The post is brought to you by lekhonee v0.7

Leave a Reply

Your email address will not be published. Required fields are marked *

Comments

3 responses to “Instalar Magento en localhost partiendo de una copia del servidor”

  1. Rulfo Avatar
    Rulfo

    Hola, Kilior:

    Estoy tratando de clonar mi tienda magento en localhost siguiendo esta guía y me da errores. Qusiera preguntarte algo pero como este post es tan antiguo no sé si estás disponible. Si es así por favor responde y te explico mi problema.

    Gracias de antemano y saludos cordiales.

  2. Kilior Avatar
    Kilior

    Supongo que a dia de hoy lo habras solucionado, pero yo usaria el archivo de host de tu maquina para hacer 127.0.0.1 resolviera el dominio externo.

  3. Jose Ramon Avatar

    Que tal,
    Ando trabajando en un proyecto de una empresa de desarrollo web en donde estan empezando a usar el magento como herramienta, como el host en el que estala pagina sobre la cual se esta trabajando tiene un limite de memoria de 32 MB empezamos a tener problemas con el magento con que no contaba con suficiente memoria. Entonces usando xampp intente clonarlo siguiendo tu guía, pero me surge un problema, cuando le pongo al navegador localhost/Finaysexy/(que es la carpeta donde esta el respaldo del sitio en mi maquina) me redirige al sitio que esta en la web y no al que esta en mi compu. Alguna idea de donde puede estar el problema?
    Saludos y gracias de antemano