Cómo instalar Magento en Debian 11
Magento es una aplicación de comercio electrónico gratuita y de código abierto que te permite alojar tu tienda online. Está escrito en PHP y utiliza el framework Zend. Es versátil y escalable, lo que la hace adecuada para tiendas pequeñas, medianas y grandes. Te permite alojar un sistema de carrito de la compra online totalmente funcional sin necesidad de tener conocimientos de programación. Es utilizado por miles de tiendas online debido a su simplicidad y facilidad de uso.
En este tutorial, te mostraré cómo instalar Magento2 en Debian 11.
Requisitos previos
- Un servidor con Debian 11.
- Un nombre de dominio válido apuntado con la IP de tu servidor.
- Una contraseña de root configurada en el servidor.
Instalar Apache, PHP y otras extensiones necesarias
En primer lugar, tendrás que instalar Apache, PHP y otras extensiones PHP necesarias en tu servidor. Puedes instalarlas todas utilizando el siguiente comando:
apt-get install apache2 php libapache2-mod-php php-common php-gmp php-curl php-soap php-bcmath php-intl php-mbstring php-xmlrpc php-mysql php-gd php-xml php-cli php-zip -y
Una vez instalados todos los paquetes, edita el archivo php.ini y cambia algunos valores predeterminados:
nano /etc/php/7.4/apache2/php.ini
Cambia los siguientes valores:
file_uploads = On allow_url_fopen = On short_open_tag = On memory_limit = 512M upload_max_filesize = 128M max_execution_time = 3600
Guarda y cierra el archivo y reinicia el servicio Apache para aplicar los cambios:
systemctl restart apache2
Instalar y configurar el servidor MySQL
Magento2 utiliza MariaDB o MySQL como base de datos. Por defecto, la versión 10.5 de MariaDB está incluida en el repositorio por defecto de Debian 11, que no es compatible con Magento2. Así que tendrás que instalar MySQL Server 8 en tu servidor.
Primero, descarga el archivo del paquete MySQL con el siguiente comando:
wget https://repo.mysql.com//mysql-apt-config_0.8.18-1_all.deb
A continuación, instálalo con el siguiente comando:
apt install ./mysql-apt-config_0.8.18-1_all.deb -y
Se te pedirá que selecciones la versión de MySQL que quieres instalar:
Selecciona MySQL Server 8 y pulsa el botón Aceptar.
A continuación, actualiza el repositorio e instala el servidor MySQL 8 con el siguiente comando:
apt-get update -y apt-get install mysql-server -y
Una vez instalado el MySQL, conéctate al MySQL con el siguiente comando:
mysql -u root -p
Una vez conectado, crea una base de datos y un usuario para Magento2 con el siguiente comando:
mysql> CREATE DATABASE magento2; mysql> CREATE USER 'magento2'@'localhost' IDENTIFIED BY 'password';
A continuación, concede todos los privilegios a la base de datos de Magento2:
mysql> GRANT ALL PRIVILEGES ON magento2.* TO 'magento2'@'localhost';
A continuación, vacía los privilegios y sal del MySQL con el siguiente comando:
mysql> FLUSH PRIVILEGES; mysql> EXIT;
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar Composer
Composer es un gestor de dependencias para PHP que se utiliza para gestionar las dependencias PHP necesarias para tu proyecto.
Primero, instala la herramienta de línea de comandos curl con el siguiente comando:
apt-get install curl -y
A continuación, instala Composer con el siguiente comando:
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Obtendrás la siguiente salida:
All settings correct for using Composer Downloading... Composer (version 2.1.12) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer
A continuación, verifica la versión de Composer utilizando el siguiente comando:
composer --version
Deberías ver la siguiente salida:
Composer version 2.1.12 2021-11-09 16:02:04
Instalar Magento2
A continuación, cambia el directorio al directorio raíz web de Apache y descarga la última versión de Magento2 con el siguiente comando:
cd /var/www/html composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento2
Se te pedirá que proporciones el nombre de usuario y la contraseña de tu cuenta Magento, como se muestra a continuación:
Creating a "magento/project-community-edition" project at "./magento2" Warning from repo.magento.com: You haven't provided your Magento authentication keys. For instructions, visit https://devdocs.magento.com/guides/v2.3/install-gde/prereq/connect-auth.html Authentication required (repo.magento.com): Username: a6b333ad41629bac913eaabb9b8e053c Password:
Utiliza la clave Pública como nombre de usuario y la clave Privada como contraseña y pulsa la tecla Intro. Obtendrás el siguiente resultado:
Do you want to store credentials for repo.magento.com in /root/.config/composer/auth.json ? [Yn] Y Installing magento/project-community-edition (2.4.3-p1) - Downloading magento/project-community-edition (2.4.3-p1) - Installing magento/project-community-edition (2.4.3-p1): Extracting archive Created project in /var/www/html/magento2 Loading composer repositories with package information
A continuación, establece los permisos y la propiedad adecuados de Magento2 y otros directorios:
chown -R www-data:www-data /var/www/html/magento2/ cd /var/www/html/magento2 find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} + find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} + chown -R :www-data . chmod u+x bin/magento
A continuación, desactiva el módulo Elasticsearch con el siguiente comando:
php bin/magento module:disable {Magento_Elasticsearch,Magento_InventoryElasticsearch,Magento_Elasticsearch6,Magento_Elasticsearch7}
Obtendrás el siguiente resultado:
The following modules have been disabled: - Magento_Elasticsearch - Magento_Elasticsearch6 - Magento_InventoryElasticsearch - Magento_Elasticsearch7 Cache cleared successfully. Generated classes cleared successfully. Please run the 'setup:di:compile' command to generate classes. Info: Some modules might require static view files to be cleared. To do this, run 'module:disable' with the --clear-static-content option to clear them.
A continuación, instala Magento2 con el siguiente comando:
bin/magento setup:install --base-url=http://magento.example.com --db-host=localhost --db-name=magento2 --db-user=magento2 --db-password=password --admin-firstname=admin --admin-lastname=admin [email protected] --admin-user=admin --admin-password=Secure@password123 --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1
Una vez instalado el Magento2, deberías ver la siguiente salida:
Module 'Vertex_AddressValidation': [Progress: 1363 / 1370] Module 'Yotpo_Yotpo': [Progress: 1364 / 1370] Enabling caches: Current status: layout: 1 block_html: 1 full_page: 1 [Progress: 1365 / 1370] Installing admin user... [Progress: 1366 / 1370] Caches clearing: Cache cleared successfully [Progress: 1367 / 1370] Disabling Maintenance Mode: [Progress: 1368 / 1370] Post installation file permissions check... For security, remove write permissions from these directories: '/var/www/html/magento2/app/etc' [Progress: 1369 / 1370] Write installation date... [Progress: 1370 / 1370] [SUCCESS]: Magento installation complete. [SUCCESS]: Magento Admin URI: /admin_fgadpx Nothing to import.
Nota: Recuerda el URI de administración de Magento2 de la salida anterior. Tendrás que utilizarlo para acceder a la interfaz web de Magento.
A continuación, desactiva la autenticación de dos factores de Magento2, borra la caché e instala el Cron con los siguientes comandos:
sudo -u www-data bin/magento module:disable Magento_TwoFactorAuth sudo -u www-data bin/magento cache:flush sudo -u www-data bin/magento cron:install
Una vez que hayas terminado, puedes pasar al siguiente paso.
Crear un archivo de configuración de host virtual Apache
A continuación, tendrás que crear un archivo de configuración de host virtual de Apache para Magento2. Puedes crearlo con el siguiente comando:
nano /etc/apache2/sites-available/magento2.conf
Añade las siguientes líneas:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/html/magento2/ ServerName magento.example.com <Directory /var/www/html/magento2/> Options FollowSymlinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/magento2_error.log CustomLog ${APACHE_LOG_DIR}/magento2_access.log combined </VirtualHost>
Guarda y cierra el archivo y, a continuación, activa el host virtual de Magento y el módulo de reescritura de Apache con el siguiente comando:
a2ensite magento2.conf a2enmod rewrite
Por último, reinicia el servicio Apache para aplicar los cambios:
systemctl restart apache2
También puedes comprobar el estado de Apache con el siguiente comando:
systemctl status apache2
Deberías ver la siguiente salida:
? apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-11-20 06:00:59 UTC; 4s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 18394 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 18398 (apache2) Tasks: 6 (limit: 4679) Memory: 15.1M CPU: 99ms CGroup: /system.slice/apache2.service ??18398 /usr/sbin/apache2 -k start ??18399 /usr/sbin/apache2 -k start ??18400 /usr/sbin/apache2 -k start ??18401 /usr/sbin/apache2 -k start ??18402 /usr/sbin/apache2 -k start ??18403 /usr/sbin/apache2 -k start Nov 20 06:00:59 debian11 systemd[1]: Starting The Apache HTTP Server...
Accede a la interfaz web de Magento2
Ahora, abre tu navegador web y accede a la interfaz de administración de Magento2 utilizando la URL http://magento.example.com/admin_fgadpx. Deberías ver la página de inicio de sesión de Magento2:
Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de Magento2 en la página siguiente:
Conclusión
Enhorabuena! has instalado con éxito Magento2 en Debian 11. Ahora puedes alojar tu tienda online fácilmente con Magento. No dudes en preguntarme si tienes alguna duda.