Pesquisa de site

Como instalar o Magento eCommerce Suite no Rocky Linux 9 com Elasticsearch


Nesta página

  1. Pré-requisitos
  2. Passo 1 - Configurar Firewall
  3. Passo 2 – Instale o PHP e suas extensões
  4. Passo 3 - Instalar o Compositor
  5. Passo 4 - Instale o MariaDB
  6. Passo 5 - Configurar MariaDB
  7. Etapa 6 - Instale o Nginx
  8. Passo 7 – Instalar SSL
  9. Passo 8 – Instale o Elasticsearch
  10. Passo 9 – Instale o servidor Redis
  11. Passo 10 - Baixe Magento
  12. Passo 11 - Instale o Magento
  13. Passo 12 - Configurar PHP-FPM
  14. Passo 13 - Configurar o SELinux
  15. Etapa 14 – Configurar o Nginx
  16. Passo 15 – Desative a autenticação de dois fatores
  17. Passo 16 – Acesse o Portal de Administração
  18. Passo 17 - Habilitar e configurar a autenticação de dois fatores
  19. Conclusão

Magento é uma plataforma de comércio eletrônico de código aberto escrita em PHP. Foi adquirido pela Adobe em 2018. 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, no Redis para a sessão e no cache de arquivos, e servi-lo usando o servidor Nginx.

Pré-requisitos

    Um servidor rodando Rocky Linux 9 com no mínimo 2 GB de RAM. Você pode precisar de mais RAM, dependendo dos 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 dnf update
    

    Poucos pacotes que seu sistema precisa.

    $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
    

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

Passo 1 - Configurar Firewall

O primeiro passo é configurar o firewall. Rocky Linux usa Firewalld Firewall. Verifique o status do firewall.

$ sudo firewall-cmd --state
running

O firewall funciona com zonas diferentes, e a zona pública é a zona padrão que usaremos. Liste todos os serviços e portas ativos no firewall.

$ sudo firewall-cmd --permanent --list-services

Deve mostrar a seguinte saída.

cockpit dhcpv6-client ssh

Permitir portas HTTP e HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Verifique novamente o status do firewall.

$ sudo firewall-cmd --permanent --list-services

Você deverá ver uma saída semelhante.

cockpit dhcpv6-client http https ssh

Recarregue o firewall para ativar as alterações.

$ sudo firewall-cmd --reload

Passo 2 – Instale o PHP e suas extensões

Rocky Linux 9 vem com PHP 8.1 por padrão. Para ficar sempre atualizado com a versão mais recente do PHP ou se quiser instalar várias versões do PHP, precisamos usar o repositório REMI.

O primeiro passo é pegar o repositório Epel.

$ sudo dnf install epel-release -y

Em seguida, instale o repositório Remi.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Verifique os fluxos PHP disponíveis.

$ dnf module list php -y
Name    Stream              Profiles                                      Summary
php     8.1                 common [d], devel, minimal                    PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP scripting language
php     remi-8.0            common [d], devel, minimal                    PHP scripting language
php     remi-8.1            common [d], devel, minimal                    PHP scripting language
php     remi-8.2            common [d], devel, minimal                    PHP scripting language
php     remi-8.3            common [d], devel, minimal                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

A versão padrão é 8.1. No momento em que este tutorial foi escrito, Magento é compatível com PHP 8.2. Portanto, habilite o repositório PHP 8.2 do Remi.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

Você pode instalá-lo e as extensões exigidas pelo Magento executando o seguinte comando.

$ sudo dnf install php-fpm php-cli php-mysql php-mbstring php-xml php-gd php-bcmath php-zip php-curl php-tidy php-intl php-soap php-opcache php-xsl php-sodium

Verifique a instalação.

$ php --version
PHP 8.2.15 (cli) (built: Jan 16 2024 12:19:32) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.15, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.15, 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.22 2023-09-29 10:53:45

Passo 4 - Instale o MariaDB

