Tutorial

Como instalar a pilha Linux, Apache, MySQL, PHP (LAMP) no Debian 9

ApachePHPLAMP StackMariaDBDebian 9Databases

Introdução

Uma pilha de software “LAMP” é um grupo de softwares de código aberto que são normalmente instalados juntos para permitir que um servidor hospede sites dinâmicos e aplicativos Web. Este termo é, na verdade, uma sigla que representa o sistema operacional Linux, com o servidor Web do Apache. Os dados do site são armazenados em uma base de dados MariaDB e o conteúdo dinâmico é processado pelo PHP.

Neste guia, instalaremos uma pilha LAMP em um servidor Debian 9.

Pré-requisitos

Para completar este tutorial, será necessário ter um servidor Debian 9 com uma conta de usuário não raiz com o sudo habilitado e um firewall básico. Isso pode ser configurado usando nosso guia de configuração inicial de servidor para o Debian 9.

Passo 1 — Instalando o Apache e atualizando o firewall

O servidor Web Apache está entre os servidores Web mais populares no mundo. Ele é bem documentado e tem sido amplamente usado em grande parte da história da Web, o que torna ele uma ótima escolha padrão para hospedar um site.

Instale o Apache usando o gerenciador de pacotes do Debian, apt:

  • sudo apt update
  • sudo apt install apache2

Como este é um comando sudo, essas operações são executadas com privilégios raiz. Ele irá pedir a senha do seu usuário para verificar suas intenções.

Assim que digitar sua senha, o apt irá dizer a você quais pacotes ele planeja instalar e quanto espaço de disco extra irão ocupar. Pressione Y e clique em ENTER para continuar, e a instalação prosseguirá.

Em seguida, supondo que tenha seguido as instruções de configuração inicial do servidor, instalando e habilitando o firewall UFW, certifique-se de que seu firewall permite o tráfego HTTP e HTTPS.

Quando instalado no Debian 9, o UFW vem carregado com perfis de app que podem ser utilizados para ajustar suas configurações de firewall. Veja a lista completa dos perfis de aplicativo executando:

  • sudo ufw app list

Os perfis WWW são usados para gerenciar portas usadas por servidores Web:

Output
Available applications: . . . WWW WWW Cache WWW Full WWW Secure . . .

Se inspecionar o perfil WWW Full, ele exibirá que habilita o tráfego para as portas 80 e 443:

  • sudo ufw app info "WWW Full"
Output
Profile: WWW Full Title: Web Server (HTTP,HTTPS) Description: Web Server (HTTP,HTTPS) Ports: 80,443/tcp

Permita o tráfego HTTP e HTTPS de entrada para este perfil:

  • sudo ufw allow in "WWW Full"

Você pode fazer uma checagem imediatamente para verificar se tudo ocorreu como planejado visitando o endereço IP público do seu servidor no seu navegador Web:

http://your_server_ip

Você verá a página Web padrão do Apache para o Debian 9, que está disponível para fins informativos e de teste. Ela deve se parecer com isto:

Debian 9 Apache default

Se ver essa página, seu servidor Web agora está instalado corretamente e é acessível através do seu firewall.

Se não sabe qual é o endereço IP público do seu servidor, há uma série de maneiras para encontrá-lo. Normalmente, este é o endereço que você usa para se conectar ao seu servidor através do SSH.

Existem algumas maneiras de fazer isso a partir da linha de comando. Primeiro, poderia usar as ferramentas iproute2 para obter seu endereço IP digitando:

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Isso retornará a você duas ou três linhas. Todos os endereços são corretos, mas seu computador consegue usar apenas um deles, então sinta-se à vontade para testar cada um.

Um método alternativo é usar o utilitário curl para contatar uma entidade exterior para dizer a você como ela vê seu servidor. Isso é feito perguntando a um servidor específico qual é seu endereço IP:

  • sudo apt install curl
  • curl http://icanhazip.com

