Pesquisa de site

Como instalar o Magento eCommerce no Ubuntu 22.04 com Nginx e Elasticsearch


Magento é uma plataforma de comércio eletrônico de código aberto escrita em PHP. Foi adquirido pela Adobe em 2018 e recebeu o nome de Adobe eCommerce. Também é oferecido como um produto comercial e baseado em nuvem. Você pode usar o Magento para criar sites de compras profissionais de alta capacidade. Ele oferece ambos - um modo de armazenamento único e um modo de armazenamento múltiplo. Ele vem com muitos módulos para estender sua funcionalidade.

Neste tutorial, instalaremos a edição da comunidade de código aberto Magento. Ele oferece todas as funcionalidades que você precisa para abrir uma loja online profissional. Também instalaremos o Elasticsearch para pesquisar no catálogo de produtos, o Redis para a sessão e o cache de arquivos e servi-lo-emos usando o servidor Nginx.

Pré-requisitos

    Um servidor rodando Ubuntu 22.04 com no mínimo 2 GB de RAM. Você pode precisar de mais RAM dependendo de seus requisitos.

    Um usuário não root com privilégios sudo.

    Um nome de domínio totalmente qualificado (FQDN) para o servidor, magento.example.com

    Certifique-se de que tudo esteja atualizado.

    $ sudo apt update
    $ sudo apt upgrade
    

    Poucos pacotes que seu sistema precisa.

    $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
    

    Alguns desses pacotes podem já estar instalados em seu sistema.

Passo 1 - Configurar Firewall

O primeiro passo é configurar o firewall. O Ubuntu vem com ufw (Firewall Descomplicado) por padrão.

Verifique se o firewall está em execução.

$ sudo ufw status

Você deve obter a seguinte saída.

Status: inactive

Permita a porta SSH para que o firewall não interrompa a conexão atual ao ativá-lo.

$ sudo ufw allow OpenSSH

Permita portas HTTP e HTTPS também.

$ sudo ufw allow http
$ sudo ufw allow https

Habilite o Firewall

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Verifique o status do firewall novamente.

$ sudo ufw status

Você deverá ver uma saída semelhante.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Passo 2 – Instale o PHP e suas extensões

O Ubuntu 22.04 vem com a versão PHP 8.1.2, que está um pouco desatualizada. Instalaremos a versão mais recente do PHP 8.2 usando o repositório PHP de Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

A seguir, instale o PHP e suas extensões exigidas pelo Magento.

$ sudo apt install php8.2-fpm php8.2-mysql php8.2-bcmath php8.2-xml php8.2-zip php8.2-curl php8.2-mbstring php8.2-gd php8.2-tidy php8.2-intl php8.2-cli php8.2-soap php8.2-xsl libsodium-dev libsodium23 libssl-dev libcurl14-openssl-dev

Verifique a instalação.

$ php --version
PHP 8.2.5 (cli) (built: Apr 14 2023 04:27:02) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.5, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.5, Copyright (c), by Zend Technologies

Passo 3 - Instalar o Compositor

Composer é uma ferramenta de gerenciamento de dependências para PHP e é necessária para instalação do Magento.

Execute os seguintes comandos para baixar o binário do Composer. Magento requer Composer 2.2 LTS, então modificamos o comando de acordo.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"

Instale o Composer movendo o binário para o diretório /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Verifique a instalação verificando sua versão.

$ composer --version
Composer version 2.2.21 2023-02-15 13:07:40

Passo 4 - Instale o MySQL

Ubuntu 22.04 vem com a versão mais recente do MySQL. Você pode instalá-lo com um único comando.

$ sudo apt install mysql-server

Verifique a versão do MySQL.

$ mysql --version
mysql  Ver 8.0.33-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))

Esta etapa é necessária para versões 8.0.28 e superiores do MySQL. Entre no shell do MySQL.

$ sudo mysql

Execute o seguinte comando para definir a senha do seu usuário root. Certifique-se de que haja uma combinação de números, letras maiúsculas, minúsculas e caracteres especiais.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Saia do shell.

mysql> exit

Execute o script de instalação segura do MySQL.

$ sudo mysql_secure_installation

Primeiro, será solicitada sua senha de root. Digite-o. Em seguida, você será solicitado a instalar o componente Validar senha. Ele verifica a força das senhas usadas no MySQL. Pressione Y para instalá-lo. A seguir, você será solicitado a definir o nível da política de validação de senha. Escolha 2 porque é o mais forte.

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Estimated strength of the password: 100

