Manager, Developer Education
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.
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.
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:
OutputAvailable 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"
OutputProfile: 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:
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.
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.
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:
<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:
<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:
OutputSorting...
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.
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:
<?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:
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.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!