As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tutorial: Install a LAMP server on AL2023
Os procedimentos a seguir ajudam a instalar um servidor web Apache com suporte a PHP e MariaDB
Importante
Esses procedimentos são destinados ao AL2023. Se você estiver tentando configurar um servidor web LAMP em uma distribuição diferente, como Ubuntu ou Red Hat Enterprise Linux, este tutorial não funcionará. Para o Ubuntu, consulte a seguinte documentação da comunidade do Ubuntu: ApacheMySQLPHP
Tarefas
Etapa 1: Preparar o servidor LAMP
Pré-requisitos
-
Este tutorial pressupõe que você já inicializou uma nova instância usando o AL2023, com um nome DNS público acessível pela internet. Para obter mais informações, consulte AL2023 na Amazon EC2. Você também precisa ter configurado o security group para permitir conexões SSH (porta 22), HTTP (porta 80) e HTTPS (porta 443). Para obter mais informações sobre esses pré-requisitos, consulte Authorize inbound traffic for your Linux instances no Guia do usuário do Amazon EC2.
-
O procedimento a seguir instala a versão mais recente de PHP disponível no AL2023, atualmente a 8.1. Se você planeja usar aplicações PHP diferentes daquelas descritas neste tutorial, você deve verificar a compatibilidade com a versão 8.1.
Para preparar o servidor LAMP
-
Conecte-se à sua instância. Para obter mais informações, consulte Conexão com AL2 203 instâncias.
-
Para garantir que todos os pacotes de software estejam atualizados, execute uma atualização rápida de software em sua instância. Esse processo poderá levar alguns minutos, mas é importante ter certeza de que você tem as atualizações de segurança e correções de bug mais recentes.
A opção
-yinstala as atualizações sem solicitar confirmação. Para examinar as atualizações antes da instalação, você pode omitir essa opção.[ec2-user ~]$sudo dnf upgrade -y -
Instale as versões mais recentes do servidor web Apache e pacotes PHP para o AL2023.
[ec2-user ~]$sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel -
Instale os pacotes de software do MariaDB. Use o comando dnf install para instalar os vários pacotes de software e todas as dependências relacionadas ao mesmo tempo.
[ec2-user ~]$sudo dnf install mariadb105-serverVocê pode visualizar as versões atuais desses pacotes usando o comando a seguir:
[ec2-user ~]$sudo dnf infopackage_nameExemplo:
[root@ip-172-31-25-170 ec2-user]# dnf info mariadb105 Last metadata expiration check: 0:00:16 ago on Tue Feb 14 21:35:13 2023. Installed Packages Name : mariadb105 Epoch : 3 Version : 10.5.16 Release : 1.amzn2023.0.6 Architecture : x86_64 Size : 18 M Source : mariadb105-10.5.16-1.amzn2023.0.6.src.rpm Repository : @System From repo : amazonlinux Summary : A very fast and robust SQL database server URL : http://mariadb.org License : GPLv2 and LGPLv2 Description : MariaDB is a community developed fork from MySQL - a multi-user, multi-threaded : SQL database server. It is a client/server implementation consisting of : a server daemon (mariadbd) and many different client programs and libraries. : The base package contains the standard MariaDB/MySQL client programs and : utilities. -
Inicie o servidor web Apache.
[ec2-user ~]$sudo systemctl start httpd -
Use o comando systemctl para configurar o servidor web Apache para iniciar em cada inicialização do sistema.
[ec2-user ~]$sudo systemctl enable httpdVocê pode verificar se httpd está ativo executando o seguinte comando:
[ec2-user ~]$sudo systemctl is-enabled httpd -
Adicione uma regra de segurança para permitir conexões HTTP de entrada (porta 80) na instância caso você ainda não tenha feito isso. Por padrão, um grupo de segurança launch-wizard-
Nfoi configurado para a instância durante a inicialização. Se você não acrescentou regras adicionais de grupo de segurança, esse grupo contém apenas uma única regra para permitir conexões SSH.Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. No navegador à esquerda, selecione Instances (Instâncias) e selecione sua instância.
-
Na guia Security (Segurança), exiba as regras de entrada. Você deve ver a seguinte regra:
Port range Protocol Source 22 tcp 0.0.0.0/0Atenção
Usar
0.0.0.0/0permite que todos os endereços IPv4 acessem sua instância usando o SSH. Isso é aceitável para um período curto em um ambiente de teste, mas não é seguro em ambientes de produção. Na produção, você autorizará somente um endereço IP específico ou intervalo de endereços para acessar a instância. -
Se não houver uma regra de entrada para permitir conexões HTTP (porta 80), será necessário adicionar a regra agora. Escolha o link do grupo de segurança. Usando os procedimentos contidos em Authorize inbound traffic for your Linux instances, adicione uma nova regra de segurança de entrada com os seguintes valores:
-
Type (Tipo): HTTP
-
Protocolo: TCP
-
Port Range: 80
-
Source (Origem): personalizado
-
-
Teste o servidor web. Em um navegador, digite o endereço DNS público (ou o endereço IP público) de sua instância. Se não houver conteúdo em
/var/www/html, você deverá verificar a página de teste do Apache, que exibirá a mensagem “It works!” (Funciona!).Você pode obter o DNS público da instância usando o console do Amazon EC2 (verifique a coluna Public IPv4 DNS [DNS IPv4 público]). Se essa coluna estiver oculta, escolha Preferences (Preferências) (o ícone em forma de engrenagem) e escolha Public IPv4 DNS (DNS IPv4 público).
Verifique se o grupo de segurança da instância contém uma regra para permitir o tráfego HTTP na porta 80. Para obter mais informações, consulte Add rules to security group.
Importante
Se você não estiver usando o Amazon Linux, talvez seja necessário configurar o firewall na instância para permitir essas conexões. Para obter mais informações sobre como configurar o firewall, consulte a documentação de sua distribuição específica.
O httpd do Apache é usado para os arquivos que são mantidos em um diretório chamado raiz de documentos do Apache. O diretório raiz de documentos Apache do Amazon Linux é /var/www/html, que, por padrão, é de propriedade da raiz.
Para permitir que a conta do ec2-user manipule arquivos nesse diretório, você deve modificar a propriedade e as permissões do diretório. Existem diversas maneiras de realizar essa tarefa. Neste tutorial, você adiciona ec2-user ao grupo apache para dar ao grupo apache a propriedade do diretório /var/www e atribuir permissões de gravação ao grupo.
Para definir permissões de arquivo
-
Adicione o usuário (neste caso, o
ec2-user) ao grupo doapache.[ec2-user ~]$sudo usermod -a -G apacheec2-user -
Faça logout e login novamente para selecionar o novo grupo verifique sua associação.
-
Faça logout (use o comando exit ou feche a janela do terminal):
[ec2-user ~]$exit -
Para verificar sua associação no grupo
apache, reconecte-se à instância e execute o comando a seguir:[ec2-user ~]$groupsec2-user adm wheel apache systemd-journal
-
-
Altere a propriedade do grupo do
/var/wwwe seu conteúdo para o grupo doapache.[ec2-user ~]$sudo chown -R ec2-user:apache /var/www -
Para adicionar as permissões de gravação do grupo e definir o ID do grupo nos subdiretórios futuros, altere as permissões de diretório de
/var/wwwe de seus subdiretórios.[ec2-user ~]$sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \; -
Para adicionar permissões de gravação do grupo, altere recursivamente as permissões de arquivo de
/var/wwwe de seus subdiretórios:[ec2-user ~]$find /var/www -type f -exec sudo chmod 0664 {} \;
Agora, ec2-user (e outros todos os futuros do grupo apache) poderão adicionar, excluir e editar arquivos na raiz do documento Apache, permitindo que você adicione conteúdo, como um site estático ou um aplicativo PHP.
Para proteger o servidor web (opcional)
Um servidor web que executa o protocolo HTTP não fornece nenhuma segurança de transporte para os dados que envia ou recebe. Quando você se conecta a um servidor HTTP usando um navegador da web, as URLs que você acessa, o conteúdo de páginas da web recebido e o conteúdo (incluindo senhas) de todos os formulários HTML enviado por você ficam visíveis para os espiões em qualquer ponto da rede. A melhor prática para proteger o servidor web é instalar suporte para HTTPS (HTTP seguro), que protege os dados por meio de criptografia SSL/TLS.
Para obter informações sobre como habilitar o HTTPS no servidor, consulte Tutorial: Configure SSL/TLS on AL2023.
Etapa 2: Testar o servidor LAMP
Se o servidor estiver instalado e em execução, e suas permissões de arquivo estiverem definidas corretamente, a conta do ec2-user poderá criar um arquivo PHP no diretório /var/www/html disponível na Internet.
Para testar o servidor do LAMP
-
Crie um arquivo PHP no diretório base do Apache.
[ec2-user ~]$echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.phpSe você receber o erro ”Permissão negada" ao tentar executar esse comando, tente fazer logout e login novamente para obter as permissões corretas do grupo que você configurou em Para definir permissões de arquivo.
-
Em um navegador da web, digite a URL do arquivo que você acabou de criar. Essa URL é o endereço DNS público da instância seguido por uma barra e o nome do arquivo. Por exemplo:
http://my.public.dns.amazonaws.com/phpinfo.phpVocê deve ver a página de informações do PHP:
Se você não vir essa página, verifique se o arquivo
/var/www/html/phpinfo.phpfoi criado corretamente na etapa anterior. Você também pode verificar se todos os pacotes necessários foram instalados com o comando a seguir.[ec2-user ~]$sudo dnf list installed httpd mariadb-server php-mysqlndSe alguns dos pacotes necessários não estiverem listados na saída, instale-os com o comando sudo yum install
package. -
Exclua o arquivo
phpinfo.php. Embora essas informações possam ser úteis, elas não devem ser transmitidas pela Internet por motivos de segurança.[ec2-user ~]$rm /var/www/html/phpinfo.php
Agora você deve ter um servidor web do LAMP totalmente funcional. Se adicionar conteúdo ao diretório base do Apache em /var/www/html, você deverá poder visualizar esse conteúdo no endereço DNS público de sua instância.
Etapa 3: Proteger o servidor do banco de dados
A instalação padrão do servidor MariaDB tem vários recursos que são bons para teste e desenvolvimento, mas devem ser desabilitados ou removidos em servidores de produção. O comando mysql_secure_installation orienta você durante o processo de configuração de uma senha raiz e da remoção de recursos não seguros da instalação. Mesmo que você não esteja planejando usar o servidor MariaDB é recomendável executar este procedimento.
Para proteger o servidor MariaDB
-
Inicie o servidor MariaDB.
[ec2-user ~]$sudo systemctl start mariadb -
Executar mysql_secure_installation.
[ec2-user ~]$sudo mysql_secure_installation-
Quando solicitado, digite uma senha para a conta raiz.
-
Digite a senha raiz atual. Por padrão, a conta raiz não tem uma senha definida. Pressione Enter.
-
Digite
Ypara definir uma senha e digite uma senha segura duas vezes. Para obter mais informações sobre como criar uma senha segura, consulte https://identitysafe.norton.com/password-generator/. Armazene essa senha em um lugar seguro. A configuração de uma senha raiz para o MariaDB é somente a medida mais básica para proteger seu banco de dados. Ao criar ou instalar um aplicativo controlado por banco de dados, geralmente, você cria um usuário de serviço de banco para esse aplicativo e evita usar a conta raiz para qualquer coisa que não seja a administração do banco de dados.
-
-
Digite
Ypara remover as contas de usuários anônimos. -
Digite
Ypara desabilitar o recurso de login remoto da raiz. -
Digite
Ypara remover o banco de dados de teste. -
Digite
Ypara recarregar as tabelas de privilégios e salvar suas alterações.
-
-
(Opcional) Se você não pretende usar o servidor MariaDB imediatamente, interrompa-o. Você poderá reiniciá-lo quando precisar dele novamente.
[ec2-user ~]$sudo systemctl stop mariadb -
(Opcional) Se você quiser que o servidor MariaDB seja iniciado a cada inicialização, digite o comando a seguir.
[ec2-user ~]$sudo systemctl enable mariadb
Etapa 4: (opcional) instalar o phpMyAdmin
O phpMyAdminphpMyAdmin em sua instância do Amazon Linux.
Importante
Não recomendamos usar o phpMyAdmin para acessar um servidor LAMP, a menos que você tenha habilitado o SSL/TLS no Apache. Caso contrário, sua senha de administrador de banco de dados e outros dados serão transmitidos de forma desprotegida pela Internet. Para ver as recomendações de segurança dos desenvolvedores, consulte Securing your phpMyAdmin installation
Para instalar o phpMyAdmin
-
Instale as dependências necessárias.
[ec2-user ~]$sudo dnf install php-mbstring php-xml -y -
Reinicie o Apache.
[ec2-user ~]$sudo systemctl restart httpd -
Reinicie
php-fpm.[ec2-user ~]$sudo systemctl restart php-fpm -
Navegue até o diretório base do Apache em
/var/www/html.[ec2-user ~]$cd /var/www/html -
Selecione um pacote de origem para a versão mais recente do phpMyAdmin em https://www.phpmyadmin.net/downloads
. Para fazer download do arquivo diretamente para a instância, copie o link e cole-o em um comando wget, como neste exemplo: [ec2-user html]$wgethttps://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz -
Crie uma pasta
phpMyAdmine extraia o pacote dela com o comando a seguir.[ec2-user html]$mkdir phpMyAdmin && tar -xvzfphpMyAdmin-latest-all-languages.tar.gz-C phpMyAdmin --strip-components 1 -
Exclua o tarball
phpMyAdmin-latest-all-languages.tar.gz.[ec2-user html]$rmphpMyAdmin-latest-all-languages.tar.gz -
(Opcional) Se o servidor MySQL não estiver em execução, inicie-o agora.
[ec2-user ~]$sudo systemctl start mariadb -
Em um navegador da web, digite a URL da instalação do phpMyAdmin. Essa URL é o endereço DNS público (ou o endereço IP público) da instância seguido por uma barra e o nome do diretório de instalação. Por exemplo:
http://my.public.dns.amazonaws.com/phpMyAdminVocê deve ver a página de login do phpMyAdmin:
-
Inicie a sessão na instalação do phpMyAdmin com o nome de usuário
roote a senha raiz do MySQL criada anteriormente.A instalação ainda deve ser configurada antes que você a coloque em serviço. Sugerimos que você comece criando manualmente o arquivo de configuração, da seguinte maneira:
-
Para começar com um arquivo de configuração mínima, use seu editor de texto favorito para criar um novo arquivo e, em seguida, copie o conteúdo de
config.sample.inc.phppara ele. -
Salve o arquivo como
config.inc.phpno diretório do phpMyAdmin que contémindex.php. -
Consulte as instruções posteriores à criação dos arquivos na seção Como usar o script de configuração
das instruções de instalação do phpMyAdmin para qualquer configuração adicional.
Para obter informações sobre o uso do phpMyAdmin, consulte o Guia do usuário do phpMyAdmin
. -
Solução de problemas
Esta seção oferece sugestões para resolver problemas comuns que podem surgir durante a configuração de um novo servidor do LAMP.
Não consigo me conectar ao servidor usando um navegador da web
Execute as seguintes verificações para ver se o servidor da web do Apache está em execução e acessível.
-
O servidor web está em execução?
Você pode verificar se httpd está ativo executando o seguinte comando:
[ec2-user ~]$sudo systemctl is-enabled httpdSe o processo httpd não estiver em execução, repita as etapas descritas em Para preparar o servidor LAMP.
-
O firewall está configurado corretamente?
Verifique se o grupo de segurança da instância contém uma regra para permitir o tráfego HTTP na porta 80. Para obter mais informações, consulte Add rules to security group.
Não consigo me conectar ao meu servidor usando HTTPS
Execute as seguintes verificações para ver se o servidor da web do Apache está configurado para dar suporte a HTTPS.
-
O servidor Web está configurado corretamente?
Depois de instalar o Apache, o servidor é configurado para tráfego HTTP. Para suportar HTTPS, ative o TLS no servidor e instale um certificado SSL. Para obter mais informações, consulte Tutorial: Configure SSL/TLS on AL2023.
-
O firewall está configurado corretamente?
Verifique se o grupo de segurança da instância contém uma regra para permitir o tráfego HTTPS na porta 443. Para obter mais informações, consulte Authorize inbound traffic for your Linux instances.
Tópicos relacionados
Para obter mais informações sobre como transferir arquivos para a instância ou como instalar um blog do WordPress no servidor web, consulte a documentação a seguir:
-
Transferir arquivos para uma instância do Linux usando WinSCP no Guia do usuário do Amazon EC2.
-
Transferir arquivos para instâncias do Linux usando um cliente SCP no Guia do usuário do Amazon EC2.
Para obter mais informações sobre os comandos e o software usados neste tutorial, consulte as seguintes páginas da web:
-
Servidor web Apache: http://httpd.apache.org/
-
Servidor de banco de dados MariaDB: https://mariadb.org/
-
Linguagem de programação PHP: http://php.net/
Para obter mais informações sobre como registrar um nome de domínio para o servidor web ou transferir um nome de domínio existente para este host, consulte Como criar e migrar domínios e subdomínios para o Amazon Route 53 no Guia do desenvolvedor do Amazon Route 53.