Magento es una tienda de código abierto (software de comercio electrónico) y un sistema de gestión de contenido para sitios web de comercio electrónico basado en PHP Zend Framework. Magento aplica las convenciones de la programación orientada a objetos y la arquitectura MVC (Modelo-Vista-Controlador) y utiliza MySQL/MariaDB como base de datos. El software desarrollado fue iniciado en 2008 por Varien Inc. En los últimos años, Magento se ha convertido en una plataforma confiable para software de comercio electrónico que impulsa negocios en línea en todo el mundo.
En este tutorial, lo guiaré a través de la instalación de Magento 2.1. Instalaremos Magento 2.1 con Nginx y Php7.0-fpm y MySQL como base de datos. Para este propósito, usaré un servidor CentOS 7 con SELinux habilitado.
Paso 1:instalar Nginx
En este paso, instalaremos Nginx desde el repositorio de epel. Epel no está disponible de forma predeterminada, por lo que debemos instalar el repositorio de epel antes de instalar Nginx.
Instale el repositorio epel con este comando yum.
yum -y install epel-release
Ahora podemos instalar Nginx desde el repositorio de epel.
yum -y install nginx
Una vez completada la instalación, inicie Nginx y agréguelo para que comience en el momento del arranque.
systemctl start nginx
systemctl enable nginx
Nginx se inicia en el puerto 80, puede verificarlo con el comando netstat a continuación.
netstat -plntu
En caso de que vea el resultado 'comando no encontrado', puede instalar herramientas de red como esta.
yum -y install net-tools
Paso 2:instalar y configurar PHP-FPM
En este tutorial, usaremos PHP-FPM 7 para la instalación de Magento. Usaré paquetes de PHP 7 del repositorio de Webtatic.
Descargue y agregue un nuevo repositorio webtatic al sistema.
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Ahora ejecute el siguiente comando para instalar PHP-FPM7 con todos los paquetes y la extensión necesarios para la instalación de Magento.
yum -y install php70w-fpm php70w-mcrypt php70w-curl php70w-cli php70w-mysql php70w-gd php70w-xsl php70w-json php70w-intl php70w-pear php70w-devel php70w-mbstring php70w-zip php70w-soap
Cuando se completa una instalación de PHP-FPM7, debemos configurarla. Configuraremos el archivo php.ini y el archivo de configuración php-fpm 'www.conf'.
Edite php.ini con vim.
vim /etc/php.ini
Descomente la línea 762 de cgi.fix_pathinfo y cambie el valor a 0.
cgi.fix_pathinfo=0
Configure el límite de memoria, el tiempo máximo de ejecución y habilite la compresión de salida zlib, asegúrese de establecer los valores como se muestra a continuación.
memory_limit = 512M
max_execution_time = 1800
zlib.output_compression = On
Descomente el directorio de la ruta de la sesión y cambie el directorio como se muestra a continuación.
session.save_path = "/var/lib/php/session"
Guardar y salir.
A continuación, edite el archivo de configuración de php-fpm www.conf con el comando vim.
vim /etc/php-fpm.d/www.conf
PHP-FPM7 se ejecutará bajo el usuario y grupo 'nginx', cambie el valor a 'nginx' para las líneas de usuario y grupo.
user = nginx
group = nginx
Ejecutaremos php-fpm en un archivo de socket, no en un puerto de servidor. Cambie el valor de la línea de escucha a la ruta del archivo de socket.
listen = /var/run/php/php-fpm.sock
El archivo de socket debe ser propiedad del usuario y grupo 'nginx', descomente las líneas de escucha y cambie los valores como se muestra a continuación.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Finalmente, descomente las líneas de entorno PHP-FPM 366-370.
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Guardar y salir.
A continuación, cree un nuevo directorio para la ruta de la sesión y la ubicación del archivo sock de php. Luego cambie el propietario al usuario y grupo 'nginx'.
Cree un nuevo directorio para la ruta de la sesión.
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
Cree un nuevo directorio para la ubicación del archivo de socket php-fpm.
mkdir -p /run/php/
chown -R nginx:nginx /run/php/
La configuración de PHP-FPM7 está completa, inicie el demonio ahora y habilítelo para que se inicie en el momento del arranque con el siguiente comando systemctl.
systemctl start php-fpm
systemctl enable php-fpm
Cuando no hay errores, puede usar el siguiente comando para verificar si php-fpm se está ejecutando en el archivo de socket.
netstat -pl | grep php-fpm.sock
Paso 3:instalar el servidor MySQL 5.7
Magento 2.1 requiere una versión actual de MySQL, puede usar MySQL 5.6 o 5.7 para la instalación. En este tutorial, usaremos MySQL 5.7, que se puede instalar desde el repositorio oficial de MySQL. Entonces, primero debemos agregar el nuevo repositorio MySQL.
Descargue y agregue el nuevo repositorio de MySQL para la instalación de MySQL 5.7.
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
Ahora instale MySQL 5.7 desde el repositorio de MySQL con el siguiente comando yum.
yum install mysql-community-server
Cuando se complete la instalación, inicie mysql y agréguelo para que comience en el momento del arranque.
systemctl start mysqld
systemctl enable mysqld
MySQL 5.7 se ha instalado con una contraseña raíz predeterminada, se almacena en el archivo mysqld.log. Use el comando grep para ver la contraseña predeterminada para MySQL 5.7. Ejecute el siguiente comando.
grep 'temporary' /var/log/mysqld.log
Ahora que ve la contraseña raíz actual de MySQL, debe cambiar la contraseña predeterminada.
Conéctese al shell mysql con el usuario root y la contraseña predeterminada.
mysql -u root -p
TYPE DEFAULT PASSWORD
Cambie la contraseña raíz predeterminada con la consulta a continuación. Usaré la nueva contraseña '[email protected]' aquí. Elija una contraseña segura.
ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]';
flush privileges;
Se ha cambiado la contraseña raíz predeterminada de MySQL. A continuación, debemos crear un nuevo usuario y una nueva base de datos para la instalación de Magento.
Crearemos una nueva base de datos llamada 'magentodb' y un nuevo usuario 'magentouser' con contraseña '[email protected]'. Luego otorgue todos los privilegios de la base de datos al nuevo usuario. Ejecute la consulta mysql a continuación.
create database magentodb;
create user [email protected] identified by '[email protected]';
grant all privileges on magentodb.* to [email protected] identified by '[email protected]';
flush privileges;
La instalación y configuración de MySQL 5.7 ha finalizado y se ha creado una base de datos para la instalación de Magento.
Paso 4 Instalar y configurar Magento
En este paso, comenzaremos a instalar y configurar Magento. Para el directorio raíz web, usaremos el directorio '/var/www/magento2'. Necesitamos el compositor PHP para la instalación del paquete Magento.
Instalar PHP Composer
Usaremos Composer para la instalación de dependencias del paquete PHP. Instale Composer con el siguiente comando curl.
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
Cuando se complete la instalación, puede verificar la versión del compositor como se muestra a continuación.
composer -v
Se ha instalado PHP Composer.
Descargar y Extraer Magento
Vaya al directorio '/var/www' y descargue el código de Magento con el comando wget.
cd /var/www/
wget https://github.com/magento/magento2/archive/2.1.zip
Instalar descomprimir con yum.
yum -y install unzip
Extraiga el código de Magento y cambie el nombre del directorio a directorio 'magento2'.
unzip 2.1.zip
mv magento2-2.1 magento2
Instalar Dependencias de PHP
Vaya al directorio magento2 e instale todas las dependencias de Magento con el comando composer.
cd magento2
composer install -v
Espere a que finalice la instalación de la dependencia de PHP.
Configurar el host virtual de Magento
Vaya al directorio Nginx y cree un nuevo archivo de configuración de host virtual llamado 'magento.conf' en el directorio 'conf.d'.
cd /etc/nginx/
vim conf.d/magento.conf
Pegue la configuración del host virtual a continuación.
upstream fastcgi_backend {
server unix:/run/php/php-fpm.sock;
}
server {
listen 80;
server_name magento.hakase-labs.com;
set $MAGE_ROOT /var/www/magento2;
set $MAGE_MODE developer;
include /var/www/magento2/nginx.conf.sample;
}
Guardar y salir.
Ahora pruebe la configuración. Cuando no haya ningún error, reinicie el servicio Nginx.
nginx -t
systemctl restart nginx
Instalar Magento 2.1
Vaya al directorio magento2 para instalar Magento en la línea de comandos.
cd /var/www/magento2
Ejecute el siguiente comando, asegúrese de tener la configuración correcta. Los valores que debe cambiar usted se explican a continuación.
bin/magento setup:install --backend-frontname="adminlogin" \
--key="biY8vdWx4w8KV5Q59380Fejy36l6ssUb" \
--db-host="localhost" \
--db-name="magentodb" \
--db-user="magentouser" \
--db-password="[email protected]" \
--language="en_US" \
--currency="USD" \
--timezone="America/New_York" \
--use-rewrites=1 \
--use-secure=0 \
--base-url="http://magento.hakase-labs.com" \
--base-url-secure="https://magento.hakase-labs.com" \
--admin-user=adminuser \
[email protected] \
[email protected] \
--admin-firstname=admin \
--admin-lastname=user \
--cleanup-database
Cambiar valor para:
- --backend-frontname:página de inicio de sesión del administrador de Magento "adminlogin"
- --key:genera tu propia clave
- --db-host:host local de la base de datos
- --db-name:nombre de la base de datos 'magentodb'
- --db-user:usuario de la base de datos 'magentouser'
- --db-password:contraseña de la base de datos '[email protected]'
- --base-url:URL de Magento
- --admin-user:Su usuario administrador
- --admin-password:Su contraseña de administrador de Magento
- --admin-email:Su dirección de correo electrónico
Cuando no tenga ningún error en el comando, verá los resultados a continuación.
Magento 2.1 está instalado. Ejecute el siguiente comando para cambiar el permiso para el directorio etc y cambie el propietario del directorio magento2 al usuario 'nginx'.
chmod 700 /var/www/magento2/app/etc
chown -R nginx:nginx /var/www/magento2
Configurar Magento Cron
Este cronjob es necesario para el indexador de Magento. Cree un nuevo cronjob como usuario 'nginx' (porque magento se ejecuta bajo el usuario y grupo nginx).
crontab -u nginx -e
Pegue la configuración a continuación.
* * * * * /usr/bin/php /var/www/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento2/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/magento2/update/cron.php >> /var/www/magento2/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/magento2/bin/magento setup:cron:run >> /var/www/magento2/var/log/setup.cron.log
Guardar y salir.
Paso 5:configurar SELinux y Firewalld
En este tutorial, dejaremos SELinux en modo 'Aplicar'. Ejecute los siguientes comandos para comprobar el estado de SELinux.
sestatus
SELinux está en modo 'Aplicar'.
Instale la herramienta de administración de SELinux 'policycoreutils-python' con el siguiente comando yum.
yum -y install policycoreutils-python
Vaya al directorio '/var/www/'.
cd /var/www/
Ejecute los siguientes comandos para cambiar el contexto de seguridad de los archivos y directorios de Magento.
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/app/etc(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/var(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/media(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/static(/.*)?'
restorecon -Rv '/var/www/magento2/'
La configuración de SELinux está hecha. Ahora necesitamos configurar firewalld.
Instale el paquete firewalld si aún no lo tiene en su servidor.
yum -y install firewalld
Inicie el firewall y agregue firewalld para comenzar en el momento del arranque.
systemctl start firewalld
systemctl enable firewalld
Abra los puertos para HTTP y HTTPS para que podamos acceder a la URL de Magento desde un navegador web.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Vea los puertos abiertos para servicios con el siguiente comando.
firewall-cmd --list-all
HTTP y HTTPS están listos para las conexiones.
Paso 6 - Prueba
Abra su navegador web y luego busque la URL de Magento. El mío es:
magento.hakase-labs.com
Y verá la página de inicio predeterminada de Magento.
A continuación, inicie sesión en el panel de administración abriendo la URL de inicio de sesión del administrador.
magento.hakase-labs.com/adminlogin
Inicie sesión con su usuario y contraseña de administrador.
Panel de administración de Magento.
Magento 2.1 se instaló correctamente con Nginx, PHP-FPM7 y MySQL 5.7 en un servidor CentOS 7.