Como instalar o Magento 2.1 no CentOS 7
Este tutorial existe para estas versões do sistema operacional
- CentOS 8
- CentOS 7
Nesta página
- Etapa 1 - Instalar o Nginx
- Etapa 2 - Instalar e configurar o PHP-FPM
- Etapa 3 - Instalar servidor MySQL 5.7
- Etapa 4 Instalar e configurar o Magento
- Etapa 5 - Configurar SELinux e Firewalld
- Etapa 6 - Teste
- Referência
Magento é uma loja de código aberto (software de comércio eletrônico) e sistema de gerenciamento de conteúdo para sites de comércio eletrônico baseado no PHP Zend Framework. Magento aplica as convenções de programação orientada a objetos e arquitetura MVC (Model-View-Controller) e usa MySQL/MariaDB como banco de dados. O software desenvolvido foi iniciado em 2008 pela Varien Inc. Nos últimos anos, o Magento tornou-se uma plataforma confiável para software de comércio eletrônico que impulsiona negócios online em todo o mundo.
Neste tutorial, guiarei você pela instalação do Magento 2.1. Instalaremos Magento 2.1 com Nginx e Php7.0-fpm e MySQL como banco de dados. Para isso, usarei um servidor CentOS 7 com SELinux habilitado.
Passo 1 - Instale o Nginx
Nesta etapa, instalaremos o Nginx a partir do repositório epel. O Epel não está disponível por padrão, então precisamos instalar o repositório epel antes de instalar o Nginx.
Instale o repositório epel com este comando yum.
yum -y install epel-release
Agora podemos instalar o Nginx a partir do repositório epel.
yum -y install nginx
Após a conclusão da instalação, inicie o Nginx e adicione-o para iniciar no momento da inicialização.
systemctl start nginx
systemctl enable nginx
O Nginx é iniciado na porta 80, você pode verificar isso com o comando netstat abaixo.
netstat -plntu
Caso você veja o comando de resultado não encontrado, você pode instalar net-tools como este.
yum -y install net-tools
Etapa 2 - Instalar e configurar o PHP-FPM
Neste tutorial, usaremos o PHP-FPM 7 para a instalação do Magento. Usarei pacotes PHP 7 do repositório Webtatic.
Baixe e adicione um novo repositório webtatic ao sistema.
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Agora execute o comando abaixo para instalar o PHP-FPM7 com todos os pacotes e extensões necessários para a instalação do 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
Quando uma instalação do PHP-FPM7 estiver concluída, precisamos configurá-la. Vamos configurar o arquivo php.ini e o arquivo www.conf de configuração do php-fpm.
Edite php.ini com o vim.
vim /etc/php.ini
Descomente a linha cgi.fix_pathinfo 762 e altere o valor para 0.
cgi.fix_pathinfo=0
Configure o limite de memória, o tempo máximo de execução e ative a compactação de saída zlib, certifique-se de definir os valores conforme mostrado abaixo.
memory_limit = 512M
max_execution_time = 1800
zlib.output_compression = On
Remova o comentário do diretório do caminho da sessão e altere o diretório conforme abaixo.
session.save_path = "/var/lib/php/session"
Salvar e sair.
Em seguida, edite o arquivo de configuração php-fpm www.conf com o comando vim.
vim /etc/php-fpm.d/www.conf
O PHP-FPM7 será executado sob o usuário e grupo nginx, altere o valor para nginx para as linhas de usuário e grupo.
user = nginx
group = nginx
Executaremos o php-fpm em um arquivo de soquete, não em uma porta do servidor. Altere o valor da linha de escuta para o caminho do arquivo de soquete.
listen = /var/run/php/php-fpm.sock
O arquivo de soquete precisa pertencer ao usuário e grupo nginx, remova o comentário das linhas de escuta e altere os valores conforme mostrado abaixo.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Finalmente, remova o comentário das linhas 366-370 do ambiente PHP-FPM.
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Salvar e sair.
Em seguida, crie um novo diretório para o caminho da sessão e o local do arquivo php sock. Em seguida, altere o proprietário para o usuário e grupo nginx.
Crie um novo diretório para o caminho da sessão.
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
Crie um novo diretório para a localização do arquivo de soquete php-fpm.
mkdir -p /run/php/
chown -R nginx:nginx /run/php/
A configuração do PHP-FPM7 está concluída, inicie o daemon agora e habilite-o para iniciar no momento da inicialização com o comando systemctl abaixo.
systemctl start php-fpm
systemctl enable php-fpm
Quando não houver erros, você pode usar o comando abaixo para verificar se o php-fpm está sendo executado no arquivo de soquete.
netstat -pl | grep php-fpm.sock
Etapa 3 - Instale o servidor MySQL 5.7
O Magento 2.1 requer uma versão atual do MySQL, você pode usar o MySQL 5.6 ou 5.7 para a instalação. Neste tutorial, usaremos o MySQL 5.7 que pode ser instalado a partir do repositório oficial do MySQL. Portanto, precisamos primeiro adicionar o novo repositório MySQL.
Baixe e adicione o novo repositório MySQL para a instalação do MySQL 5.7.
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
Agora instale o MySQL 5.7 do repositório MySQL com o comando yum abaixo.
yum install mysql-community-server
Quando a instalação estiver concluída, inicie o mysql e adicione-o para iniciar no momento da inicialização.
systemctl start mysqld
systemctl enable mysqld
O MySQL 5.7 foi instalado com uma senha root padrão, ela está armazenada no arquivo mysqld.log. Use o comando grep para ver a senha padrão do MySQL 5.7. Execute o comando abaixo.
grep 'temporary' /var/log/mysqld.log
Agora que você vê a senha root atual do MySQL, você deve alterar a senha padrão.
Conecte-se ao shell mysql com o usuário root e a senha padrão.
mysql -u root -p
TYPE DEFAULT PASSWORD
Altere a senha root padrão com a consulta abaixo. Usarei a nova senha [protegida por e-mail] aqui. Escolha uma senha segura.
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
flush privileges;
A senha root padrão do MySQL foi alterada. Em seguida, precisamos criar um novo usuário e um novo banco de dados para a instalação do Magento.
Criaremos um novo banco de dados chamado magentodb e um novo usuário magentouser com senha [protegido por e-mail]. Em seguida, conceda todos os privilégios do banco de dados ao novo usuário. Execute a consulta mysql abaixo.
create database magentodb;
create user ';
flush privileges;
A instalação e configuração do MySQL 5.7 está concluída e um banco de dados para a instalação do Magento foi criado.
Etapa 4 Instalar e configurar o Magento
Nesta etapa, vamos começar a instalar e configurar o Magento. Para o diretório raiz da web, usaremos o diretório /var/www/magento2. Precisamos do compositor PHP para a instalação do pacote Magento.
Instalar PHP Composer
Usaremos o Composer para a instalação da dependência do pacote PHP. Instale o composer com o comando curl abaixo.
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
Quando a instalação estiver concluída, você pode verificar a versão do compositor conforme mostrado abaixo.
composer -v
O PHP Composer foi instalado.
Baixe e extraia o Magento
Vá para o diretório /var/www e baixe o código Magento com o comando wget.
cd /var/www/
wget https://github.com/magento/magento2/archive/2.1.zip
Instale descompacte com yum.
yum -y install unzip
Extraia o código Magento e renomeie o diretório para o diretório magento2.
unzip 2.1.zip
mv magento2-2.1 magento2
Instalar dependências do PHP
Vá para o diretório magento2 e instale todas as dependências do Magento com o comando composer.
cd magento2
composer install -v
Aguarde a conclusão da instalação do PHP Dependency.
Configurar Host Virtual Magento
Vá para o diretório Nginx e crie um novo arquivo de configuração de host virtual chamado magento.conf no diretório conf.d.
cd /etc/nginx/
vim conf.d/magento.conf
Cole a configuração do host virtual abaixo.
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;
}
Salvar e sair.
Agora teste a configuração. Quando não houver erro, reinicie o serviço Nginx.
nginx -t
systemctl restart nginx
Instale o Magento 2.1
Vá para o diretório magento2 para instalar o Magento na linha de comando.
cd /var/www/magento2
Execute o comando abaixo, certifique-se de ter a configuração correta. Os valores que precisam ser alterados por você são explicados abaixo.
bin/magento setup:install --backend-frontname="adminlogin" \
--key="biY8vdWx4w8KV5Q59380Fejy36l6ssUb" \
--db-host="localhost" \
--db-name="magentodb" \
--db-user="magentouser" \
--db-password=" \
--admin-firstname=admin \
--admin-lastname=user \
--cleanup-database
Alterar valor para:
- --backend-frontname: página de login do administrador do Magento \adminlogin\
- --key: gere sua própria chave
- --db-host: Host localhost do banco de dados
- --db-name: nome do banco de dados magentodb
- --db-user: usuário do banco de dados magentouser
- --db-password: senha do banco de dados [protegido por e-mail]
- --base-url: URL do Magento
- --admin-user: Seu usuário administrador
- --admin-password: Sua senha de administrador do Magento
- --admin-email: Seu endereço de e-mail
Quando não tiver nenhum erro no comando, você verá os resultados abaixo.
O Magento 2.1 está instalado. Execute o comando abaixo para alterar a permissão para o diretório etc e altere o proprietário do diretório magento2 para o usuário nginx.
chmod 700 /var/www/magento2/app/etc
chown -R nginx:nginx /var/www/magento2
Configurar Magento Cron
Este cronjob é necessário para o indexador Magento. Crie um novo cronjob como usuário nginx (porque o magento está sendo executado sob o usuário e grupo nginx).
crontab -u nginx -e
Cole a configuração abaixo.
* * * * * /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
Salvar e sair.
Etapa 5 - Configurar o SELinux e o Firewalld
Neste tutorial, deixaremos o SELinux no modo Enforcing. Execute os comandos abaixo para verificar o status do SELinux.
sestatus
O SELinux está no modo Enforcing.
Instale a ferramenta de gerenciamento SELinux policycoreutils-python com o comando yum abaixo.
yum -y install policycoreutils-python
Vá para o diretório /var/www/.
cd /var/www/
Execute os comandos abaixo para alterar o contexto de segurança dos arquivos e diretórios do 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/'
A configuração do SELinux está concluída. Agora precisamos configurar o firewalld.
Instale o pacote firewalld se você ainda não o tiver em seu servidor.
yum -y install firewalld
Inicie o firewall e adicione firewalld para iniciar no momento da inicialização.
systemctl start firewalld
systemctl enable firewalld
Abra as portas para HTTP e HTTPS para que possamos acessar o URL do Magento a partir de um navegador da web.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Veja as portas abertas para serviços com o comando abaixo.
firewall-cmd --list-all
HTTP e HTTPS estão prontos para conexões.
Passo 6 - Teste
Abra seu navegador da Web e navegue pelo URL do Magento. O meu é:
magento.hakase-labs.com
E você verá a página inicial padrão do Magento.
Em seguida, faça login no painel do administrador abrindo o URL de login do administrador.
magento.hakase-labs.com/adminlogin
Entre com seu usuário administrador e senha.
Painel administrativo do Magento.
Magento 2.1 foi instalado com sucesso com Nginx, PHP-FPM7 e MySQL 5.7 em um servidor CentOS 7.
Referência
- https://linux-console.net/tutorial/how-to-install-magento-with-nginx-on-ubuntu/