Rocky Linux 9 vem com uma versão mais antiga do MariaDB. Portanto, utilizaremos o repositório do MariaDB para a instalação. No momento em que escrevemos este tutorial, Magento suporta MariaDB 10.6, que é o que iremos instalar.

Importe a chave GPG do MariaDB.

$ sudo rpm --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY

Crie e abra o arquivo /etc/yum.repos.d/mariadb.repo para edição.

$ sudo nano /etc/yum.repos.d/mariadb.repo

Cole o seguinte código nele.

[mariadb]
name = MariaDB
baseurl = https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch
gpgkey= https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

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

$ sudo dnf install MariaDB-server

Verifique a versão do MySQL.

$ mysql --version
mysql  Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64) using  EditLine wrapper

Habilite e inicie o serviço MariaDB.

$ sudo systemctl enable mariadb --now

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

$ sudo mariadb-secure-installation

Será solicitada a senha do root. Pressione Enter porque não definimos nenhuma senha para isso.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):

A seguir, você será perguntado se deseja mudar para o método de autenticação de soquete Unix. O plugin unix_socket permite que você use as credenciais do seu sistema operacional para se conectar ao servidor MariaDB. Como você já possui uma conta root protegida, digite n para continuar.

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n

Em seguida, você será perguntado se deseja alterar sua senha root. Digite Y para prosseguir e alterar sua senha root para algo forte e seguro.

 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

A seguir, serão feitas algumas perguntas para melhorar a segurança do MariaDB. Digite 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.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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? [Y/n] 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? [Y/n] y
 ... Success!

By default, MariaDB 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? [Y/n] 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? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Você pode entrar no shell MariaDB digitando sudo mysql ou sudo mariadb na linha de comando.

Passo 5 - Configurar MariaDB

Faça login no shell MariaDB.

$ sudo mariadb

Crie um banco de dados para Magento.

MariaDB > CREATE DATABASE magento;

Crie uma conta de usuário SQL.

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

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

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

Liberar privilégios de usuário.

MariaDB > FLUSH PRIVILEGES;

Saia do shell.

MariaDB > exit

Etapa 6 - Instale o Nginx

Rocky Linux 9 vem com uma versão mais antiga do Nginx. Você precisa usar o repositório oficial Nginx para instalar a versão mais recente.

Crie e abra o arquivo /etc/yum.repos.d/nginx.repo para edição.

$ sudo nano /etc/yum.repos.d/nginx.repo

Cole o seguinte código nele.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Quando terminar, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Estaremos instalando a linha principal do Nginx, então habilite o pacote para ela.

$ sudo dnf config-manager --enable nginx-mainline

Instale o Nginx.

$ sudo dnf install nginx -y

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.25.3

Habilite e inicie o serviço do servidor Nginx.

$ sudo systemctl enable nginx --now

Verifique o status do serviço.

? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
    Drop-In: /etc/systemd/system/nginx.service.d
             ??php-fpm.conf
     Active: active (running) since Fri 2024-01-26 06:46:17 UTC; 1s ago
       Docs: http://nginx.org/en/docs/
    Process: 19765 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 19767 (nginx)
      Tasks: 3 (limit: 12225)
     Memory: 3.1M
        CPU: 16ms
     CGroup: /system.slice/nginx.service
             ??19767 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??19768 "nginx: worker process"
             ??19769 "nginx: worker process"

Passo 7 – Instalar SSL

Precisamos instalar o Certbot para gerar o certificado SSL. Usaremos o instalador do pacote Snapd para isso. Como o Rocky Linux não vem com ele, instale o instalador Snapd. Requer o repositório EPEL (Extra Packages for Enterprise Linux) para funcionar. Mas como já o instalamos na etapa 3, podemos seguir em frente diretamente.

Instale o pacote Snapd.

$ sudo dnf install -y snapd

Habilite e inicie o serviço Snap.

$ sudo systemctl enable snapd --now

Instale o pacote principal do Snap e certifique-se de que sua versão do Snapd esteja atualizada.

$ sudo snap install core && sudo snap refresh core

