Cómo instalar Magento en CentOS 8
Magento es una de las plataformas de comercio electrónico de código abierto más populares que te permite crear sitios web de comercio electrónico y tiendas online en cuestión de minutos. Está escrito en PHP, basado en Zend Framework y utiliza el modelo de base de datos Entity Attribute Value (EAV) para almacenar los datos. Viene con una interfaz sencilla y fácil de usar que te permite personalizar tu tienda online y vender tus productos y servicios fácilmente.
En este tutorial, te mostraremos cómo instalar la plataforma de comercio electrónico Magento en CentOS 8 con SSL gratuito de Let’s Encrypt.
Requisitos
- Un servidor que ejecute CentOS 8 con 2 GB de RAM.
- Un nombre de dominio válido apuntado con la IP de tu servidor.
- Una contraseña de root configurada en el servidor.
Instalar el servidor LEMP
En primer lugar, instala el servidor web Nginx, el servidor de bases de datos MariaDB, PHP y otras librerías PHP necesarias ejecutando el siguiente comando:
dnf install nginx mariadb-server php php-cli php-mysqlnd php-opcache php-xml php-gd php-soap php-bcmath php-intl php-mbstring php-json php-iconv php-fpm php-zip unzip git -y
Una vez instalados todos los paquetes, inicia el servicio Nginx, MariaDB y PHP-FPM y habilítalos para que se inicien tras el reinicio del sistema con el siguiente comando:
systemctl start nginx
systemctl start mariadb
systemctl start php-fpm
systemctl enable nginx
systemctl enable mariadb
systemctl enable php-fpm
A continuación, tendrás que editar el archivo php.ini y modificar algunos ajustes:
nano /etc/php.ini
Cambia las siguientes líneas:
memory_limit =512M upload_max_filesize = 200M zlib.output_compression = On max_execution_time = 300 date.timezone = Asia/Kolkata
Guarda y cierra el archivo cuando hayas terminado.
Configurar la base de datos
Por defecto, MariaDB no está asegurada, por lo que tendrás que asegurarla primero. Ejecuta el siguiente script para asegurar MariaDB:
mysql_secure_installation
Responde a todas las preguntas como se muestra a continuación:
Enter current password for root (enter for none): Set root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Una vez que hayas terminado, entra en el shell de MariaDB con el siguiente comando:
mysql -u root -p
Proporciona tu contraseña de root cuando se te pida y luego crea una base de datos y un usuario para Magento como se muestra a continuación:
MariaDB [(none)]> CREATE DATABASE magentodb;
MariaDB [(none)]> GRANT ALL ON magentodb.* TO magento@localhost IDENTIFIED BY 'password';
A continuación, vacía los privilegios y sal del shell de MariaDB con el siguiente comando:
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
Configurar PHP-FPM para Magento
A continuación, tendrás que configurar el pool de PHP-FPM para tu instancia de Magento. Puedes configurarlo creando el siguiente archivo:
nano /etc/php-fpm.d/magento.conf
Añade las siguientes líneas:
[magento] user = nginx group = nginx listen.owner = nginx listen.group = nginx listen = /run/php-fpm/magento.sock pm = ondemand pm.max_children = 50 pm.process_idle_timeout = 10s pm.max_requests = 500 chdir = /
Guarda y cierra el archivo y luego reinicia el servicio PHP-FPM para aplicar los cambios:
systemctl restart php-fpm
Descarga Magento
En primer lugar, descarga la última versión de Magento desde el repositorio Git utilizando el siguiente comando:
cd /var/www/html
wget https://github.com/magento/magento2/archive/2.3.zip
Una vez descargado, descomprime el archivo descargado como se muestra a continuación:
unzip 2.3.zip
A continuación, mueve el directorio extraído a magento2 como se muestra a continuación:
mv magento2-2.3 magento2
A continuación, tendrás que instalar el Compositor para instalar las dependencias de PHP para Magento.
Puedes instalar el Composer con el siguiente comando:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
A continuación, cambia el directorio a magento2 e instala todas las dependencias de Magento con el siguiente comando:
cd /var/www/html/magento2
composer update
composer install
A continuación, tendrás que crear el crontab de Magento para programar las tareas. Puedes crearlo con el siguiente comando:
./bin/magento cron:install
Puedes verificar el crontab con el siguiente comando:
crontab -l
Deberías obtener la siguiente salida:
#~ MAGENTO START f73db5f5dcf223372d4c9fab56bef0c1730eece898fad5cbee0c313b46b0dd1f * * * * * /usr/bin/php /var/www/html/magento2/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento2/var/log/magento.cron.log * * * * * /usr/bin/php /var/www/html/magento2/update/cron.php >> /var/www/html/magento2/var/log/update.cron.log * * * * * /usr/bin/php /var/www/html/magento2/bin/magento setup:cron:run >> /var/www/html/magento2/var/log/setup.cron.log #~ MAGENTO END f73db5f5dcf223372d4c9fab56bef0c1730eece898fad5cbee0c313b46b0dd1f
A continuación, da los permisos adecuados al directorio magento2:
chown -R nginx:nginx /var/www/html/magento2
chmod -R 755 /var/www/html/magento2
Configurar Nginx para Magento
A continuación, tendrás que crear un archivo de host virtual Nginx para Magento. Puedes crearlo con el siguiente comando:
nano /etc/nginx/conf.d/magento.conf
Añade las siguientes líneas:
upstream fastcgi_backend { server unix:/run/php-fpm/magento.sock; } server { listen 80; server_name magento.linuxbuz.com; set $MAGE_ROOT /var/www/html/magento2; set $MAGE_MODE developer; access_log /var/log/nginx/magento-access.log; error_log /var/log/nginx/magento-error.log; include /var/www/html/magento2/nginx.conf.sample; }
Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio Nginx y PHP-FPM para aplicar los cambios:
systemctl restart php-fpm
systemctl restart nginx
Configurar SELinux y el cortafuegos
Por defecto, SELinux está activado en CentOS 8. Así que tendrás que configurar SELinux para que Magento funcione correctamente.
Puedes configurar SELinux con el siguiente comando:
semanage permissive -a httpd_t
A continuación, tendrás que crear una regla de firewall para permitir el servicio HTTP y HTTPS desde redes externas. Puedes permitirlo con el siguiente comando:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Asegura Magento con Let’s Encrypt SSL
Ahora Magento está instalado y configurado. Es hora de asegurarlo con el SSL gratuito de Let’s Encrypt.
Para ello, necesitarás descargar el cliente certbot en tu servidor. Puedes descargarlo y establecer el permiso correcto ejecutando el siguiente comando:
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto
Ahora, ejecuta el siguiente comando para obtener e instalar un certificado SSL para tu sitio web de Magento.
certbot-auto --nginx -d magento.linuxbuz.com
El comando anterior instala primero todas las dependencias necesarias como se muestra a continuación:
Installed: gcc-8.2.1-3.5.el8.x86_64 mod_ssl-1:2.4.37-12.module_el8.0.0+185+5908b0db.x86_64 python3-virtualenv-15.1.0-18.module_el8.0.0+33+0a10c0e1.noarch python36-devel-3.6.8-2.module_el8.0.0+33+0a10c0e1.x86_64 redhat-rpm-config-116-1.el8.0.1.noarch augeas-libs-1.10.1-8.el8.x86_64 libffi-devel-3.1-18.el8.x86_64 openssl-devel-1:1.1.1-8.el8.x86_64 annobin-8.64-1.el8.x86_64 cpp-8.2.1-3.5.el8.x86_64 dwz-0.12-9.el8.x86_64 efi-srpm-macros-3-2.el8.noarch ghc-srpm-macros-1.4.2-7.el8.noarch go-srpm-macros-2-16.el8.noarch isl-0.16.1-6.el8.x86_64 libmpc-1.0.2-9.el8.x86_64 ocaml-srpm-macros-5-4.el8.noarch openblas-srpm-macros-2-2.el8.noarch perl-srpm-macros-1-25.el8.noarch platform-python-devel-3.6.8-2.el8_0.0.1.x86_64 python-rpm-macros-3-37.el8.noarch python-srpm-macros-3-37.el8.noarch python3-rpm-generators-5-4.el8.noarch python3-rpm-macros-3-37.el8.noarch qt5-srpm-macros-5.11.1-2.el8.noarch rust-srpm-macros-5-2.el8.noarch glibc-devel-2.28-42.el8.1.x86_64 glibc-headers-2.28-42.el8.1.x86_64 kernel-headers-4.18.0-80.11.2.el8_0.x86_64 keyutils-libs-devel-1.5.10-6.el8.x86_64 krb5-devel-1.16.1-22.el8.x86_64 libcom_err-devel-1.44.3-2.el8.x86_64 libkadm5-1.16.1-22.el8.x86_64 libselinux-devel-2.8-6.el8.x86_64 libsepol-devel-2.8-2.el8.x86_64 libverto-devel-0.3.0-5.el8.x86_64 libxcrypt-devel-4.1.1-4.el8.x86_64 pcre2-devel-10.32-1.el8.x86_64 pcre2-utf16-10.32-1.el8.x86_64 pcre2-utf32-10.32-1.el8.x86_64 zlib-devel-1.2.11-10.el8.x86_64 Complete! Creating virtual environment... Installing Python packages... Installation succeeded.
Una vez instaladas todas las dependencias, se te pedirá que proporciones tu dirección de correo electrónico y que aceptes las condiciones del servicio, como se muestra a continuación:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Obtaining a new certificate Performing the following challenges: http-01 challenge for magento.linuxbuz.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/magento.conf
A continuación, tendrás que elegir si quieres redirigir el tráfico HTTP a HTTPS, como se muestra a continuación:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Escribe 2 y pulsa Intro para instalar el certificado SSL de Let’s Encrypt para tu dominio, como se muestra a continuación:
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/magento.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://magento.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=magento.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/magento.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/magento.linuxbuz.com/privkey.pem Your cert will expire on 2020-03-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Accede a Magento
Ahora Magento está instalado y configurado. Es hora de acceder al asistente de instalación de Magento.
Abre tu navegador web y escribe la URL https://magento.linuxbuz.com. Serás redirigido a la página de bienvenida de Magento:
Haz clic en el botón Aceptar y configurar Magento. Deberías ver el asistente de comprobación de preparación de Magento:
Ahora, haz clic en el botón Siguiente. Deberías ver la siguiente página:
Proporciona los detalles de tu base de datos y haz clic en el botón Siguiente. Deberías ver la siguiente página:
Ahora, proporciona la URL de tu tienda Magento y del administrador, y haz clic en el botón Siguiente. Deberías ver la siguiente página:
Selecciona la zona horaria, la moneda y el idioma que desees y haz clic en el botón Siguiente. Deberías ver la siguiente página:
Ahora, proporciona tu nombre de usuario y contraseña de administrador de Magento y haz clic en el botón Siguiente. Deberías ver la siguiente página:
Ahora, haz clic en el botón Instalar ahora para iniciar la instalación de Magento. Una vez que la instalación se haya completado con éxito. Deberías ver la siguiente página:
Ahora, haz clic en el botón Dirección de tu tienda. Deberías ver tu tienda Magento en la siguiente página:
Para acceder a tu interfaz de administración de Magento, escribe la URL https://magento.linuxbuz.com/admin_1teqss en tu navegador web. Serás redirigido a la página de inicio de sesión de Magento:
Proporciona tu nombre de usuario y contraseña de administrador de Magento y haz clic en el botón Iniciar sesión. Deberías ver tu interfaz de administración de Magento en la siguiente página:
Eso es todo por ahora. Tu Magento está ahora protegido con el SSL gratuito de Let’s Encrypt.