Hay 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