Independentemente do método que você usa para obter seu endereço IP, digite-o na barra de endereço do seu navegador Web para ver a página padrão do Apache.

Passo 2 — Instalando o MariaDB

Agora que você tem seu servidor Web em funcionamento, é hora de instalar o MariaDB. O MariaDB é um sistema de gerenciamento de banco de dados. Basicamente, ele irá organizar e fornecer acesso aos bancos de dados onde seu site pode armazenar informações.

O MariaDB é uma bifurcação feita pela comunidade do MySQL. No Debian 9, o servidor padrão MySQL é o MariaDB 10.1, e o pacote mysql-server, que é normalmente usado para instalar o MySQL, é um pacote transitório que irá instalar o MariaDB. No entanto, é recomendável que instale o MariaDB usando o pacote real do programa, o mariadb-server.

Novamente, utilize o apt para adquirir e instalar este software:

  • sudo apt install mariadb-server

Nota: neste caso, não será necessário executar o sudo apt update antes do comando. Isso se dá pois você o executou recentemente nos comandos acima para instalar o Apache, e o índice de pacotes no seu computador já deve estar atualizado.

Este comando também irá mostrar a você uma lista dos pacotes que serão instalados, junto com a quantidade de espaço em disco que irão ocupar. Digite Y para continuar.

Quando a instalação for concluída, execute um script de segurança simples que vem pré-instalado com o MariaDB, que removerá algumas configurações padrão inseguras e irá bloquear o acesso ao seu sistema de banco de dados. Inicie o script interativo executando:

  • sudo mysql_secure_installation

Isso levará você através de uma série de prompts onde é possível fazer algumas alterações nas opções de segurança de sua instalação do MariaDB. O primeiro prompt pedirá que digite a senha root do banco de dados atual. Esta é uma conta administrativa no MariaDB que tem mais privilégios. Pense nela como sendo similar à conta root para o servidor em si (embora essa conta que você está configurando agora é uma conta específica do MariaDB). Como você instalou o MariaDB e ainda não fez nenhuma alteração de configuração, essa senha estará em branco. Dessa forma, pressione apenas ENTER no prompt.

O próximo prompt pergunta a você se deseja configurar uma senha root do banco de dados. Digite N e então pressione ENTER. No Debian, a conta root para o MariaDB está intimamente ligada à manutenção automatizada do sistema, então não deve-se alterar os métodos de autenticação configurados para essa conta. Se isso fosse feito, seria possível a atualização de pacotes para a quebra do sistema de banco de dados pela remoção do acesso à conta administrativa. Mais tarde, vamos tratar de como configurar, de forma opcional, uma conta administrativa adicional para o acesso por senha caso a autenticação por soquete não seja apropriada para o seu caso de uso.

A partir daí, pressione Y e então ENTER para aceitar as configurações padrão para todas as perguntas subsequentes. Isso irá remover alguns usuários anônimos e o banco de dados teste, desativará os logins remotos ao root, e carregará essas novas regras para que o MariaDB respeite imediatamente as alterações que você fez.

Em novas instalações nos sistemas Debian, o usuário root MariaDB é configurado para autenticar usando o plug-in unix_socket por padrão ao invés de fazê-lo com uma senha. Isso permite maior segurança e usabilidade na maioria dos casos, mas também pode complicar as coisas quando for necessário permitir direitos administrativos a um programa externo (por exemplo, o phpMyAdmin).

Como o servidor usa a conta root para tarefas como a rotação de registro e a inicialização e parada do servidor, é melhor não alterar os detalhes de autenticação da conta root. A alteração das credenciais da conta no /etc/mysql/debian.cnf pode funcionar inicialmente, mas as atualizações de pacotes podem substituir essas alterações. Ao invés de modificar a conta root, os mantenedores de pacotes recomendam a criação de uma conta administrativa separada caso seja necessário configurar o acesso baseado em senha.

Para fazer isso, criaremos uma nova conta chamada admin com as mesmas capacidades que a conta root, mas configurada para a autenticação por senha. Para fazer isso, abra o prompt do MariaDB do seu terminal:

  • sudo mariadb

Agora, podemos criar um novo usuário com privilégios root e acesso baseado em senha. Altere o nome de usuário e senha para que correspondam às suas preferências:

  • GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Descarregue os privilégios para garantir que eles estão salvos e disponíveis na sessão atual:

  • FLUSH PRIVILEGES;

Em seguida, saia do shell do MariaDB:

  • exit

Agora, quando quiser acessar seu banco de dados como seu novo usuário administrativo, será necessário autenticar-se como aquele usuário com a senha que você acabou de definir usando o seguinte comando:

  • mariadb -u admin -p

Neste ponto, seu sistema de banco de dados está configurado e você pode seguir em frente para a instalação do PHP, o componente final da pilha LAMP.

Passo 3 — Instalando o PHP

O PHP é o componente da sua configuração que irá processar o código para mostrar conteúdo dinâmico. Ele pode executar os scripts, conectar-se aos seus bancos de dados do MariaDB para obter informações e entregar o conteúdo processado ao seu servidor Web para exibição.

Novamente, utilize o sistema apt para instalar o PHP. Além disso, inclua alguns pacotes auxiliares para que desta vez o código PHP possa ser executado no servidor do Apache e se comunique com seu banco de dados do MariaDB:

  • sudo apt install php libapache2-mod-php php-mysql

Isso deve instalar o PHP sem problemas. Vamos testar isso em instantes.

Na maioria dos casos, será vantajoso modificar a maneira que o Apache atende aos arquivos quando um diretório for solicitado. Atualmente, caso um usuário solicite um diretório do servidor, o Apache irá procurar primeiro um arquivo chamado index.html. Queremos dizer ao servidor Web para preferir arquivos PHP em relação a outros, então faça com que o Apache procure pelo arquivo index.php primeiro.

Para fazer isso, digite este comando para abrir o arquivo dir.conf em um editor de texto com privilégios raiz:

  • sudo nano /etc/apache2/mods-enabled/dir.conf

Ele se parecerá com isso:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Mova o arquivo de índice do PHP (destacado acima) para a primeira posição após a especificação DirectoryIndex, desta forma:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Quando terminar, salve e feche o arquivo pressionando CTRL+X. Confirme o salvamento digitando Y e então clique em ENTER para verificar a localização do arquivo de salvamento.

Após isso, reinicie o servidor Web Apache para que suas alterações sejam reconhecidas. Faça isso digitando:

  • sudo systemctl restart apache2

Você também pode verificar o status do serviço apache2 usando o systemctl:

  • sudo systemctl status apache2
Sample Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 22221 (apache2) Tasks: 6 (limit: 4915) CGroup: /system.slice/apache2.service ├─22221 /usr/sbin/apache2 -k start ├─22222 /usr/sbin/apache2 -k start ├─22223 /usr/sbin/apache2 -k start ├─22224 /usr/sbin/apache2 -k start ├─22225 /usr/sbin/apache2 -k start └─22226 /usr/sbin/apache2 -k start

Para melhorar a funcionalidade do PHP, você tem a opção de instalar alguns módulos adicionais. Para ver as opções disponíveis para módulos e bibliotecas do PHP, canalize os resultados de apt search em less, um pager que permite que você percorra os resultados de outros comandos:

  • apt search php- | less

Use as teclas de seta para se deslocar para cima e para baixo, e pressione Q para sair.

Os resultados são todos componentes opcionais que você pode instalar. Será dado a você uma breve descrição para cada um:

Output
Sorting... Full Text Search... bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64 Tracks usage of TCP/IP and builds html files with graphs bluefish/stable 2.2.9-1+b1 amd64 advanced Gtk+ text editor for web and software development cacti/stable 0.8.8h+ds1-10 all web interface for graphing of monitoring systems cakephp-scripts/stable 2.8.5-1 all rapid application development framework for PHP (scripts) ganglia-webfrontend/stable 3.6.1-3 all cluster monitoring toolkit - web front-end haserl/stable 0.9.35-2+b1 amd64 CGI scripting program for embedded environments kdevelop-php-docs/stable 5.0.3-1 all transitional package for kdevelop-php kdevelop-php-docs-l10n/stable 5.0.3-1 all transitional package for kdevelop-php-l10n … :

Para aprender mais sobre o que cada módulo faz, procure na Internet mais informações a respeito deles. De forma alternativa, consulte a descrição do pacote digitando:

  • apt show package_name

Haverá um resultado extenso, com um campo chamado Description que terá uma explicação mais longa da funcionalidade que o módulo fornece.

Por exemplo, para descobrir o que o módulo php-cli faz, digite isso:

  • apt show php-cli

Junto com uma grande quantidade de outras informações, você encontrará algo que se parece com isso:

Output
… Description: command-line interpreter for the PHP scripting language (default) This package provides the /usr/bin/php command interpreter, useful for testing PHP scripts from a shell or performing general shell scripting tasks. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. . This package is a dependency package, which depends on Debian's default PHP version (currently 7.0). …

Se, após a pesquisa, você decidir que quer instalar um pacote, faça isso usando o comando apt install como tem feito para os outros softwares.

Se decidiu que o php-cli é algo que precisa, digite:

  • sudo apt install php-cli

Se quiser instalar mais de um módulo, faça isso pela listagem de cada um, separados por um espaço, seguindo o comando apt install, desta forma:

  • sudo apt install package1 package2 ...

Neste ponto, sua pilha LAMP está instalada e configurada. No entanto, antes de fazer mais alterações ou implantar um aplicativo, seria útil testar proativamente sua configuração do PHP, para o caso de haver problemas que devam ser resolvidos.

Passo 4 — Testando o processamento do PHP no seu servidor Web

Para testar se seu sistema está configurado corretamente para o PHP, crie um script bem básico do PHP chamado info.php. Para que o Apache encontre este arquivo e o atenda corretamente, ele deve ser salvo em um diretório muito específico chamado web root.

No Debian 9, este diretório está localizado em /var/www/html/. Crie o arquivo naquele local executando:

  • sudo nano /var/www/html/info.php

Isso abrirá um arquivo em branco. Adicione o seguinte texto, que é um código válido do PHP, dentro do arquivo:

/var/www/html/info.php
<?php
phpinfo();
?>

Quando você terminar, salve e feche o arquivo.

Agora, você pode testar se seu servidor Web consegue exibir corretamente o conteúdo gerado por este script do PHP. Para testar isso, visite esta página no seu navegador Web. O seu endereço IP público do seu servidor será necessário novamente.

O endereço a ser visitado é:

http://your_server_ip/info.php

A página que você acessar deve se parecer com esta:

Debian 9 default PHP info

Esta página fornece algumas informações básicas sobre seu servidor na perspectiva do PHP. Ela é útil para a depuração e para garantir que suas configurações estejam sendo aplicadas corretamente.

Se você puder ver essa página no seu navegador, então seu PHP está funcionando como esperado.

Provavelmente, você quer remover este arquivo após este teste porque ele poderia fornecer informações sobre seu servidor para usuários não autorizados. Para fazer isso, execute o seguinte comando:

  • sudo rm /var/www/html/info.php

Você sempre pode recriar essa página se precisar acessar as informações novamente mais tarde.

Conclusão

Agora que tem uma pilha LAMP instalada, você tem muitas opções para o que fazer a seguir. Basicamente, você instalou uma plataforma que permitirá que instale a maioria dos tipos de sites e softwares Web no seu servidor.

Creative Commons License