Em seguida, digite N para recusar a alteração de sua senha root. Além disso, insira Y para remover usuários anônimos, proibir logins root remotos, remover o banco de dados de teste e recarregar as tabelas de privilégios.

Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Passo 5 – Configurar MySQL

Faça login no shell do MySQL. Digite sua senha root quando solicitado.

$ sudo mysql -u root -p

Crie um banco de dados para Magento.

mysql> CREATE DATABASE magento;

Crie uma conta de usuário SQL.

mysql> CREATE USER 'magentouser'@'localhost' IDENTIFIED BY 'Your_password2';

Conceda todos os privilégios no banco de dados ao usuário.

mysql> GRANT ALL PRIVILEGES ON magento.* TO 'magentouser'@'localhost';

Liberar privilégios de usuário.

mysql> FLUSH PRIVILEGES;

Saia do shell.

mysql> exit

Etapa 6 - Instale o Nginx

O Ubuntu 22.04 vem com uma versão mais antiga do Nginx. Para instalar a versão mais recente, você precisa baixar o repositório oficial do Nginx.

Importe a chave de assinatura do Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Adicione o repositório para a versão estável do Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Atualize os repositórios do sistema.

$ sudo apt update

Instale o Nginx.

$ sudo apt install nginx

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.24.0

Inicie o servidor Nginx.

$ sudo systemctl start nginx

Passo 7 – Instalar SSL

Precisamos instalar o Certbot para gerar o certificado SSL. Você pode instalar o Certbot usando o repositório do Ubuntu ou obter a versão mais recente usando a ferramenta Snapd. Estaremos usando a versão Snapd.

Ubuntu 22.04 vem com Snapd instalado por padrão. Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada.

$ sudo snap install core && sudo snap refresh core

Instale o Certbot.

$ sudo snap install --classic certbot

Use o comando a seguir para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Execute o seguinte comando para gerar um certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email  -d magento.example.com

O comando acima fará download de um certificado para o diretório /etc/letsencrypt/live/magento.example.com em seu servidor.

Gere um certificado do grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Verifique o serviço de agendamento de renovação do Certbot.

$ sudo systemctl list-timers

Você encontrará snap.certbot.renew.service como um dos serviços programados para execução.

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Sun 2023-02-26 06:32:00 UTC 9h left       Sat 2023-02-25 18:04:05 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Sun 2023-02-26 06:43:20 UTC 9h left       Sat 2023-02-25 10:49:23 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Sun 2023-02-26 09:00:06 UTC 11h left      Sat 2023-02-25 20:58:06 UTC 5min ago      apt-daily.timer           apt-daily.service

Faça uma simulação do processo para verificar se a renovação do SSL está funcionando bem.

$ sudo certbot renew --dry-run

Se você não encontrar erros, está tudo pronto. Seu certificado será renovado automaticamente.

Passo 8 – Instale o Elasticsearch

Elasticsearch é usado pelo Magento para pesquisas de produtos. Instalaremos o Elasticsearch 7.x usando seu repositório oficial por ser a versão compatível com Magento.

Importe a chave GPG do Elasticsearch.

$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

Adicione o repositório Elasticsearch.

$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

Atualize a lista de repositórios do sistema.

$ sudo apt update

Instale o Elasticsearch.

$ sudo apt install elasticsearch

Elasticsearch usa muita memória. Você precisa limitar seu uso dependendo do tamanho do servidor. Crie o arquivo /etc/elasticsearch/jvm.options.d/memory.options e abra-o para edição.

$ sudo nano /etc/elasticsearch/jvm.options.d/memory.options

Cole o seguinte código nele.

-Xms1g
-Xmx1g

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado. Isso configura o Elasticsearch para usar 1 GB de RAM. Você pode usar qualquer valor conforme necessário.

Inicie e ative o serviço.

$ sudo systemctl enable elasticsearch --now

Verifique se o Elasticsearch está funcionando.

$ curl http://localhost:9200

Você deverá ver a seguinte saída.