Crie os links necessários para que o Snapd funcione.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

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

Verifique se o Certbot está funcionando corretamente.

$ certbot --version
certbot 2.8.0

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     
-------------------------------------------------------------------------------------------------------------------------------
Fri 2024-01-26 08:05:24 UTC 1h 1min left Fri 2024-01-26 06:35:00 UTC 29min ago dnf-makecache.timer          dnf-makecache.service
Fri 2024-01-26 14:20:42 UTC 7h left      Thu 2024-01-25 14:20:42 UTC 16h ago   systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2024-01-26 22:37:00 UTC 15h left     -                           -         snap.certbot.renew.timer     snap.certbot.renew.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 2.4.6 que é a última versão disponível. A página de requisitos também menciona o Elasticsearch 8.5, mas não funciona corretamente com o Magento.

Importe a chave GPG do Elasticsearch.

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Crie um arquivo chamado elasticsearch.repo no diretório /etc/yum.repos.d/ e abra-o para edição.

$ sudo nano /etc/yum.repos.d/elasticsearch.repo

Cole o seguinte código nele.

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Quando terminar, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Instale o Elasticsearch.

$ sudo dnf install --enablerepo=elasticsearch 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. Modifique os valores de acordo com o tamanho do seu servidor. O primeiro valor refere-se à memória inicial e o segundo refere-se à memória máxima disponível. Para 1 GB e mais, use o formato -Xms1g.

