

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: Instalar um servidor LAMP em AL2
<a name="ec2-lamp-amazon-linux-2"></a>

Os procedimentos a seguir ajudam você a instalar um servidor web Apache com suporte a PHP e [MariaDB](https://mariadb.org/about/) (uma bifurcação do MySQL desenvolvida pela comunidade) em AL2 sua instância (às vezes chamada de servidor web LAMP ou pilha LAMP). Você pode usar esse servidor para hospedar um site estático ou para implantar um aplicativo PHP dinâmico que lê e grava informações em um banco de dados.

**Importante**  
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 isso AL2023, consulte [Instalar um servidor LAMP em AL2023](https://docs.aws.amazon.com//linux/al2023/ug/ec2-lamp-amazon-linux-2023.html). Para o Ubuntu, consulte a seguinte documentação da comunidade Ubuntu: [ApacheMySQLPHP](https://help.ubuntu.com/community/ApacheMySQLPHP). Para outras distribuições, consulte a documentação específica.

**Opção: concluir este tutorial usando a automação**  
Para concluir este tutorial usando a AWS Systems Manager automação em vez das tarefas a seguir, execute o [AWS documento Docs-Install ALAMPServer - AL2](https://console.aws.amazon.com/systems-manager/automation/execute/AWSDocs-InstallALAMPServer-AL2) Automation.

**Topics**
+ [Etapa 1: Preparar o servidor LAMP](#prepare-lamp-server)
+ [Etapa 2: Testar o servidor LAMP](#test-lamp-server)
+ [Etapa 3: Proteger o servidor do banco de dados](#secure-mariadb-lamp-server)
+ [Etapa 4: Instalação (opcional) phpMyAdmin](#install-phpmyadmin-lamp-server)
+ [Solução de problemas](#lamp-troubleshooting)
+ [Tópicos relacionados](#lamp-more-info)

## Etapa 1: Preparar o servidor LAMP
<a name="prepare-lamp-server"></a>

**Pré-requisitos**
+ Este tutorial pressupõe que você já tenha iniciado uma nova instância usando AL2, com um nome DNS público que pode ser acessado pela Internet. Para obter mais informações, consulte [Executar uma instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) no *Guia do usuário do 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 [Regras de grupos de segurança](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules.html) no Guia do usuário do *Amazon* EC2.
+ O procedimento a seguir instala a versão mais recente do PHP disponível no AL2 momento`php8.2`. Se você planeja usar aplicativos PHP diferentes daqueles descritos neste tutorial, você deve verificar a compatibilidade com o `php8.2`.<a name="install_apache-2"></a>

**Para preparar o servidor LAMP**

1. [Conecte-se à sua instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html).

1. Para garantir que todos os pacotes de software estejam atualizados, execute uma atualização rápida de software em sua instância. Esse processo pode 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 `-y` instala 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 yum update -y
   ```

1. Instale os repositórios Amazon Linux Extras do `mariadb10.5` para obter as versões mais recentes do pacote do MariaDB.

   ```
   [ec2-user ~]$ sudo amazon-linux-extras install mariadb10.5
   ```

   Se receber um erro relatando `sudo: amazon-linux-extras: command not found`, isso significa que sua instância não foi executada com uma AMI do Amazon Linux 2 (talvez você esteja usando a Amazon Linux AMI). Você pode visualizar sua versão do Amazon Linux usando o comando a seguir.

   ```
   cat /etc/system-release
   ```

1. Instale os repositórios `php8.2` Amazon Linux Extras para obter a versão mais recente do PHP pacote para AL2.

   ```
   [ec2-user ~]$ sudo amazon-linux-extras install php8.2
   ```

1. Agora que sua instância está atualizada, você pode instalar os pacotes de software de servidor Web Apache, MariaDB e PHP. Use o comando de instalação do yum para instalar os vários pacotes de software e todas as dependências relacionadas ao mesmo tempo

   ```
   [ec2-user ~]$ sudo yum install -y httpd
   ```

   Você pode visualizar as versões atuais desses pacotes usando o comando a seguir:

   ```
   yum info {{package_name}}
   ```

1. Inicie o servidor web Apache.

   ```
   [ec2-user ~]$ sudo systemctl start httpd
   ```

1.  Use o comando **systemctl** para configurar o servidor web Apache para iniciar em cada inicialização do sistema. 

   ```
   [ec2-user ~]$ sudo systemctl enable httpd
   ```

   Você pode verificar se **httpd** está ativo executando o seguinte comando:

   ```
   [ec2-user ~]$ sudo systemctl is-enabled httpd
   ```

1. 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 {{N}} segurança do **assistente de inicialização** foi configurado para sua instância durante a inicialização. Esse grupo contém uma única regra para permitir conexões SSH. 

   1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Escolha **Instances (Instâncias)** e selecione a instância.

   1. 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/0
      ```
**Atenção**  
Usar `0.0.0.0/0` permite que todos os IPv4 endereços acessem sua instância usando 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.

   1. Escolha o link do grupo de segurança. Usando os procedimentos em [Adicionar regras a um grupo de segurança](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule), adicione uma nova regra de segurança de entrada com os seguintes valores:
      + **Tipo:** HTTP
      + **Protocolo**: TCP
      + **Port Range**: 80
      + **Source (Origem)**: personalizado

1. 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. Você pode obter o DNS público da instância usando o console do Amazon EC2 (verifique a coluna **Public DNS (DNS público)**. Se essa coluna estiver oculta, escolha **Show/Hide Columns (Mostrar/ocultar colunas)** (o ícone em forma de engrenagem) e escolha **Public DNS (DNS 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 saber mais, consulte [Add rules to security group](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).
**Importante**  
Se você não estiver usando o Amazon Linux, poderá ser 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 teste do servidor mostra a página de teste do Apache.](http://docs.aws.amazon.com/pt_br/linux/al2/ug/images/apache_test_page_al2_2.4.png)

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 o usuário `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.<a name="setting-file-permissions-2"></a>

**Para definir permissões de arquivo**

1. Adicione o usuário (neste caso, o `ec2-user`) ao grupo do `apache`.

   ```
   [ec2-user ~]$ sudo usermod -a -G apache {{ec2-user}}
   ```

1. Faça logout e login novamente para selecionar o novo grupo verifique sua associação.

   1. Faça logout (use o comando **exit** ou feche a janela do terminal):

      ```
      [ec2-user ~]$ exit
      ```

   1. Para verificar sua associação no grupo `apache`, reconecte-se à instância e execute o comando a seguir:

      ```
      [ec2-user ~]$ groups
      ec2-user adm wheel apache systemd-journal
      ```

1. Altere a propriedade do grupo do `/var/www` e seu conteúdo para o grupo do `apache`.

   ```
   [ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
   ```

1. 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/www` e de seus subdiretórios.

   ```
   [ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Para adicionar permissões de gravação do grupo, altere recursivamente as permissões de arquivo de `/var/www` e 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 uma aplicação 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, o conteúdo URLs que você visita, o conteúdo das páginas da Web que você recebe e o conteúdo (incluindo senhas) de qualquer formulário HTML que você envia são todos visíveis para espiões em qualquer lugar ao longo do caminho 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: Configurar SSL/TLS em AL2](SSL-on-amazon-linux-2.md).

## Etapa 2: Testar o servidor LAMP
<a name="test-lamp-server"></a>

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**

1. Crie um arquivo PHP no diretório base do Apache.

   ```
   [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
   ```

   Se 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](#setting-file-permissions-2).

1. 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.php
   ```

   Você deve ver a página de informações do PHP:  
![O teste do servidor LAMP mostra a página de informações do PHP.](http://docs.aws.amazon.com/pt_br/linux/al2/ug/images/phpinfo7.2.10.png)

   Se você não vir essa página, verifique se o arquivo `/var/www/html/phpinfo.php` foi 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 yum list installed httpd mariadb-server php-mysqlnd
   ```

   Se alguns dos pacotes necessários não estiverem listados na saída, instale-os com o comando **sudo yum install {{package}}**. Além disso, verifique se os extras `php7.2` e `lamp-mariadb10.2-php7.2` estão habilitados na saída do comando **amazon-linux-extras**.

1. 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 name="secure-mariadb-lamp-server"></a>

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.<a name="securing-maria-db"></a>

**Para proteger o servidor MariaDB**

1. Inicie o servidor MariaDB.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Executar **mysql\_secure\_installation**.

   ```
   [ec2-user ~]$ sudo mysql_secure_installation
   ```

   1. Quando solicitado, digite uma senha para a conta raiz.

      1. Digite a senha raiz atual. Por padrão, a conta raiz não tem uma senha definida. Pressione Enter.

      1. Digite **Y** para 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/](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. 

   1. Digite **Y** para remover as contas de usuários anônimos.

   1. Digite **Y** para desabilitar o recurso de login remoto da raiz.

   1. Digite **Y** para remover o banco de dados de teste.

   1. Digite **Y** para recarregar as tabelas de privilégios e salvar suas alterações.

1. (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
   ```

1. (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: Instalação (opcional) phpMyAdmin
<a name="install-phpmyadmin-lamp-server"></a>

[phpMyAdmin](https://www.phpmyadmin.net/)é uma ferramenta de gerenciamento de banco de dados baseada na web que você pode usar para visualizar e editar os bancos de dados MySQL na sua instância do EC2. Siga as etapas a seguir para instalar e configurar o `phpMyAdmin` em sua instância do Amazon Linux.

**Importante**  
Não recomendamos o uso `phpMyAdmin` para acessar um servidor LAMP, a menos que você tenha habilitado SSL/TLS o Apache; caso contrário, sua senha de administrador de banco de dados e outros dados serão transmitidos de forma insegura pela Internet. Para obter recomendações de segurança dos desenvolvedores, consulte [Protegendo sua phpMyAdmin instalação](https://docs.phpmyadmin.net/en/latest/setup.html#securing-your-phpmyadmin-installation). Para obter informações gerais sobre como proteger um servidor web em uma instância do EC2, consulte [Tutorial: Configurar SSL/TLS em AL2](SSL-on-amazon-linux-2.md).

**Para instalar phpMyAdmin**

1. Instale as dependências necessárias.

   ```
   [ec2-user ~]$ sudo yum install php-mbstring php-xml -y
   ```

1. Reinicie o Apache.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```

1. Reinicie o `php-fpm`.

   ```
   [ec2-user ~]$ sudo systemctl restart php-fpm
   ```

1. Navegue até o diretório base do Apache em `/var/www/html`.

   ```
   [ec2-user ~]$ cd /var/www/html
   ```

1. Selecione um pacote de origem para a phpMyAdmin versão mais recente em [https://www.phpmyadmin.net/downloads](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]$ wget {{https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz}}
   ```

1. Crie uma pasta `phpMyAdmin` e extraia o pacote dela com o comando a seguir.

   ```
   [ec2-user html]$ mkdir phpMyAdmin && tar -xvzf {{phpMyAdmin-latest-all-languages.tar.gz}} -C phpMyAdmin --strip-components 1
   ```

1. Exclua o {{phpMyAdmin-latest-all-languages.tar.gz}} tarball.

   ```
   [ec2-user html]$ rm {{phpMyAdmin-latest-all-languages.tar.gz}}
   ```

1.  (Opcional) Se o servidor MySQL não estiver em execução, inicie-o agora.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Em um navegador da Web, digite a URL da sua phpMyAdmin instalação. 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}}/phpMyAdmin
   ```

   Você deve ver a página de phpMyAdmin login:  
![O resultado da digitação do URL da sua phpMyAdmin instalação é a tela de phpMyAdmin login.](http://docs.aws.amazon.com/pt_br/linux/al2/ug/images/phpmyadmin_login.png)

1. Faça login na sua phpMyAdmin instalação com o nome de `root` usuário e a senha raiz do MySQL que você criou 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:

   1. 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.php` para ele.

   1. Salve o arquivo como `config.inc.php` no phpMyAdmin diretório que contém`index.php`.

   1. Consulte as instruções de criação pós-arquivo na seção [Usando o script](https://docs.phpmyadmin.net/en/latest/setup.html#using-the-setup-script) de phpMyAdmin instalação das instruções de instalação para qualquer configuração adicional.

    Para obter informações sobre o uso phpMyAdmin, consulte o [Guia phpMyAdmin do usuário](http://docs.phpmyadmin.net/en/latest/user.html).

## Solução de problemas
<a name="lamp-troubleshooting"></a>

Esta seção oferece sugestões para resolver problemas comuns que você pode encontrar ao configurar um novo servidor do LAMP. 

### Não consigo me conectar ao servidor usando um navegador da web
<a name="is_apache_on"></a>

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 httpd
  ```

  Se o processo **httpd** não estiver em execução, repita as etapas descritas em [Para preparar o servidor LAMP](#install_apache-2).
+ **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 saber mais, consulte [Add rules to security group](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

### Não consigo me conectar ao meu servidor usando HTTPS
<a name="is-https-enabled"></a>

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 mais informações, consulte [Tutorial: Configurar SSL/TLS em AL2](SSL-on-amazon-linux-2.md).
+ **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 [Adicionar regras a um grupo de segurança](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

## Tópicos relacionados
<a name="lamp-more-info"></a>

Para obter mais informações sobre como transferir arquivos para sua instância ou instalar um WordPress blog em seu servidor web, consulte a documentação a seguir:
+ [Transfira arquivos para sua instância Linux usando WinSCP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html#Transfer_WinSCP) o.
+ [Transfira arquivos para instâncias Linux usando um SCP cliente](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html#linux-file-transfer-scp).
+ [Tutorial: hospede um WordPress blog no AL2](hosting-wordpress.md)

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/](http://httpd.apache.org/)
+ Servidor de banco de dados MariaDB: [https://mariadb.org/](https://mariadb.org/)
+ Linguagem de programação PHP: [http://php.net/](http://php.net/)
+ O `chmod` comando: [https://en.wikipedia. org/wiki/Chmod](https://en.wikipedia.org/wiki/Chmod)
+ O `chown` comando: [https://en.wikipedia. org/wiki/Chown](https://en.wikipedia.org/wiki/Chown)

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](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/creating-migrating.html) no *Guia do desenvolvedor do Amazon Route 53*.