{
  "name" : "magento",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "6yks8tZ6T4GskIwWoXuSLA",
  "version" : {
    "number" : "7.17.10",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "fecd68e3150eda0c307ab9a9d7557f5d5fd71349",
    "build_date" : "2023-04-23T05:33:18.138275597Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Passo 9 – Instale o servidor Redis

Magento usa Redis para armazenamento de sessão e cache. É totalmente opcional e você pode usar o banco de dados para armazenamento de sessões. Mas Redis faz um trabalho melhor. A versão mais recente do Magento funciona com Redis 7.0. O Ubuntu vem com Redis 6.0, então usaremos o repositório Redis para instalação.

Importe a chave Redis GPG oficial.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

Adicione o repositório APT à sua lista de fontes.

$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

Atualize a lista de repositórios do sistema.

$ sudo apt update

Emita o seguinte comando para instalar o servidor Redis.

$ sudo apt install redis

Confirme a versão do Redis.

$ redis-server -v
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=3af367a78d5e21e9

Vamos verificar a conexão do serviço usando o seguinte comando.

$ redis-cli

Você será transferido para o shell Redis.

A primeira etapa é definir a senha do usuário padrão do Redis. Substitua Your_Redis_Password por uma senha forte de sua escolha. Certifique-se de prefixar a senha com o caractere >.

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Teste a autenticação Redis.

127.0.0.1:6379> AUTH Your_Redis_Password
OK

Faça ping no serviço.

127.0.0.1:6379> ping
PONG

Saia do serviço digitando exit.

Passo 10 - Baixe Magento

Crie um diretório raiz da web para Magento.

$ sudo mkdir /var/www/magento -p

Dê os direitos do diretório Magento ao usuário atual.

$ sudo chown $USER:$USER /var/www/magento/ -R

Mude para o diretório /var/www.

$ cd /var/www

Antes de prosseguirmos, você precisa das chaves de autenticação exigidas pelo repositório Magento. Visite o site https://account.magento.com/ e você verá a seguinte página solicitando que você faça login usando sua Adobe ID.

Clique no botão Fazer login com Adobe ID para acessar a página seguinte.

Se você tiver uma Adobe ID, insira suas credenciais para continuar ou crie uma conta aqui. Depois de criar sua conta e fazer login, abra o URL https://marketplace.magento.com/customer/accessKeys/. Você também pode acessar esta página visitando seu perfil e clicando no link Chaves de acesso.

Clique no botão Criar uma nova chave de acesso para criar sua chave de autenticação. Dê um nome à sua chave para identificação.

Anote as chaves pública e privada para a próxima etapa.

Crie o projeto Magento.

$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento

Será solicitado o nome de usuário e a senha do repositório. Use a chave pública como nome de usuário e a chave privada como senha. Você será perguntado se deseja armazenar as credenciais no diretório de configuração do Composer. Digite y para fazer isso.

Creating a "magento/project-community-edition" project at "./magento"
    Authentication required (repo.magento.com):
      Username: 53211xxxxxxxxxxxxxxxxxxxxxxxxxxx
      Password:
Do you want to store credentials for repo.magento.com in /home/navjot/.config/composer/auth.json ? [Yn] y
Installing magento/project-community-edition (2.4.6)
  - Downloading magento/project-community-edition (2.4.6)
  - Installing magento/project-community-edition (2.4.6): Extracting archive
Created project in /var/www/magento
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 564 installs, 0 updates, 0 removals
  - Locking 2tvenom/cborencode (1.0.2)
  - Locking adobe-commerce/adobe-ims-metapackage (2.2.0)
...............................................

Execute os seguintes comandos para definir as permissões do arquivo e tornar o binário Magento executável. Além disso, defina o proprietário do diretório Magento como o usuário Nginx para que ele possa acessar o site.

$ cd /var/www/magento/
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
$ sudo chmod u+x bin/magento

Passo 11 - Instale o Magento

Certifique-se de estar no diretório Magento.

$ cd /var/www/magento

Execute o seguinte comando para instalar o Magento.

$ bin/magento setup:install \
--base-url=http://magento.example.com \
--use-secure=1 \
--base-url-secure=https://magento.example.com \
--use-secure-admin=1 \
--db-host=localhost \
--db-name=magento \
--db-user=magentouser \
--db-password=Your_password2 \
--admin-firstname=Navjot \
--admin-lastname=Singh \
[email  \
--admin-user=navjot \
--admin-password=admin_password \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--elasticsearch-host=http://127.0.0.1 \
--elasticsearch-port=9200 \
--session-save=redis \
--session-save-redis-db=0 \
--session-save-redis-password=redis_password \
--cache-backend=redis \
--cache-backend-redis-db=2 \
--cache-backend-redis-password=redis_password \
--page-cache=redis \
--page-cache-redis-db=4 \
--page-cache-redis-password=redis_password

Assim que o processo for concluído, você obterá um resultado semelhante.

.......
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_19uadb
Nothing to import.

Anote o URI do administrador que você precisará posteriormente para acessar o painel de administração.

Crie tarefas cron Magento.

$ php bin/magento cron:install

Verifique o cron job.

$ crontab -l

Você deverá ver a seguinte saída.

#~ MAGENTO START d1957f62aa710cc367525c9ec68dd7456d4311756b5aa37d2143c4a98b25318c
* * * * * /usr/bin/php8.2 /var/www/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/magento/var/log/magento.cron.log
#~ MAGENTO END d1957f62aa710cc367525c9ec68dd7456d4311756b5aa37d2143c4a98b25318c

Passo 12 - Configurar PHP-FPM

Abra o arquivo /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Precisamos definir o usuário/grupo Unix de processos PHP como nginx. Encontre as linhas user=www-data e group=www-data no arquivo e altere-as para nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Encontre as linhas listen.owner=www-data e listen.group=www-data no arquivo e altere-as para nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Aumente o tempo de execução do PHP-FPM e PHP-CLI para 180 segundos.

$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/cli/php.ini

Aumente o limite de memória para PHP-FPM de 128 MB para 256 MB. Você pode aumentar o limite dependendo do tamanho e dos requisitos do seu servidor.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini

Por padrão, o Magento define o limite de tamanho de arquivo para a biblioteca de mídia como 2 MB. Execute os seguintes comandos para aumentar o limite de tamanho do arquivo para 25 MB.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 25M/g' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php/8.2/fpm/php.ini

Ative a compactação Zlib.

$ sudo sed -i 's/zlib.output_compression = Off/zlib.output_compression = On/g' /etc/php/8.2/fpm/php.ini

Reinicie o serviço PHP-FPM.

$ sudo systemctl restart php8.2-fpm

Mude o grupo do diretório de sessões PHP para Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Etapa 13 – Configurar o Nginx

Abra o arquivo /etc/nginx/nginx.conf para edição.

$ sudo nano /etc/nginx/nginx.conf

Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Crie e abra o arquivo /etc/nginx/conf.d/magento.conf para edição.

$ sudo nano /etc/nginx/conf.d/magento.conf

Cole o seguinte código nele.

upstream fastcgi_backend {
  server  unix:/run/php/php8.2-fpm.sock;
}

server {
  # Redirect any http requests to https
  listen 80;
  listen [::]:80;
  server_name magento.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name magento.example.com;

  set $MAGE_ROOT /var/www/magento;
  include /var/www/magento/nginx.conf.sample;
  client_max_body_size 25m;

  access_log /var/log/nginx/magento.access.log;
  error_log  /var/log/nginx/magento.error.log;

  # TLS configuration
  ssl_certificate /etc/letsencrypt/live/magento.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/magento.example.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/magento.example.com/chain.pem;
  ssl_protocols TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:50m;
  ssl_session_timeout 1d;

  # OCSP Stapling ---
  # fetch OCSP records from URL in ssl_certificate and cache them
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
}

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado quando terminar.

Magento vem com um modelo de configuração Nginx em /var/www/magento/nginx.conf.sample que incluímos em nossa configuração. A variável $MAGE_ROOT aponta para o diretório raiz da web Magento que definimos em nosso arquivo e é usado no arquivo de configuração de exemplo.

Verifique a sintaxe do arquivo de configuração Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicie o serviço Nginx.

$ sudo systemctl restart nginx

Abra o site Magento através da URL https://magento.example.com. Você deverá ver a seguinte página.

Se o CSS e o JS não carregarem para você, execute os comandos a seguir.

$ cd /var/www/magento
$ php bin/magento setup:static-content:deploy -f
$ php bin/magento indexer:reindex

Passo 14 – Desative a autenticação de dois fatores

Antes de acessar o painel de administração, precisamos desabilitar a autenticação de dois fatores que está habilitada por padrão. Magento tenta enviar e-mail via sendmail para habilitar a autenticação de dois fatores durante a instalação, mas como não configuramos isso, a única maneira de acessar o painel é desabilitando o recurso primeiro.

Se você configurou o sendmail em seu servidor para enviar e-mails, você pode pular esta etapa. Para desabilitar a autenticação de dois fatores, precisamos desabilitar dois módulos do Magento usando os seguintes comandos.

$ php /var/www/magento/bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth
$ php /var/www/magento/bin/magento module:disable Magento_TwoFactorAuth

Execute o seguinte comando para criar as classes.

$ php /var/www/magento/bin/magento setup:di:compile

Limpe o cache também.

$ php /var/www/magento/bin/magento c:c

Passo 15 – Acesse o Portal de Administração

Você precisará abrir o portal de administração usando o URI fornecido pelo script de instalação do Magento. Se de alguma forma você esqueceu de anotá-lo ou o perdeu, você pode recuperar o URI novamente usando o seguinte comando.

$ php /var/www/magento/bin/magento info:adminuri
Admin URI: /admin_19uadb

Abra a URL https://magento.example.com/admin_19uadb em seu navegador e você verá a seguinte tela.

Insira suas credenciais de administrador fornecidas durante a instalação e clique no botão Entrar para continuar. Você será saudado com a seguinte tela.

Você receberá um pop-up solicitando permissão para a Adobe coletar dados de uso. Clique no botão Não permitir para continuar.

A próxima etapa é configurar o SMTP para e-mails para que possamos reativar a autenticação de dois fatores. Visite o menu Lojas >> Configuração.

Expanda o Menu Avançado do lado esquerdo e clique na opção Sistemas para abrir a página de configurações de e-mail.

Desmarque Usar valor do sistema na frente das opções Transporte, Host e Porta. Clique no menu suspenso Transporte e selecione SMTP nele. Para nosso tutorial, estamos usando o Amazon SES como mailer.

Insira seu host SMTP, 587 como porta, nome de usuário e senha, defina Auth como LOGIN e defina SSL como TLS nos campos fornecidos. Clique no botão Salvar configuração quando terminar. Agora que definimos as configurações de e-mail, a próxima etapa é configurar os IDs de e-mail da loja para que possamos testá-los.

Role para cima e expanda o menu Geral na mesma página e selecione a opção Armazenar endereços de e-mail.

Desmarque os campos padrão de e-mail do remetente e insira os IDs de e-mail da sua loja. Clique no botão Salvar configuração quando terminar. Da mesma forma, abra a tela Contatos e faça as mesmas alterações e clique no botão Salvar configuração para finalizar.

Alterar as opções do administrador pode afetar o cache e você receberá um aviso. Execute o seguinte comando para limpar o cache manualmente.

$ php /var/www/magento/bin/magento c:c

Para testar os e-mails, visite a página da loja e abra a página Fale Conosco. Você pode usar o URL https://magento.example.com/contact/ diretamente para acessá-lo. Envie uma mensagem de teste e clique no botão Enviar. Você deverá receber um e-mail semelhante.

Passo 16 – Habilitar e configurar a autenticação de dois fatores

Agora que habilitamos o mailer SMTP, é hora de reativar a autenticação de dois fatores. Execute os comandos a seguir para habilitar a autenticação de dois fatores.

$ php /var/www/magento/bin/magento module:enable Magento_AdminAdobeImsTwoFactorAuth
$ php /var/www/magento/bin/magento module:enable Magento_TwoFactorAuth

Atualize a configuração dos módulos.

$ php /var/www/magento/bin/magento setup:upgrade

Execute o seguinte comando para criar as classes.

$ php /var/www/magento/bin/magento setup:di:compile

Limpe o cache também.

$ php /var/www/magento/bin/magento c:c

Se você não conseguir acessar a área de administração, execute também os seguintes comandos.

Forçar a implantação do conteúdo estático.

$ php /var/www/magento/bin/magento setup:static-content:Deploy -f

Defina as permissões do arquivo.

$ cd /var/www/magento
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .

Visite o portal do administrador e você verá a seguinte tela.

Estaremos usando o método Google Authenticator. Você pode usar uma chave de hardware, se tiver. O método Google Authenticator funciona com qualquer aplicativo TOTP, incluindo Authy, 1Password, Bitwarden, Microsoft Authenticator, etc. Clique no botão Aplicar para continuar.

Na próxima página, você receberá o código QR para digitalizar com seu aplicativo 2FA. Insira os detalhes em seu aplicativo e copie o código gerado no campo Código do autenticador. Clique no botão Confirmar para prosseguir para o painel de administração.

Conclusão

Isso conclui nosso tutorial sobre como instalar o site de comércio eletrônico Magento em um servidor Ubuntu 22.04 com servidor Nginx e Elasticsearch. Se você tiver alguma dúvida, poste-a nos comentários abaixo.

Artigos relacionados: