Magento es la plataforma líder de comercio electrónico de clase empresarial basada en tecnología de código abierto que combina funciones potentes con flexibilidad y una interfaz fácil de usar.
Con funciones como Experiencias de compra atractivas, Arquitectura modular flexible y Escalabilidad y rendimiento de nivel empresarial, Magento es una plataforma elegida por la mayoría de los comerciantes en línea.
En este tutorial, le mostraremos cómo instalar Magento 2.3 en una máquina con Ubuntu 18.04. Usaremos Nginx como servidor web, el último PHP 7.2 y MySQL/MariaDB como servidor de base de datos.
Requisitos previos #
Asegúrese de cumplir con los siguientes requisitos previos antes de continuar con este tutorial:
- Tenga un nombre de dominio que apunte a la IP de su servidor público. Usaremos
example.com
. - Nginx se instala en su servidor Ubuntu siguiendo estas instrucciones.
- Un certificado SSL instalado para su dominio para encriptar la información del usuario. Puede instalar un certificado SSL gratuito de Let's Encrypt siguiendo estas instrucciones.
Para poder acceder al repositorio de códigos de Magento 2, deberá generar claves de autenticación. Si no tiene una cuenta de Magento Marketplace, puede crear una aquí. Una vez que haya creado la cuenta, consulte estas instrucciones sobre cómo generar un nuevo conjunto de claves de autenticación.
Actualice los paquetes del sistema a las últimas versiones e instale la utilidad de descompresión:
sudo apt update && sudo apt upgrade
sudo apt install unzip
Creando base de datos MySQL #
Si tiene instalado MySQL o MariaDB en su servidor, puede omitir este paso; si no, puede instalar el paquete del servidor MySQL 5.7 desde los repositorios predeterminados de Ubuntu escribiendo:
sudo apt install mysql-server mysql-client
Para instalaciones nuevas de MySQL, se recomienda ejecutar mysql_secure_installation
comando para mejorar la seguridad de su servidor MySQL. Inicie sesión en el shell de MySQL usando el siguiente comando:
sudo mysql
Desde el shell de MySQL, ejecute la siguiente instrucción SQL para crear una nueva base de datos llamada magento
:
CREATE DATABASE magento;
A continuación, cree una cuenta de usuario de MySQL llamada magento
y otorgue los permisos necesarios al usuario ejecutando el siguiente comando:
GRANT ALL ON magento.* TO 'magento'@'localhost' IDENTIFIED BY 'change-with-strong-password';
Asegúrate de cambiar change-with-strong-password
con una contraseña segura. Una vez hecho esto, salga de la consola de MySQL escribiendo:
EXIT;
Creando número de usuario del sistema
Cree un nuevo usuario y grupo, que será el propietario del sistema de archivos de Magento, por simplicidad llamaremos al usuario magento
:
sudo useradd -m -U -r -d /opt/magento magento
Agrega los www-data
usuario al magento
grupo y cambie el /opt/magento
permisos de directorio para que Nginx pueda acceder a la instalación de Magento:
sudo usermod -a -G magento www-data
sudo chmod 750 /opt/magento
Instalación y configuración de PHP #
PHP 7.2, que es la versión predeterminada de PHP en Ubuntu 18.04, es totalmente compatible y recomendado para Magento 2.3. Dado que usaremos Nginx como servidor web, también instalaremos el paquete PHP-FPM.
Ejecute el siguiente comando para instalar PHP y todos los módulos PHP necesarios:
sudo apt install php7.2-common php7.2-cli php7.2-fpm php7.2-opcache php7.2-gd php7.2-mysql php7.2-curl php7.2-intl php7.2-xsl php7.2-mbstring php7.2-zip php7.2-bcmath php7.2-soap
El servicio PHP-FPM se iniciará automáticamente después de que se complete el proceso de instalación, puede verificarlo imprimiendo el estado del servicio:
sudo systemctl status php7.2-fpm
El resultado debe indicar que el servicio fpm está activo y ejecutándose.
● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-12-12 15:47:16 UTC; 5s ago
Docs: man:php-fpm7.2(8)
Main PID: 16814 (php-fpm7.2)
Status: "Ready to handle connections"
Tasks: 3 (limit: 505)
CGroup: /system.slice/php7.2-fpm.service
Configure las opciones PHP requeridas y recomendadas editando el php.ini
archivo con sed
::
sudo sed -i "s/memory_limit = .*/memory_limit = 1024M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 256M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;opcache.save_comments.*/opcache.save_comments = 1/" /etc/php/7.2/fpm/php.ini
A continuación, debemos crear un grupo de FPM para el magento
usuario.
Abre tu editor de texto y crea el siguiente archivo:
sudo nano /etc/php/7.2/fpm/pool.d/magento.conf
/etc/php/7.2/fpm/pool.d/magento.conf[magento]
user = magento
group = www-data
listen.owner = magento
listen.group = www-data
listen = /var/run/php/php7.2-fpm-magento.sock
pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 10s
pm.max_requests = 500
chdir = /
Reinicie el servicio PHP-FPM para que los cambios surtan efecto:
systemctl restart php7.2-fpm
Verifique si el socket de PHP se creó correctamente ejecutando el siguiente comando ls:
ls -al /var/run/php/php7.2-fpm-magento.sock
La salida debería verse así:
srw-rw---- 1 magento www-data 0 Dec 12 16:07 /var/run/php/php7.2-fpm-magento.sock=
Instalando Composer #
Composer es un administrador de dependencias para PHP y lo usaremos para descargar el núcleo de Magento e instalar todos los componentes de Magento necesarios.
Para instalar composerglobalmente, descargue el instalador de Composer con curly mueva el archivo a /usr/local/bin
directorio:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Verifique la instalación imprimiendo la versión del compositor:
composer --version
La salida debería verse así:
Composer version 1.8.0 2018-12-03 10:31:16
Instalando Magento #
Hay varias formas de instalar Magento 2. Evite instalar Magento desde el repositorio de Github porque esa versión está diseñada para desarrollo y no para instalaciones de producción.
Al momento de escribir este artículo, la última versión estable de Magento es la versión 2.3.0
. En este tutorial, instalaremos Magento desde sus repositorios usando composer.
Cambiar al usuario magento
escribiendo:
sudo su - magento
Inicie la instalación descargando los archivos de magento en el directorio /opt/magento/public_html:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition /opt/magento/public_html
Se le pedirá que ingrese las claves de acceso, copie las claves de su cuenta del mercado de Magento y guárdelas en auth.json
archivo, por lo que más adelante, al actualizar su instalación, no tendrá que volver a agregar las mismas claves.
Authentication required (repo.magento.com):
Username: e758ec1745d190320ca246e4e832e12c
Password:
Do you want to store credentials for repo.magento.com in /opt/magento/.config/composer/auth.json ? [Yn] Y
El comando anterior obtendrá todos los paquetes PHP requeridos. El proceso puede tardar unos minutos y, si tiene éxito, el final de la salida debería tener el siguiente aspecto:
Writing lock file
Generating autoload files
Una vez creado el proyecto podemos iniciar la instalación de Magento. Podemos instalar Magento desde la línea de comandos o usando el Asistente de configuración web. En este tutorial, instalaremos Magento usando la línea de comando.
Usaremos las siguientes opciones para instalar la tienda Magento:
- Las URL seguras base y base están configuradas en
https://example.com
, cámbielo con su dominio. - Administrador de Magento:
John
Doe
como nombre y apellido.[email protected]
como correo electrónico.john
como nombre de usuario yj0hnP4ssvv0rD
como contraseña.
- Nombre de la base de datos
magento
, nombre de usuariomagento
, contraseñachange-with-strong-password
y el servidor de la base de datos está en el mismo host que el servidor web. en_US
, inglés estadounidense como idioma predeterminado.USD
dólares como moneda predeterminada.America/Chicago
como zona horaria.
Cambie a Magento ~/public_html
directorio:
cd ~/public_html
Ejecute el siguiente comando para iniciar la instalación:
php bin/magento setup:install --base-url=https://example.com/ \
--base-url-secure=https://example.com/ \
--admin-firstname="John" \
--admin-lastname="Doe" \
--admin-email="[email protected]" \
--admin-user="john" \
--admin-password="j0hnP4ssvv0rD" \
--db-name="magento" \
--db-host="localhost" \
--db-user="magento" \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--db-password="change-with-strong-password"
No olvides cambiar la contraseña (j0hnP4ssvv0rD
) a algo más seguro. El proceso puede tardar unos minutos y, una vez completado, se le presentará un mensaje que contiene el URI en el panel de administración de Magento.
[Progress: 773 / 773]
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_13nv5k
Nothing to import.
Creando Magento crontab #
Magento usa trabajos cron para programar tareas como reindexación, notificaciones, mapas del sitio, correos electrónicos y más.
Para crear el crontab de Magento, ejecute el siguiente comando como magento
usuario:
php ~/public_html/bin/magento cron:install
Crontab has been generated and saved
Verifique que crontab esté instalado escribiendo:
crontab -l
#~ MAGENTO START adc062915d7b30804a2b340095af072d
* * * * * /usr/bin/php7.2 /opt/magento/public_html/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /opt/magento/public_html/var/log/magento.cron.log
* * * * * /usr/bin/php7.2 /opt/magento/public_html/update/cron.php >> /opt/magento/public_html/var/log/update.cron.log
* * * * * /usr/bin/php7.2 /opt/magento/public_html/bin/magento setup:cron:run >> /opt/magento/public_html/var/log/setup.cron.log
#~ MAGENTO END adc062915d7b30804a2b340095af072d
Configuración de Nginx #
A estas alturas, ya debería tener Nginx con certificado SSL instalado en su servidor Ubuntu, si no, verifique los requisitos previos para este tutorial.
Vamos a incluir la configuración predeterminada de Nginx enviada con Magento.
Cambie a su usuario sudo, abra su editor de texto y cree el siguiente archivo:
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.comupstream fastcgi_backend {
server unix:/var/run/php/php7.2-fpm-magento.sock;
}
server {
listen 80;
server_name example.com www.example.com;
include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
set $MAGE_ROOT /opt/magento/public_html;
set $MAGE_MODE developer; # or production
access_log /var/log/nginx/example.com-access.log;
error_log /var/log/nginx/example.com-error.log;
include /opt/magento/public_html/nginx.conf.sample;
}
No olvide reemplazar example.com con su dominio Magento y establezca la ruta correcta a los archivos del certificado SSL. Los fragmentos utilizados en esta configuración se crean en esta guía. Antes de reiniciar el servicio Nginx, haga una prueba para asegurarse de que no haya errores de sintaxis:
sudo nginx -t
Si no hay errores, la salida debería verse así:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Finalmente, reinicie el servicio Nginx escribiendo:
sudo systemctl restart nginx
Verificando la Instalación #
Abra su navegador, escriba su dominio y suponiendo que la instalación sea exitosa, aparecerá una pantalla similar a la siguiente:
Ahora puede ir al URI de administrador de Magento, iniciar sesión como usuario administrador y comenzar a personalizar su nueva instalación de Magento.