Revista Tecnología

Experimentos: Instalando Magento desde SSH

Publicado el 19 junio 2014 por Gaspar Fernández Moreno @gaspar_fm

Experimentos: Instalando Magento desde SSH
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
Bye

A 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 tarball

En 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 www

Empezamos 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:
Experimentos: Instalando Magento desde SSH. 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.
Experimentos: Instalando Magento desde SSH

Configuración de la base de datos

Tras ello veremos esta pantalla:
Experimentos: Instalando Magento desde SSH
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

Experimentos: Instalando Magento desde SSH
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.

Experimentos: Instalando Magento desde SSH
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í:
Experimentos: Instalando Magento desde SSH
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.


Volver a la Portada de Logo Paperblog