Magento es un software hecho en PHP para gestión integral de e-commerce. [Link a wikipedia]. Existen una versión comercial y una versión open, llamada Community Edition, y es esta última con la que vamos a experimentar.
Hay miles de guías por Internet para instalar Magento. Esta no pretende ser la más completa, pero sí una chuleta rápida para mis futuras instalaciones y experimentos. Aunque me alegraré mucho si a alguien le resulta útil. De todas formas, si tienes algún truco, o haces algo de forma especial durante la instalación de Magento (hacer algún cambio que nos ahorre dolores de cabeza o algo así), me encantaría que me dejaras un comentario.
Conexión al servidor
Lo primero es conectarte al servidor (o contratarlo). Yo para hacer pruebas he utilizado un servidor de DigitalOcean y tengo un LAMP configurado.
Bueno, para experimentar, mientras no tenemos un dominio o no queremos utilizarlo (por ejemplo cuando estamos desarrollando, no queremos que el mundo entero vea lo que estamos haciendo), podemos editar el archivo hosts de nuestro ordenador. En sistemas tipo unix estará en /etc/hosts (debemos editarlo como root). En sistemas Windows, lo encontraremos, por ejemplo en C:\Windows\System32\drivers\etc\hosts (editar como administrador, o también puedes editarlo grabando en otro sitio, Documentos por ejemplo, y mover el archivo a la carpeta donde debe estar, eso sí, cuidado que el archivo no tiene extensión, ni txt ni nada). Ahí introducimos una línea donde tengamos la IP del servidor con el que estamos probando un espacio y el host con el que queremos acceder. Por ejemplo:
1
123.213.123.123 magentotest.com
A partir de ahora, siempre que accedamos a http://magentotest.com lo haremos a nuestro servidor.
Ahora, para hacerlo por SSH (podemos subir los archivos por FTP si tu servidor lo soporta o lo has configurado, pero por SSH me parece mucho más rápido y más seguro). Los usuarios de Unix no tendréis problema porque tendréis la herramienta ya instalada, podéis abrir un terminal y escribir:
$ ssh [email protected]
y ya estaréis conectados tras escribir la contraseña. Los usuarios de Windows, tendréis que descargar y ejecutar Putty (por ejemplo) para poder acceder al servidor, configurar el servidor (magentotest.com, es el que usé yo para la prueba), decir el nombre de usuario y podréis entrar.
Accederéis a una consola de Unix y os iré contando comando a comando qué hacer.
Consideraciones de mi entorno de pruebas
Al igual que he utilizado magentotest.com para hacer las pruebas del dominio, encontramos varias consideraciones, voy a crear un VirtualHost de Apache y voy a poner la web en la carpeta de mi usuario test, aunque puede que en tu servidor no tengas que hacerlo así, o tengas una manera de trabajar establecida, por lo que te puedes saltar este paso, eso sí, has de saber que los archivos de la web estarán en /home/test/www/magento/www (pero sólo para la guía, en realidad los archivos pueden estar donde quieras.
Para hablar con propiedad, las cosas que haya que hacer como root las expresaré como:
# comando
y las que puedan ser como usuario normal, lo haré como
$ comando
Para ejecutar comandos como root, en muchos sistemas podremos usar:
$ sudo comando
y tras pedirnos nuestra clave podremos ejecutar el comando en cuestión con privilegios de superusuario, en otros sitios podremos hacer:
$ su -c ‘comando’
y nos pedirá la clave de root para continuar, aunque también podremos hacer:
$ su
[nos pedirá la clave de root]
# comando
También es importante que en nuestro servidor, si estamos en el entorno de pruebas, configuremos también el archivo hosts, en este caso como es un servidor tipo Unix lo encontraremos en /etc/hosts en el que añadiremos la misma línea de antes. Para editarlo desde consola, podemos utilizar nano como root:
# nano /etc/hosts
incluimos la línea que asocia la ip de nuestro servidor con el host:
1
123.213.123.123 magentotest.com
y pulsamos Control+X para salir. Nos preguntará si queremos guardar antes de salir, por lo que respondemos con S (de sí) o Y (de yes) dependiendo del idioma y tras ello pulsamos Intro para aceptar el archivo.
Si tienes experiencia con sistema *nix, tal vez prefieras utilizar otro editor diferente a nano, aunque para la guía, yo creo que es un editor bastante sencillo.
Configurando el VirtualHost
Esto es sólo para Apache y sólo para esta guía, quiero que quede completa y detallada, por lo que voy a explicar cómo podemos crear el host de Apache y dirigirlo a la ruta donde queramos. Si ya lo tienes configurado, o usas otro servidor web, sáltate este paso sin problemas.
Lo que queremos aquí es que la ruta /home/test/www/magento/www/ sea la ruta donde están almacenados los archivos que responden al servidor magentotest.com. Por lo que creo un archivo en /etc/apache2/sites-available/magentotest.com (si usamos Apache 2.4 el archivo debe ser /etc/apache2/sites-available/magentotest.com.conf):
# nano /etc/apache2/sites-available/magentotest.com
y el contenido del archivo debe quedar más o menos así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<VirtualHost *:80>
ServerName magentotest.com
ServerAdmin webmaster@localhost
DocumentRoot /home/test/www/magento/www/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/test/www/magento/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Tras salvarlo, debemos activar la web y recargar el servicio:
# a2ensite magentotest.com[.conf]
# service apache2 reload
Ya tenemos el virtualhost preparado, aunque si accedemos desde nuestro navegador a http://magentotest.com/ seguramente no veamos nada, porque no tenemos archivos en la ruta. Continuemos.
mcrypt
Magento necesita este módulo de PHP para funcionar. Pero en versiones de PHP > 5.5, suele venir desactivado por defecto. Por lo que tendremos que hacer:
# php5enmod mcrypt
# service apache restart
Preparando la base de datos
Si tienes un usuario y una base de datos con la que trabajar puedes saltarte este paso. Muchos prefieren utilizar el usuario root de MySQL para todo, a mí me gusta que cada aplicación tenga su usuario y sus bases de datos, para hacer esto, desde nuestra sesión de ssh podemos hacer lo siguiente:
$ mysql -uroot -p
[nos pedirá el password del usuario root de Mysql]
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 42
Server version: 5.5.35-1ubuntu1 (Ubuntu)
[estas líneas no tienen por qué coincidir al 100%]
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> CREATE SCHEMA tiendamagento;
Query OK, 1 row affected (0.00 sec)mysql> GRANT ALL PRIVILEGES ON tiendamagento.* TO magentodbuser@localhost IDENTIFIED BY ‘passwordseguro’;
Query OK, 0 rows affected (0.01 sec)mysql> quit
ByeA partir de ahora, para tiendamagento, el usuario de base de datos será ‘magentodbuser’, su clave ‘passwordseguro0 y la base de datos ‘tiendamagento’.
Si tu base de datos no está en la misma máquina que el servidor web, en lugar de ‘localhost’ al establecer los privilegios, tendremos que poner el host donde tenemos el servidor web entre comillas, o ‘%’ para aceptar conexiones desde cualquier servidor (cuidado con esto, será cosa del firewall dejar pasar las conexiones desde hosts desconocidos, aunque por ejemplo, si MySQL está escuchando sólo en VPN no habría problema).Descargando y descomprimiendo
Una de las grandes ventajas de instalar vía ssh es esta, podemos hacer que el servidor se descargue Magento (que seguramente tardará mucho menos que nuestro ordenador de casa) y descomprimirlo ahí, y esto será mucho más rápido que transmitir todos los archivos descomprimidos desde nuestro ordenador.
Como dijimos antes, la instalación se hará en /home/test/www/magento/www; personalmente me gusta tener un directorio o carpeta llamado tar o tarball donde almaceno todos los archivos que tengo que descargar en las versiones que me las descargué en su momento (también podemos descargarlo y borrarlo, ya nosotros elegimos):
$ cd /home/test/www/magento
/home/test/www/magento/ $ mkdir tarball
/home/test/www/magento/ $ cd tarballEn el momento de creación de la guía, la última versión de Magento es la 1.9.0.1 que podemos descargar de: http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.bz2 sin necesidad de tener que identificarnos ni registrarnos. Por lo tanto podemos hacer lo siguiente:
/home/test/www/magento/tarball/ $ wget http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.bz2
–2014-06-14 22:23:53– http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.bz2
Resolving www.magentocommerce.com (www.magentocommerce.com)… 192.69.184.97
Connecting to www.magentocommerce.com (www.magentocommerce.com)|192.69.184.97|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 19079762 (18M) [application/octet-stream]
Saving to: ‘magento-1.9.0.1.tar.bz2’26% [==============================> ] 5,081,161 413KB/s eta 34s
Cuando llegue al 100% podemos descomprimirlo en /home/test/www/magento:
/home/test/www/magento/tarball/ $ cd..
/home/test/www/magento/ $ tar xvjf tarball/magento-1.9.0.1.tar.bz2
[mostrará por pantalla todos los arhivos]Como se ha descomprimido todo dentro de un nuevo directorio llamado magento, podemos renombrarlo a www para que podamos acceder via web:
/home/test/www/magento/ $ mv magento www
# service apache reload(He reiniciado el servidor web porque si no detectó el directorio www cuando lo iniciamos antes, no habrá cargado la configuración del VirtualHost que habíamos creado)
Cambiando los permisos
Magento tiene un potente sistema de gestión interna y de actualización, por lo que es recomendable dejar que el servidor web tenga permiso de escritura sobre los archivos del mismo.
Personalmente, este tipo de cosas prefiero hacerlo a nivel de grupo. En Unix tenemos 3 “niveles” (dueño, grupo y otros) para los diferentes permisos de un archivo (lectura – read -, escritura – write – y ejecución – eXecution – ). Por lo que básicamente tenemos 9 flags de permiso ( DUEÑO (r, w, x), GRUPO (r, w, x), OTROS (r, w, x).En principio los dueños somos nosotros (usuario test, en vuestro server será el usuario con el que habéis conectado). el grupo, por defecto suele tener el mismo nombre que el usuario (otras veces no), Por otro lado, el servidor web (Apache, en esta guía, aunque podrá ser cualquier otro), por seguridad, accederá al sistema con un usuario y ese usuario pertenecerá a un grupo (en lugar de acceder como root a cualquier sitio).
Muchos optan por dar a Magento permisos de escritura para otros, aunque permitiríamos a otros usuarios (u otras aplicaciones acceder), yo prefiero establecer el grupo de los ficheros al usado por el servidor web (generalmente www-data y dar permisos de escritura a nivel de grupo:
/home/test/www/magento # chgrp -R www-data www
/home/test/www/magento # chmod -R g+w wwwEmpezamos con la instalación gráfica
Ya estamos listos para coger nuestro navegador favorito en nuestro ordenador y acceder a http://magentotest.com . Si todo ha salido bien, estaremos ante esta pantalla:
. Leemos la licencia (bueno, sé que poca gento lo hace), la aceptamos, y continuamos.
Ahora configuramos las opciones de localización (más o menos éstas se ajustan a lo que yo quiero montar, pero si estás en otro país, quieres usar otra moneda y otro idioma, sólo hay que ponerlo en este paso.
Configuración de la base de datos
Tras ello veremos esta pantalla:
Aquí rellenamos con los datos que hemos establecido anteriormente para la base de datos. El prefijo de las tablas (que he puesto como mage_) nos valdrá para tener las tablas algo más controladas, y sobre todo para que, si instalamos otra aplicación en la misma base de datos sepamos de qué aplicación es cada tabla. Magento utiliza muuuchas tablas.
Al final del todo he marcado para utilizar mod rewrite (para generar URLs amigables), aquí podemos seleccionar SSL por ejemplo, o Skip Base URL Validation si no hemos establecido el fichero hosts del servidor o si por alguna restricción la tienda, actualmente no es accesible desde la URL.
Crear nuestro usuario
Desde esta pantalla escribimos los datos del usuario administrador de la web. Si no ponemos clave de cifrado al final se generará una y nos invitará a copiarla.
Hemos terminado !! No tenemos por qué rellenar la encuesta. Podemos pulsar uno de los botones de abajo para ir al Frontend o al Backend de la aplicación. Como vemos, se ha generado una clave de cifrado y la podemos copiar ahora.
Ya podemos acceder a la página principal y veremos algo así:
o a la zona interna mucho más completa.
Mensaje de error de Apache tras la instalación
Si vemos que el log de errores de Apache (o de nuestro servidor) se empieza a llenar con mensajes como este:
[Sat Jun 14 23:09:13.058968 2014] [access_compat:error] [pid 6785] [client 95.85.14.216:47433] AH01797: client denied by server configuration: /home/test/www/magento/www/app/etc/local.xml
debemos saber que es una comprobación de seguridad que hace siempre que estamos utilizando el Backend de administración de la web, aunque se puede desactivar, y ganaremos algo de velocidad.
Tenemos que crear el archivo: /home/test/www/magento/www/app/design/adminhtml/default/default/layout/local.xml
y poner en él lo siguiente:
1
2
3
4
5
6
<layout>
<default>
<remove name="notification_security" />
<remove name="notification_survey" />
</default>
</layout>Tras ello, acceder al backend de administración e ir a Sistema > Gestión de caché y allí vaciar la caché de Magento. No debería haber más problemas en este sentido.
Todo por el momento
Hasta aquí llega esta guía, poco a poco quiero ir completándola con más detalles. Si no se ajustan con la instalación, serán nuevos posts.