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 [email protected] 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:

Instalador 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:

Comprobación del sistema listo

Ahora, haz clic en el botón Siguiente. Deberías ver la siguiente página:

Configuración de la base de datos

Proporciona los detalles de tu base de datos y haz clic en el botón Siguiente. Deberías ver la siguiente página:

Configuración de la web

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:

Configura la moneda, la zona horaria y el idioma

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:

Configurar el nombre de usuario

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:

Procede a la instalación

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:

Instalación realizada con éxito

Ahora, haz clic en el botón Dirección de tu tienda. Deberías ver tu tienda Magento en la siguiente página:

Página de inicio de Magento

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:

Inicio de sesión en 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:

Panel de control de Magento

Eso es todo por ahora. Tu Magento está ahora protegido con el SSL gratuito de Let’s Encrypt.

También te podría gustar...