Tutorial: Instalar um servidor LAMP em AL1 - Amazon Linux 1

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 AL1

nota

O Amazon Linux 1 (AL1, antigo Amazon Linux AMI) não é mais suportado. Este guia está disponível somente para fins de referência.

Os procedimentos a seguir ajudam você a instalar um servidor web Apache com suporte a PHP e MySQL na AL1 sua instância (às vezes chamado 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 AL2, consulte o Tutorial: Instalar um servidor LAMP em AL2. Para o Ubuntu, consulte a seguinte documentação da comunidade Ubuntu 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 AWSdocumento Docs-Install ALAMPServer -AL Automation.

Etapa 1: Preparar o servidor LAMP

Pré-requisitos

Este tutorial pressupõe que você já tenha executado uma nova instância usando a Amazon Linux AMI com um nome DNS público acessível pela internet. Para obter mais informações, consulte Iniciar uma instância no Guia EC2 do usuário da Amazon. 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 no Guia do usuário da Amazon EC2 .

Para instalar e iniciar o servidor web do LAMP com a Amazon Linux AMI
  1. Conecte-se à sua instância.

  2. 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
  3. Agora que sua instância é atual, você pode instalar o servidor web Apache, o MySQL e os pacotes de software do PHP.

    Importante

    Alguns aplicativos podem não ser compatíveis com o seguinte ambiente de software recomendado. Antes de instalar esses pacotes, verifique se os aplicativos LAMP são compatíveis com eles. Se houver algum problema, talvez seja necessário instalar um ambiente alternativo. Para obter mais informações, consult O software aplicativo compatível que desejo executar no meu servidor é incompatível com a versão PHP instalada ou outro software

    Use o comando yum install para instalar os vários pacotes de software e todas as dependências relacionadas ao mesmo tempo.

    [ec2-user ~]$ sudo yum install -y httpd24 php72 mysql57-server php72-mysqlnd

    Se você receber o erroNo package package-name available, sua instância não foi executada com o Amazon Linux AMI (talvez você esteja usando AL2 em vez disso). Você pode visualizar sua versão do Amazon Linux com o comando a seguir.

    cat /etc/system-release
  4. Inicie o servidor web Apache.

    [ec2-user ~]$ sudo service httpd start Starting httpd: [ OK ]
  5. Use o comando chkconfig para configurar o servidor web Apache para iniciar em cada inicialização do sistema.

    [ec2-user ~]$ sudo chkconfig httpd on

    O comando chkconfig não fornece nenhuma mensagem de confirmação quando você o usa com êxito para habilitar um serviço.

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

    [ec2-user ~]$ chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    Aqui, httpd é on nos runlevels 2, 3, 4 e 5 (que é o que você deseja ver).

  6. 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 EC2 console da Amazon em https://console.aws.amazon.com/ec2/.

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

    3. 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.

    4. Escolha o link do grupo de segurança. Usando os procedimentos em Adicionar regras a um grupo de segurança, adicione uma nova regra de segurança de entrada com os seguintes valores:

      • Tipo: HTTP

      • Protocolo: TCP

      • Port Range: 80

      • Source (Origem): personalizado

  7. 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. Você pode obter o endereço DNS público da sua instância usando o EC2 console da Amazon. Se não houver conteúdo em /var/www/html, você deverá verificar a página de teste do Apache. Quando você adiciona conteúdo ao diretório raiz do documento, o conteúdo aparece no endereço DNS público da instância em vez da página de teste.

    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 Adicionar regras a um grupo de segurança />.

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

[ec2-user ~]$ ls -l /var/www total 16 drwxr-xr-x 2 root root 4096 Jul 12 01:00 cgi-bin drwxr-xr-x 3 root root 4096 Aug 7 00:02 error drwxr-xr-x 2 root root 4096 Jan 6 2012 html drwxr-xr-x 3 root root 4096 Aug 7 00:02 icons drwxr-xr-x 2 root root 4096 Aug 7 21:17 noindex

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.

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
  2. 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
    2. Para verificar sua associação no grupo apache, reconecte-se à instância e execute o comando a seguir:

      [ec2-user ~]$ groups ec2-user wheel apache
  3. 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
  4. 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 [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  5. 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.

(Opcional) Proteger o servidor web

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 no Amazon Linux AMI.

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 web 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 Etapa 1: Preparar o servidor LAMP.

  2. 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.

    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. As versões de pacote na segunda coluna não precisam corresponder a esse exemplo de saída.

    [ec2-user ~]$ sudo yum list installed httpd24 php72 mysql57-server php72-mysqlnd Loaded plugins: priorities, update-motd, upgrade-helper Installed Packages httpd24.x86_64 2.4.25-1.68.amzn1 @amzn-updates mysql56-server.x86_64 5.6.35-1.23.amzn1 @amzn-updates php70.x86_64 7.0.14-1.20.amzn1 @amzn-updates php70-mysqlnd.x86_64 7.0.14-1.20.amzn1 @amzn-updates

    Se alguns dos pacotes necessários não estiverem listados na saída, instale-os usando o comando sudo yum install package.

  3. 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

Etapa 3: Proteger o servidor do banco de dados

A instalação padrão do servidor MySQL 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 MySQL, é recomendável executar este procedimento.

Para proteger o servidor do banco de dados
  1. Inicie o servidor MySQL.

    [ec2-user ~]$ sudo service mysqld start Initializing MySQL database: ... PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! ... Starting mysqld: [ OK ]
  2. 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.

      2. 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/. Armazene essa senha em um lugar seguro.

        A configuração de uma senha raiz para o MySQL é 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.

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

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

    4. Digite Y para remover o banco de dados de teste.

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

  3. (Opcional) Se você não pretende usar o servidor MySQL imediatamente, interrompa-o. Você poderá reiniciá-lo quando precisar dele novamente.

    [ec2-user ~]$ sudo service mysqld stop Stopping mysqld: [ OK ]
  4. (Opcional) Se você quiser que o servidor MySQL seja iniciado a cada inicialização, digite o comando a seguir.

    [ec2-user ~]$ sudo chkconfig mysqld on

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 4: Instalação (opcional) phpMyAdmin

Para instalar phpMyAdmin

phpMyAdminé 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 EC2 sua instância. Siga as etapas abaixo para instalar e configurar phpMyAdmin na sua instância 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 recomendações de segurança dos desenvolvedores, consulte Protegendo sua phpMyAdmin instalação.

nota

Atualmente, o sistema de gerenciamento de pacotes Amazon Linux não suporta a instalação automática do phpMyAdmin em um ambiente PHP 7. Este tutorial descreve como instalar phpMyAdmin manualmente.

  1. Faça login na sua EC2 instância usando SSH.

  2. Instale as dependências necessárias.

    [ec2-user ~]$ sudo yum install php72-mbstring.x86_64 -y
  3. Reinicie o Apache.

    [ec2-user ~]$ sudo service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
  4. Navegue até o diretório base do Apache em /var/www/html.

    [ec2-user ~]$ cd /var/www/html [ec2-user html]$
  5. Selecione um pacote de origem para a phpMyAdmin versão mais recente 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]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
  6. Crie uma phpMyAdmin pasta e extraia o pacote nela usando o comando a seguir.

    [ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
  7. Exclua o phpMyAdmin-latest-all-languages.tar.gz tarball.

    [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
  8. (Opcional) Se o servidor MySQL não estiver em execução, inicie-o agora.

    [ec2-user ~]$ sudo service mysqld start Starting mysqld: [ OK ]
  9. 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.
  10. 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. Para configurar phpMyAdmin, você pode criar manualmente um arquivo de configuração, usar o console de configuração ou combinar as duas abordagens.

    Para obter informações sobre o uso phpMyAdmin, consulte o Guia phpMyAdmin do usuário.

Solução de problemas

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

Não é possível 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 ~]$ chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    Aqui, httpd é on nos runlevels 2, 3, 4 e 5 (que é o que você deseja ver).

    Se o processo httpd não estiver em execução, repita as etapas descritas em Etapa 1: 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 Adicionar regras a um grupo de segurança />.

O software aplicativo compatível que desejo executar no meu servidor é incompatível com a versão PHP instalada ou outro software

Este tutorial recomenda instalar a maioria das up-to-date versões do Apache HTTP Server, PHP e MySQL. Antes de instalar um aplicativo LAMP adicional, verifique seus requisitos para ter a certeza de que ele é compatível com o ambiente instalado. Se a versão mais recente do PHP não for compatível, será possível (e totalmente seguro) fazer downgrade para uma configuração anterior com suporte. Você também pode instalar mais de uma versão do PHP em paralelo, o que resolverá alguns problemas de compatibilidade com um mínimo de esforço. Para obter informações sobre como configurar uma preferência entre várias versões do PHP, consulte Notas de release do Amazon Linux AMI 2016.09.

Como fazer downgrade

A versão anterior testada deste tutorial chamada para os seguintes pacotes LAMP principais:

  • httpd24

  • php56

  • mysql55-server

  • php56-mysqlnd

Se você já tiver instalado os pacotes mais recentes como recomendado no início deste tutorial, primeiro desinstale esses pacotes e outras dependências, conforme especificado a seguir:

[ec2-user ~]$ sudo yum remove -y httpd24 php72 mysql57-server php72-mysqlnd perl-DBD-MySQL57

Em seguida, instale o ambiente de substituição:

[ec2-user ~]$ sudo yum install -y httpd24 php56 mysql55-server php56-mysqlnd

Se você decidir fazer a atualização para o ambiente recomendado mais tarde, deverá primeiro remover os pacotes e as dependências personalizados:

[ec2-user ~]$ sudo yum remove -y httpd24 php56 mysql55-server php56-mysqlnd perl-DBD-MySQL56

Agora você pode instalar os pacotes mais recentes, como descrito anteriormente.

Tópicos relacionados

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:

Para obter mais informações sobre os comandos e o software usados neste tutorial, consulte as seguintes páginas da web:

Para obter mais informações sobre como registrar um nome de domínio para seu servidor web ou transferir um nome de domínio existente para esse host, consulte Como usar o Amazon Route 53 como serviço DNS para subdomínios sem migrar o domínio principal no Guia do desenvolvedor do Amazon Route 53.