-Xms512m
-Xmx784m

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado. Isso configura o Elasticsearch para usar 1 GB de RAM. Modifique-o de acordo com seus requisitos e especificações do servidor.

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.example.com",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "saBfw0F_Tam6ayGjXr6pEA",
  "version" : {
    "number" : "7.17.17",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "aba4da413a368e296dfc64fb20897334d0340aa1",
    "build_date" : "2024-01-18T10:05:03.821431920Z",
    "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. Rocky Linux vem com Redis 6.0, então usaremos o repositório Remi para instalação.

Já instalamos o repositório Remi quando instalamos o PHP na etapa 2. Liste todos os módulos Redis disponíveis.

$ dnf module list redis
Name                               Stream           Profiles                   Summary                                                                  
redis                              7                common [d]                 Redis persistent key-value database                                    
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name                               Stream           Profiles                   Summary                             
redis                              remi-5.0         common [d]                 Redis persistent key-value database 
redis                              remi-6.0         common [d]                 Redis persistent key-value database 
redis                              remi-6.2         common [d]                 Redis persistent key-value database 
redis                              remi-7.0         common [d]                 Redis persistent key-value database 
redis                              remi-7.2         common [d]                 Redis persistent key-value database 

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Habilite o Redis 7.0.

$ sudo dnf module enable -y redis:remi-7.0

Emita o seguinte comando para instalar o servidor Redis.

$ sudo dnf install redis

Confirme a versão do Redis.

$ redis-server -v
Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=77c9855172eb54e9

Habilite e inicie o serviço Redis.

$ sudo systemctl enable redis --now

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/html/magento -p

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

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

Antes de prosseguirmos, você precisa das chaves de autenticação exigidas pelo repositório Magento. Visite o site https://commercemarketplace.adobe.com/, clique no link Entrar no canto superior direito 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://commercemarketplace.adobe.com/customer/accessKeys/. Você também pode acessar esta página visitando seu perfil (https://commercemarketplace.adobe.com/customer/account/) 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 arquivo ~/.config/composer/auth.json e abra-o para edição.

$ nano ~/.config/composer/auth.json

Cole o seguinte código nele. Use a chave pública para o nome de usuário e a chave privada para a senha.

{
"http-basic": {
        "repo.magento.com": {
                   "username": "<public_key>",
                   "password": "<private_key>"
              }

}
}

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

Mude para o diretório /var/www/html/magento.

$ cd /var/www/html/magento

Crie o projeto Magento. Observe o ponto no final do comando. Refere-se ao diretório atual no qual o comando está sendo executado.

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

Você deverá ver uma saída semelhante.

Creating a "magento/project-community-edition" project at "./"
Installing magento/project-community-edition (2.4.6-p3)
  - Downloading magento/project-community-edition (2.4.6-p3)
  - Installing magento/project-community-edition (2.4.6-p3): Extracting archive
Created project in /var/www/html/magento/.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 566 installs, 0 updates, 0 removals
  - Locking 2tvenom/cborencode (1.0.2)
  - Locking adobe-commerce/adobe-ims-metapackage (2.2.0)
  - Locking allure-framework/allure-codeception (v2.3.0)
  - Locking allure-framework/allure-php-commons (v2.3.1)
  - Locking allure-framework/allure-phpunit (v2.1.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.

$ 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/html/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=127.0.0.1 \
--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_l5pv1h
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 f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d
* * * * * /usr/bin/php /var/www/html/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento/var/log/magento.cron.log
#~ MAGENTO END f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d

Passo 12 - Configurar PHP-FPM

Abra o arquivo /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.d/www.conf

Precisamos definir o usuário/grupo Unix de processos PHP como nginx. Encontre as linhas user=apache e group=apache 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=none, listen.group=none, listen.mode=0660 no arquivo e altere-as da seguinte maneira após descomentando-os.

; 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.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx 
listen.group = nginx 
listen.mode = 0660

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

Aumente o tempo de execução para 180 segundos.

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

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

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/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.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php.ini

Ative a compactação Zlib.

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

Aumente a configuração do realpath_cache conforme mostrado.

$ sudo sed -i 's/;realpath_cache_size = 4096k/realpath_cache_size = 10M/g' /etc/php.ini
$ sudo sed -i 's/;realpath_cache_ttl = 120/realpath_cache_ttl = 7200/g' /etc/php.ini

Abra o arquivo /etc/php.d/10-opcache.ini para edição.

$ sudo nano /etc/php.d/10-opcache.ini

Encontre a linha ;opcache.save_comments=1 e remova o comentário conforme mostrado.

opcache.save_comments=1

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

Reinicie o serviço PHP-FPM.

$ sudo systemctl restart php-fpm

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

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

Passo 13 - Configurar o SELinux

Execute os seguintes comandos para alterar o contexto de segurança do diretório Magento.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/app/etc(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/var(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/media(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/static(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/generated(/.*)?'
$ sudo restorecon -Rv '/var/www/html/magento/'

Aplique a política para permitir conexões com hosts externos.

$ sudo setsebool -P httpd_can_network_connect 1

Aplique a política para permitir que o Nginx conceda acesso ao PostgreSQL.

$ sudo setsebool -P httpd_can_network_connect_db 1

Etapa 14 – 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-fpm/www.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/html/magento;
  include /var/www/html/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, execute os comandos a seguir.

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

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

Antes de acessar o painel de administração, precisamos desabilitar a autenticação de dois fatores 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ê tiver o sendmail configurado em seu servidor para enviar e-mails, você pode pular esta etapa. Precisamos desabilitar dois módulos do Magento usando os seguintes comandos para desabilitar a autenticação de dois fatores.

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

Execute o seguinte comando para criar as classes.

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

Limpe o cache também.

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

Passo 16 – Acesse o Portal de Administração

Você deve 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_l5pv1h

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

Insira as 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 antes das opções Transporte, Host e Porta. Clique no menu suspenso Transporte e selecione SMTP. Para nosso tutorial, estamos usando o Amazon SES como mailer.

Digite 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, 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, 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.

$ sudo php /var/www/html/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 17 - 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.

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

Atualize a configuração dos módulos.

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

Execute o seguinte comando para criar as classes.

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

Limpe o cache também.

$ sudo php /var/www/html/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.

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

Defina as permissões do arquivo.

$ cd /var/www/html/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 uma. 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 um site de comércio eletrônico Magento em um servidor Rocky Linux 9 com um servidor Nginx e Elasticsearch. Se você tiver alguma dúvida, poste-a nos comentários abaixo.

Artigos relacionados: