Como instalar o software de comércio eletrônico Magento no Ubuntu 22.04
Magento é uma plataforma de comércio eletrônico bem conhecida e de código aberto, escrita em PHP. Magento é uma solução de comércio eletrônico robusta e poderosa usada por mais de 240.000 comerciantes em todo o mundo. Inicialmente, o Magento foi criado como um fork do osCommerce em 2007 e, em maio de 2018, o Magento foi adquirido pela Adobe Inc e se tornou Adobe eCommerce.
Magento é uma plataforma versátil e escalável para construir uma loja de comércio eletrônico. É adequado para construir lojas online de pequeno, médio e grande porte. Magento permite que você crie e hospede suas lojas online em seu servidor. Você pode abrir lojas online sem nenhum conhecimento de programação, isso capacita seu negócio e leva seu negócio para o próximo nível.
Neste tutorial, você instalará o Magento eCommerce no Ubuntu 22.04. Você instalará e configurará dependências do Magento, como Elasticsearch, Redis, PHP-FPM com servidor web Nginx, MySQL Server e Composer. Você também protegerá a instalação do Magento eCommerce com certificados SSL da Letsencrypt.
Pré-requisitos
Para concluir e seguir este tutorial, você precisará de alguns pré-requisitos listados abaixo:
- Um servidor Ubuntu 22.04 - Este exemplo usa um servidor Ubuntu com nome de host 'magento-server' e endereço IP '192.168.5.100'.
- Um usuário não root com privilégios de administrador sudo/root.
- Um nome de domínio apontado para o endereço IP do servidor - Este exemplo usa o nome de domínio 'hwdomain.io' para a instalação do Magento eCommerce.
Além disso, se você planeja instalar o Magento em sua produção, certifique-se de ter um servidor com altos recursos de CPUs, memória e disco. Este teste de instalação do Magento eCommerce usou 6 GB de memória.
Preparar sistema
Antes de iniciar a instalação do Magento, você preparará seu sistema Ubuntu atualizando repositórios, atualizando pacotes e instalando alguns pacotes básicos.
Execute o comando apt abaixo para atualizar e atualizar os repositórios do Ubuntu. Em seguida, atualize os pacotes para a versão mais recente.
sudo apt update
sudo apt upgrade
A seguir, instale algumas dependências básicas por meio do comando apt abaixo.
sudo apt install gnupg2 apt-transport-https curl wget
Quando solicitado, insira y para confirmar e pressione ENTER para continuar.
Com as dependências básicas instaladas, você iniciará a instalação das dependências de pacotes para Magento eCommerce.
Instalando e configurando o Elasticsearch 7.x
A primeira dependência que você instalará é o Elasticsearch. O comércio eletrônico Magento moderno exigia um mecanismo de pesquisa para fornecer resultados de pesquisa eficazes em tempo real para os clientes. Magento suporta o mecanismo de busca Elasticsearch e OpenSearch.
Nesta etapa, você instalará o Elasticsearch 7.x em um servidor Ubuntu 22.04. A versão mais recente do Magento exigia a versão 7.x específica do Elasticsearch.
Para começar, execute o comando abaixo para adicionar a chave GPG e o repositório Elasticsearch ao seu sistema
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch \
| sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
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
Depois que o repositório for adicionado, execute o comando apt abaixo para atualizar e atualizar o índice do pacote Ubuntu.
sudo apt update
Você verá que o repositório Elasticsearch foi adicionado ao seu sistema Ubuntu.
Em seguida, execute o comando apt abaixo para instalar o Elasticsearch em seu sistema. O pacote jq pode ser usado para analisar o formato de saída json.
sudo apt install elasticsearch jq
Insira y quando solicitado e pressione ENTER para continuar.
Após a instalação do Elasticsearch, crie um novo arquivo de configuração '/etc/elasticsearch/jvm.options.d/memory.options' usando o comando do editor nano abaixo.
sudo nano /etc/elasticsearch/jvm.options.d/memory.options
Adicione as seguintes linhas ao arquivo. Com essas linhas, você especificará o uso de memória para o Elasticsearch. Este exemplo usará 1 GB de memória para Elasticsearch, certifique-se de alterar a memória máxima dependendo da memória do seu sistema.
-Xms1g
-Xmx1g
Salve o arquivo e saia do editor quando terminar.
Agora execute o utilitário de comando systemctl abaixo para iniciar e habilitar o serviço Elasticsearch.
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
Verifique o serviço Elasticsearch usando o utilitário de comando systemctl abaixo.
sudo systemctl is-enabled elasticsearch
sudo systemctl status elasticsearch
Você receberá que o serviço Elasticsearch está habilitado e será executado automaticamente na inicialização. E o status atual do serviço Elasticsearch está em execução.
Por último, execute o comando curl abaixo para verificar o Elasticsearch e garantir que esteja funcionando. A instalação padrão do Elasticsearch está sendo executada em localhost com porta 9200.
curl http://127.0.0.1:9200/ | jq .
Você receberá uma saída semelhante a esta em seu terminal: A versão instalada do Elasticsearch é v7.17.8, que é baseada no Lucene 8.11. 1.
Com o Elasticsearch instalado e configurado, em seguida você instalará e configurará o servidor web PHP-FPM e Nginx.
Instalando Nginx e PHP-FPM
No momento em que este artigo foi escrito, o Magento eCommerce exigia o PHP 8.1 para sua instalação. Nesta etapa, você instalará e configurará o PHP-FPM 8.1 em seu sistema Ubuntu. E, ao mesmo tempo, você também instalará o servidor web Nginx.
Você também configurará a alocação máxima de memória para PHP que será usada para executar o Magento e ativará a extensão OPcache.
Execute o comando apt abaixo para instalar o PHP-FPM 8.1 e o servidor web Nginx.
sudo apt install nginx unzip php8.1-fpm php8.1-bcmath php8.1-common php8.1-mbstring php8.1-xmlrpc php8.1-soap php8.1-gd php8.1-xml php8.1-intl php8.1-mysql php8.1-cli php8.1-ldap php8.1-zip php8.1-curl php-imagick
Insira y quando for solicitada a confirmação. Em seguida, pressione ENTER para prosseguir.
Após a instalação do PHP-FPM, abra o arquivo de configuração '/etc/php/8.1/fpm/php.ini' usando o comando do editor nano abaixo.
sudo nano /etc/php/8.1/fpm/php.ini
Altere a configuração padrão do php.ini com as seguintes linhas. Certifique-se de ajustar o valor da opção 'date.timezone' e 'memory_limit', que depende do ambiente do seu sistema.
Neste exemplo, você alocará 1 GB de memória para o serviço PHP-FPM. Você também ativará a extensão OPcache, necessária para Magento.
date.timezone = Europe/Stockholm
memory_limit=1G
realpath_cache_size=10M
realpath_cache_ttl=7200
opcache.enable=1
opcache.max_accelerated_files=3000
opcache_revalidate_freq = 100
opcache.memory_consumption=512
opcache.save_comments=1
Salve o arquivo e saia do editor quando terminar.
Em seguida, execute o utilitário de comando systemctl abaixo para reiniciar os serviços PHP-FPM e Nginx. Isso aplicará as alterações a ambos os serviços.
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
Agora verifique o serviço PHP-FPM por meio do seguinte comando.
sudo systemctl is-enabled php8.1-fpm
sudo systemctl status php8.1-fpm
Você deverá receber a mensagem informando que o serviço PHP-FPM está habilitado e será executado automaticamente na inicialização. E o status atual do serviço PHP-FPM está em execução.
Para o serviço Nginx, você pode verificar usando o comando abaixo.
sudo systemctl is-enabled nginx
sudo systemctl status nginx
Saída – O serviço Nginx está habilitado e será executado automaticamente na inicialização. E o status atual do serviço Nginx está em execução.
Por último, execute o comando abaixo para verificar a versão do PHP instalada em seu sistema. Em seguida, verifique a extensão Opcache para garantir que ela esteja habilitada.
php -v
php -i | grep opcache
Você receberá a saída como esta em seu terminal - O PHP 8.1 está instalado em seu sistema e a extensão OPcache está habilitada.
Agora que você instalou e configurou o servidor web PHP-FPM e Nginx para o Magento eCommerce. Nas próximas etapas, você instalará e configurará o servidor MySQL.
Instalando e configurando o servidor MySQL 8
Por padrão, Magento suporta MySQL e MariaDB como backend de banco de dados. No momento em que este artigo foi escrito, o comércio eletrônico Magento exigia MySQL v8 ou MariaDB, finalmente v10.4. E para este guia, você usará o servidor MySQL para sua implantação do Magento.
Agora você instalará o MySQL Server 8 em seu sistema Ubuntu. Em seguida, você configurará a senha root para o servidor MySQL, protegerá o MySQL via 'mysql_secure_installation' e criará um novo banco de dados MySQL e usuário que o Magento usará.
O repositório padrão do Ubuntu 22.04 fornece o MySQL Server v8. Execute o comando apt abaixo para instalar os pacotes do servidor MySQL.
sudo apt install mysql-server
Insira y quando solicitado e pressione ENTER para continuar.
Após a instalação do servidor MySQL, execute o utilitário de comando systemctl abaixo para verificar o serviço MySQL e garantir que ele esteja em execução.
sudo systemctl is-enabled mysql
sudo systemctl status mysql
Você verá a saída como esta - O servidor MySQL está habilitado e será executado automaticamente na inicialização. E o status do MySQL Server está em execução.
Em seguida, execute o comando abaixo para acessar o shell do MySQL.
sudo mysql
Execute a consulta abaixo para alterar e configurar a senha 'root' do MySQL. Certifique-se de alterar a senha na consulta a seguir.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'r00tP@ssw0rd-*-';
quit
Agora que a senha 'root' do servidor MySQL está configurada, você protegerá o servidor MySQL por meio do utilitário 'mysql_secure_installation'.
Execute o comando abaixo para começar a proteger a implantação do MySQL.
sudo mysql_secure_installation
Agora você será questionado sobre a seguinte configuração.
- Habilite o componente VALIDATE PASSWORD. Insira y para confirmar.
- Escolha a força do nível da senha. Entrada 1 para MÉDIO.
- Alterar a senha do root? Insira n para não.
- Remova o usuário anônimo padrão. Insira Y.
- Proibir login remoto para o usuário root do MySQL. Insira Y.
- Remover o teste de banco de dados padrão? Insira Y.
- Recarregar privilégios de tabelas para aplicar alterações? Entrada Y
Agora o servidor MySQL está protegido e a senha root configurada. A seguir, você criará um novo banco de dados MySQL e um usuário que o Magento usará.
Faça login no shell do MySQL por meio do comando abaixo. Quando a senha for solicitada, insira a senha root do MySQL.
sudo mysql -u root -p
Após fazer login, execute as seguintes consultas para criar um novo banco de dados MySQL e usuário. Neste exemplo, você criará o banco de dados MySQL e o usuário 'magento'. E certifique-se de alterar a senha padrão na consulta abaixo.
CREATE DATABASE magento;
CREATE USER 'magento'@'localhost' IDENTIFIED BY 'M@gentoP4ssw0rd__';
GRANT ALL PRIVILEGES ON magento.* to 'magento'@'localhost';
FLUSH PRIVILEGES;
Agora execute a consulta MySQL abaixo para verificar os privilégios do usuário MySQL 'magento@localhost'. Em seguida, digite quit sair do shell do MySQL.
SHOW GRANTS FOR magento@localhost;
quit
Você receberá uma saída semelhante a esta - O usuário MySQL 'magento@localhost' tem privilégios para acessar o 'magento' banco de dados.
Nas próximas etapas, você instalará o Redis que será usado pelo Magento para gerenciamento de sessões.
Instalando o Servidor Redis
Magento suporta várias maneiras de armazenar sessões, você pode salvar sessões com o PHP-FPM integrado, usando o servidor MySQL ou usando o servidor Redis. Para o gerenciamento de sessões Magento, é recomendado usar o Redis Server, que é construído para armazenar bancos de dados temporários de valores-chave e sessões para sua aplicação.
No momento em que este artigo foi escrito, o Magento eCommerce exigia o Redis v6, que está disponível por padrão no repositório Ubuntu 22.04.
Execute o comando apt abaixo para instalar o Redis em seu sistema. Insira y quando solicitado e pressione ENTER para continuar.
sudo apt install redis-server
Após a instalação do Servidor Redis, execute o utilitário de comando systemctl abaixo para verificar o Servidor Redis e garantir que o serviço esteja habilitado e em execução.
sudo systemctl is-enabled redis-server
sudo systemctl status redis-server
Você receberá uma saída semelhante a esta - O serviço Redis está habilitado e será executado automaticamente na inicialização. E o status do Redis Server está em execução, que por padrão é executado em localhost com porta 6379.
Com o Redis Server instalado, em seguida você instalará o Composer para o gerenciamento de dependências do PHP.
Instalando o gerenciamento de dependências do Composer PHP
Nesta etapa, você instalará o Composer que será usado para instalar e gerenciar dependências PHP para Magento eCommerce. No repositório padrão do Ubuntu, está disponível o pacote Composer v2.2, que é adequado para a versão mais recente do Magento.
Execute o comando apt abaixo para instalar o Composer em seu sistema.
sudo apt install composer
Insira y quando solicitado e pressione ENTER para continuar. A instalação do Composer deve começar.
Após a instalação do Composer, execute o comando abaixo para verificar a versão do Composer.
sudo -u www-data composer -v
Você receberá uma saída semelhante a esta - O Composer v2.2 está instalado e você está pronto para iniciar a instalação do Magento.
Instalando Magento no servidor Ubuntu
O Magento pode ser instalado de várias maneiras, você pode instalar o Magento via Git, via Metapacakge, ou baixando o código-fonte manualmente via GitHub, especialmente para a edição Magento Open Source.
Nesta etapa, você baixará o código-fonte do Magento manualmente na página de lançamento do GitHub do Magento, instalará as dependências do PHP via Composer e, por último, instalará e configurará o Magento por meio da linha de comando 'magento'.
Vá para o GitHub da página de lançamento do Magento e pegue o link para a versão do Magento que você deseja instalar. Neste exemplo, você instalará o Magento 2.4.5.
Mova o diretório de trabalho para o diretório '/var/www' e baixe o código fonte do Magento via wget.
cd /var/www
wget https://github.com/magento/magento2/archive/refs/tags/2.4.5.tar.gz
Após baixar o código fonte do Magento, extraia-o e renomeie o diretório extraído para 'magento2'. Agora seu diretório de instalação do Magento deve se tornar '/var/www/magento2'.
tar -xf 2.4.5.tar.gz
mv magento2-* magento2
A seguir, execute o comando abaixo para criar novos diretórios que serão usados para armazenar a configuração e o cache do Composer. Em seguida, altere a propriedade do diretório '/var/www' para o usuário 'www-data'.
sudo mkdir -p /var/www/{.config,.cache}
sudo chown -R www-data:www-data /var/www
Execute o comando abaixo para garantir que o proprietário do diretório '/var/www/magento2' possa ler, gravar e executar arquivos dentro desse diretório.
sudo chmod u+rwx /var/www/magento2
Depois disso, vá para o diretório de instalação do Magento '/var/www/magento2'. Em seguida, instale as dependências do PHP para Magento através do comando 'composer'.
cd /var/www/magento2
sudo -u www-data composer install
Saída durante a instalação de dependências PHP para Magento.
Depois de instalar as dependências do Magento PHP, execute o comando abaixo para tornar o arquivo binário '/var/www/magento2/bin/magento' executável.
sudo chmod u+x /var/www/magento2/bin/magento
Agora dentro do diretório '/var/www/magento2', execute o comando abaixo para iniciar a instalação do Magento. Isto executará a linha de comando 'magento' através do usuário www-data.
Além disso, certifique-se de alterar o nome de domínio, o usuário e a senha de administrador padrão do Magento, os detalhes do banco de dados MySQL, o fuso horário padrão e a moeda que você usará.
sudo -u www-data bin/magento setup:install \
--base-url=http://hwdomain.io --use-secure=1 \
--base-url-secure=https://hwdomain.io --use-secure-admin=1 \
--db-host=localhost --db-name=magento --db-user=magento --db-password=M@gentoP4ssw0rd__ \
--admin-firstname=admin --admin-lastname=Wonderland [email --admin-user=admin --admin-password=Adm1n_p4ssw0rd \
--language=en_US --currency=USD --timezone=Europe/Stockholm --use-rewrites=1 \
--session-save=redis --elasticsearch-host=http://127.0.0.1 --elasticsearch-port=9200 --elasticsearch-enable-auth=0
Saída durante a instalação do Magento.
Então, após a conclusão da instalação do Magento, você receberá a saída como esta - Na parte inferior da mensagem, você pode ver a URL de administração do Magento gerada e a sugestão para remover o acesso de gravação ao diretório '/var/ diretório www/magento2/app/etc'.
Execute o comando chmod abaixo para desabilitar o acesso de gravação ao diretório '/var/www/magento2/app/etc'.
sudo chmod ug-w /var/www/magento2/app/etc
Neste ponto, o Magento eCommerce está instalado, mas você ainda precisa configurar o bloco do servidor Nginx que será usado para executar o Magento. Isso você fará nas próximas etapas, incluindo como proteger o Magento com SSL do Letsencrypt.
Configurando o bloco de servidor Nginx
Nesta etapa, você configurará e criará uma nova configuração de bloco de servidor Nginx que será usada para executar o comércio eletrônico Magento. Além disso, Magento fornece uma configuração completa do Nginx que está disponível no arquivo '/var/www/magento2/nginx.conf.sample'.
Crie uma nova configuração de bloco do servidor Nginx '/etc/nginx/sites-available/magento.conf' usando o comando do editor nano abaixo.
sudo nano /etc/nginx/sites-available/magento.conf
Adicione as seguintes linhas ao arquivo. Certifique-se de alterar o nome de domínio com o seu domínio.
upstream fastcgi_backend {
server unix:/var/run/php/php8.1-fpm.sock;
}
server {
listen 80;
listen [::]:80;
server_name hwdomain.io;
set $MAGE_ROOT /var/www/magento2/;
include /var/www/magento2/nginx.conf.sample;
client_max_body_size 2M;
access_log /var/log/nginx/magento.access;
error_log /var/log/nginx/magento.error;
}
Salve o arquivo e saia do editor quando terminar.
Em seguida, execute o comando abaixo para ativar a configuração do bloco do servidor '/etc/nginx/sites-evailable/magento.conf'. Em seguida, verifique as configurações do Nginx para garantir que você tenha a configuração adequada.
sudo ln -s /etc/nginx/sites-available/magento.conf /etc/nginx/sites-enabled/
sudo nginx -t
Você receberá então a saída 'teste bem-sucedido - sintaxe ok', o que significa que você tem a configuração adequada e correta do Nginx.
Por último, execute o utilitário de comando systemctl abaixo para reiniciar o serviço Nginx e aplicar as alterações.
sudo systemctl restart nginx
Agora que o Magento está rodando e o bloco do servidor Nginx está configurado. Sua instalação do Magento agora está acessível, mas você ainda precisa configurar o HTTPS via Letsencrypt para proteger sua instalação do Magento.
Protegendo Magento com SSL Letsencrypt
Nesta etapa, você instalará a ferramenta certbot com o plugin Nginx em seu sistema. Em seguida, você gerará certificados SSL para a instalação do seu nome de domínio Magento. Além disso, certifique-se de ter o nome de domínio apontado para o endereço IP do seu servidor e um endereço de e-mail que será usado para registrar-se no Letsencrypt.
Execute o comando apt abaixo para instalar os pacotes certbot e python3-certbot-nginx.
sudo apt install certbot python3-certbot-nginx
Insira Y quando solicitado e pressione ENTER para continuar.
Em seguida, execute o comando certbot abaixo para gerar certificados SSL via Letsencrypt. Certifique-se de alterar o nome de domínio com o nome de domínio de instalação do Magento e o endereço de e-mail com seu e-mail.
sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email -d hwdomain.io
Após a conclusão do processo do certbot, seu Magento agora estará acessível através de uma conexão HTTPS segura.
Acessando o comércio eletrônico Magento
Abra seu navegador e visite o nome de domínio da instalação do Magento (ou seja: https://hwdomain.io/).
Se a instalação do Magento for bem-sucedida, você verá a página inicial padrão do Magento como na imagem a seguir.
Agora insira o URL do caminho de administração gerado e você deverá obter a página de login do Magento. Faça login com seu nome de usuário e senha e clique em Entrar.
Agora você deve obter o painel de administração do Magento.
Você concluiu a instalação do Magento eCommerce com o servidor web Nginx, MySQL Server, PHP-FPM 8.1, Redis Server e Elasticsearch 7.x. Além disso, você protegeu a implantação do Magento com certificados SSL da Letsencrypt.
Pós-instalação de comércio eletrônico Magento
Nesta etapa, você configurará o cron para Magento eCommerce por meio da linha de comando 'magento'. Em seguida, você também excluirá e limpará o cache do Magento após a primeira instalação.
Mova o diretório de trabalho para '/var/www/magento2'.
cd /var/www/magento2
Execute o comando abaixo para configurar e instalar o cron para Magento eCommerce. Em seguida, execute o cron imediatamente. Isso criará um novo cron para o usuário www-data.
sudo -u www-data bin/magento cron:install
sudo -u www-data bin/magento cron:run --group index
Execute o comando abaixo para verificar a lista de tarefas cron para o usuário www-data. Você deverá ver que o cron do Magento foi adicionado.
crontab -u www-data -l
Abaixo está a saída do cron gerado pelo Magento.
Por último, execute o comando abaixo para limpar e liberar o cache do seu comércio eletrônico Magento.
sudo -u www-data bin/magento cache:clean
Você receberá uma saída semelhante à captura de tela a seguir.
Com isso, você concluiu totalmente a instalação do Magento eCommerce em um servidor Ubuntu 22.04.
Conclusão
Neste tutorial, você configura sua loja de comércio eletrônico Magento em um servidor Ubuntu 22.04. Isso incluiu a configuração do Elasticsearch como mecanismo de pesquisa para Magento, MySQL Server como servidor de banco de dados e servidor web PHP-FPM e Nginx. Finalmente, você protegeu seu comércio eletrônico Magento com SSL/TLS via Certbot e Letsencrypt.
Na última etapa, você concluiu a instalação do Magento eCommerce fazendo login no painel de administração do Magento para garantir que a instalação foi bem-sucedida. Então, você também configurou o cron para Magento que será executado em segundo plano e também limpou o cache do Magento através da linha de comando 'magento'.
Para obter melhor desempenho para seu comércio eletrônico Magento, você pode usar vários servidores para suas implantações Magento. Cada componente do Magento pode ser instalado em um servidor diferente. Além disso, você pode adicionar outros componentes, como Varnish, que pode ser usado para armazenar arquivos estáticos de cache do Magento, adicionar RabbitMQ como corretor de mensagens ou adicionar servidores SMTP para notificações por e-mail.