Servidor LAMP · 13 min read · Dec 26, 2025

Tutorial do servidor LAMP Ubuntu 18.04 (LTS) com Apache, PHP 7.2 e MySQL

LAMP é a sigla para L inux, A pache, M ySQL, P HP. Este tutorial mostra como você pode instalar um servidor web Apache em um servidor Ubuntu 18.04 LTS (Bionic Beaver) com PHP 7.2 (mod_php) e suporte a MySQL / MariaDB e como configurar um certificado SSL com Let’s Encrypt. Além disso, vou instalar o PHPMyAdmin para facilitar a administração do MySQL. Uma configuração LAMP é uma base perfeita para sistemas CMS populares como Joomla, Wordpress ou Drupal.

Nota Preliminar

Neste tutorial, usarei o nome do host server1.example.com com o endereço IP 192.168.1.100. Essas configurações podem diferir para você, então você deve substituí-las onde apropriado.

Recomendo usar uma configuração de servidor Ubuntu mínima como base para o tutorial, que pode ser uma imagem de servidor virtual ou root com uma instalação mínima do Ubuntu 18.04 de uma empresa de hospedagem ou você pode usar nosso tutorial de servidor mínimo para instalar um servidor do zero.

Estou executando todas as etapas deste tutorial com privilégios de root, então certifique-se de que você está logado como root:

sudo -s

1. Instalando o Banco de Dados MySQL ou MariaDB

Atualmente, existem dois sistemas de banco de dados MySQL amplamente utilizados, o clássico servidor “MySQL” que é desenvolvido pela Oracle e está disponível na versão 5.7 agora e o fork do MySQL chamado MariaDB que é desenvolvido pelo desenvolvedor original do MySQL, Monty Widenius.

Vou mostrar como instalar ambas as alternativas abaixo. Basta seguir o capítulo 1.1 ou 1.2, mas não ambos. Usarei o MySQL 5.7 para a imagem da máquina virtual que pode ser baixada do Howtoforge.

1.1 Instalar MySQL 5.7

Para instalar o MySQL 5.7, execute este comando:

apt-get -y install mysql-server mysql-client

Os pacotes mysql-server e mysql-client são chamados de ‘meta-pacotes’, eles sempre instalam a versão mais recente do MySQL que está disponível no Ubuntu. A versão mais recente é atualmente o MySQL 5.7.

Já definimos a senha root para o MySQL durante a instalação, mas gostaria de remover o usuário anônimo e o banco de dados de teste por razões de segurança. Execute o comando mysql_secure_installation abaixo para conseguir isso.

mysql_secure_installation

Você será perguntado estas questões:

Securing the MySQL server deployment.
Enter password for user root: <-- Digite a senha root do MySQL
VALIDATE PASSWORD PLUGIN pode ser usado para testar senhas  
e melhorar a segurança. Ele verifica a força da senha  
e permite que os usuários definam apenas aquelas senhas que são  
seguras o suficiente. Você gostaria de configurar o plugin VALIDATE PASSWORD?
Press y|Y for Yes, any other key for No:  
Usando a senha existente para root.  
Mudar a senha para root? ((Press y|Y for Yes, any other key for No) : <-- Escolha 'y' aqui se você quiser habilitar a validação de senha, eu não preciso dessa função, então escolho 'n' aqui.
... pulando.  
Por padrão, uma instalação do MySQL tem um usuário anônimo,  
permitindo que qualquer um faça login no MySQL sem ter que ter  
uma conta de usuário criada para eles. Isso é destinado apenas para  
teste, e para tornar a instalação um pouco mais suave.  
Você deve removê-los antes de passar para um ambiente de produção.
Remover usuários anônimos? (Press y|Y for Yes, any other key for No) : <-- y  
Sucesso.

Normalmente, o root deve ser permitido apenas conectar-se de  
'localhost'. Isso garante que alguém não possa adivinhar a  
senha root pela rede.
Desabilitar login remoto para root? (Press y|Y for Yes, any other key for No) : <-- y  
Sucesso.
Por padrão, o MySQL vem com um banco de dados chamado 'test' que  
qualquer um pode acessar. Isso também é destinado apenas para teste,  
e deve ser removido antes de passar para um ambiente de produção.

Remover banco de dados de teste e acesso a ele? (Press y|Y for Yes, any other key for No) : <-- y  
- Removendo banco de dados de teste...  
Sucesso.
- Removendo privilégios no banco de dados de teste...  
Sucesso.
Recarregar as tabelas de privilégios garantirá que todas as mudanças  
feitas até agora terão efeito imediatamente.
Recarregar tabelas de privilégios agora? (Press y|Y for Yes, any other key for No) : <-- y  
Sucesso.
Tudo pronto!

A configuração do MySQL foi segura agora.

1.2 Instalar MariaDB 10

Execute o seguinte comando para instalar o servidor e cliente MariaDB:

apt-get -y install mariadb-server mariadb-client

Agora definimos uma senha root para o MariaDB.

mysql_secure_installation

Você será perguntado estas questões:

Enter current password for root (enter for none): <-- pressione enter  
Definir senha root? [Y/n] <-- y  
Nova senha: <-- Digite a nova senha root do MariaDB aqui  
Repetir nova senha: <-- Repita a senha  
Remover usuários anônimos? [Y/n] <-- y  
Desabilitar login remoto para root? [Y/n] <-- y  
Recarregar tabelas de privilégios agora? [Y/n] <-- y

1.3 Testar o login root do MySQL/MariaDB

Teste o login no MariaDB com o comando “mysql”

mysql -u root -p

e digite a senha root do MariaDB que você definiu acima. O resultado deve ser semelhante à captura de tela abaixo:

Testando o login root do MySQL no Ubuntu 18.04 LTS

Para sair do shell do MySQL/MariaDB, digite o comando “quit” e pressione enter.

2. Instalar o Servidor Web Apache

O Apache 2 está disponível como um pacote do Ubuntu, portanto, podemos instalá-lo assim:

apt-get -y install apache2

Agora dirija seu navegador para http://192.168.1.100, e você deve ver a página padrão do Apache2 (Funciona!):

A página padrão do Apache

A raiz do documento do vhost padrão do apache é /var/www/html no Ubuntu e o arquivo de configuração principal é /etc/apache2/apache2.conf. O sistema de configuração está totalmente documentado em /usr/share/doc/apache2/README.Debian.gz.

3. Instalar PHP 7.2

Podemos instalar o PHP 7.2 e o módulo PHP do Apache da seguinte forma:

apt-get -y install php7.2 libapache2-mod-php7.2

Em seguida, reinicie o Apache:

systemctl restart apache2

4. Testar o PHP e obter detalhes sobre sua instalação do PHP

A raiz do documento do site padrão é /var/www/html. Agora vamos criar um pequeno arquivo PHP (info.php) nesse diretório e chamá-lo em um navegador. O arquivo exibirá muitos detalhes úteis sobre nossa instalação do PHP, como a versão do PHP instalada.

nano /var/www/html/info.php

Em seguida, mude o proprietário do arquivo info.php para o usuário e grupo www-data.

chown www-data:www-data /var/www/html/info.php

Agora chamamos esse arquivo em um navegador (por exemplo, http://192.168.1.100/info.php):

Ubuntu 18.04 PHP 7.2 info

Como você pode ver, o PHP 7.2 está funcionando, e está funcionando através do Manipulador Apache 2.0, como mostrado na linha do API do Servidor. Se você rolar mais para baixo, verá todos os módulos que já estão habilitados no PHP. O MySQL não está listado lá, o que significa que ainda não temos suporte a MySQL / MariaDB no PHP.

5. Obter suporte a MySQL / MariaDB no PHP

Para obter suporte a MySQL no PHP, podemos instalar o pacote php7.2-mysql. É uma boa ideia instalar alguns outros módulos PHP também, pois você pode precisar deles para suas aplicações. Você pode procurar módulos PHP disponíveis assim:

apt-cache search php7.2

e

apt-cache search php-

pois nem todos os pacotes PHP têm o número da versão 7.2 em seus nomes.

Escolha os que você precisa e instale-os assim:

apt-get -y install php7.2-mysql php7.2-curl php7.2-gd php7.2-intl php-pear php-imagick php7.2-imap php-memcache php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-mbstring php-gettext

Agora reinicie o Apache2:

systemctl restart apache2

PHP 7.2 com extensão MySQL carregada

O PHP 7.2 agora tem suporte a MySQL / MariaDB, como mostrado no phpinfo() acima.

6. Instalar o cache Opcache + APCu PHP para acelerar o PHP

O PHP 7 vem com um cache de opcode embutido para armazenar em cache e otimizar o código intermediário do PHP, ele se chama ‘opcache’ e está disponível no pacote php7.0-opcache. É altamente recomendável ter um Opcache instalado para acelerar sua página PHP. Além do opcache, vou instalar o APCu, que é um wrapper de compatibilidade para o opcache para fornecer as funções do cache APC, um sistema de cache frequentemente usado nas versões PHP 5.x e muitos sistemas CMS ainda o utilizam.

Opcache e APCu podem ser instalados da seguinte forma:

apt-get -y install php7.2-opcache php-apcu

Não se preocupe se mostrar que o Opcache já está instalado.

Agora reinicie o Apache:

systemctl restart apache2

Agora recarregue http://192.168.1.100/info.php em seu navegador e role para baixo até a seção de módulos novamente. Você deve agora encontrar muitos novos módulos lá:

APC e APCu habilitados no PHP 7.2

Por favor, não se esqueça de excluir o arquivo info.php quando você não precisar mais dele, pois ele fornece detalhes sensíveis do seu servidor. Execute o seguinte comando para excluir o arquivo.

rm -f /var/www/html/info.php

7. Habilitar o site SSL no Apache

SSL/TLS é uma camada de segurança para criptografar a conexão entre o navegador da web e seu servidor. A maioria dos navegadores da web começa a mostrar sites como inseguros hoje quando a conexão entre o servidor e o navegador da web não está criptografada com SSL. Neste capítulo, vou mostrar como proteger seu site com SSL.

Execute os seguintes comandos em seu servidor para habilitar o suporte SSL (https://). Execute:

a2enmod ssl  
a2ensite default-ssl

que habilita o módulo SSL e adiciona um symlink na pasta /etc/apache2/sites-enabled para o arquivo /etc/apache2/sites-available/default-ssl.conf para incluí-lo na configuração ativa do apache. Em seguida, reinicie o apache para habilitar a nova configuração:

systemctl restart apache2

Agora teste a conexão SSL abrindo https://192.168.1.100 em um navegador.

Aviso de certificado SSL autoassinado

Você receberá um aviso SSL, pois o certificado SSL do servidor é um certificado SSL “autoassinado”, isso significa que o navegador não confia neste certificado por padrão e você deve aceitar o aviso de segurança primeiro. Após aceitar o aviso, você verá a página padrão do apache.

Apache com SSL habilitado

O “cadeado verde” fechado na frente da URL no navegador mostra que a conexão está criptografada.

Existem duas maneiras de se livrar do aviso SSL, ou substituir o certificado SSL autoassinado /etc/ssl/certs/ssl-cert-snakeoil.pem por um certificado SSL assinado oficialmente que você compra de uma Autoridade SSL ou você obtém um certificado SSL gratuito do Let’s Encrypt, que descreverei no capítulo 8.

8. Obter um Certificado SSL gratuito do Let’s Encrypt

O primeiro passo para proteger o site com um Certificado SSL Let’s Encrypt é instalar o pacote python3-certbot-apache. Execute o seguinte comando:

apt-get -y install python3-certbot-apache

No próximo passo, solicitaremos um certificado SSL do Let’s Encrypt usando o programa cliente certbot, durante esse processo, o servidor Let’s Encrypt tenta se conectar ao seu servidor através do nome de domínio que você fornece ao comando certbot. É importante que esse nome de domínio aponte para o seu servidor no DNS já para que o site seja acessível pelo seu nome de domínio na porta 80 (http) já. Se o site não for acessível pela internet, a criação do certificado SSL Let’s Encrypt falhará.

Antes que possamos começar a criar o certificado SSL, defina o nome de domínio no arquivo de configuração do vhost. Abra o arquivo vhost padrão com um editor:

nano /etc/apache2/sites-available/000-default.conf

e adicione a linha:

ServerName example.com

Logo abaixo da linha ‘DocumentRoot’. Substitua example.com pelo nome de domínio do seu próprio site.

Em seguida, crie o Certificado SSL com este comando:

certbot --apache -d example.com

Substitua example.com pelo seu nome de domínio aqui novamente. O comando iniciará um assistente que lhe fará várias perguntas.

Digite o endereço de e-mail onde o administrador responsável por este site pode ser contatado.

Aceite os termos e condições da autoridade SSL Let’s Encrypt.

O Certbot agora perguntará se você gostaria de compartilhar seu endereço de e-mail com a Electronic Frontier Foundation. Escolha aqui o que preferir.

Em seguida, escolha se deseja redirecionar automaticamente as solicitações não SSL para https://. Vou selecionar sim aqui para evitar problemas de conteúdo duplicado quando o site estiver disponível como versão http:// e https://.

Redirecionar solicitações HTTP

O certificado SSL foi emitido com sucesso.

Certificado SSL emitido com sucesso

Quando você acessar o site agora com um navegador, será redirecionado automaticamente para SSL e o cadeado verde na frente da barra de URL no navegador mostra que estamos usando um certificado SSL confiável agora.

Site protegido por SSL

8.1 Renovação Automática do Let’s Encrypt

Os certificados SSL Let’s Encrypt são válidos por um curto período de 80 dias apenas. Portanto, um cronjob para renovar automaticamente os certificados SSL é necessário que execute o comando certbot –renew.

Esse cronjob é configurado automaticamente quando você instala o certbot, o arquivo cron é /etc/cron.d/certbot. Portanto, não há mais nada a fazer aqui. Se você quiser saber como é o cronjob, execute o comando:

/etc/cron.d/certbot

O resultado é:

root@server1:~# cat /etc/cron.d/certbot  
# /etc/cron.d/certbot: entradas crontab para o pacote certbot  
#  
# O upstream recomenda tentar renovar duas vezes por dia  
#  
# Eventualmente, isso será uma oportunidade para validar certificados  
# que não foram revogados, etc. A renovação só ocorrerá se a expiração  
# estiver dentro de 30 dias.  
SHELL=/bin/sh  
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 */12 * * * root test -x /usr/bin/certbot -a \\! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

9. Instalar o phpMyAdmin

O phpMyAdmin é uma interface web através da qual você pode gerenciar seus bancos de dados MySQL. É uma boa ideia instalá-lo:

apt-get -y install phpmyadmin

IMPORTANTE: O instalador apt fará várias perguntas agora, uma delas é selecionar o tipo de servidor web. Um erro comum é que o tipo de servidor web está apenas destacado, mas não selecionado. Para selecionar um item em um menu apt, você deve pressionar a barra de espaço no teclado após navegar até o item com as teclas tab ou cursor. Apenas destacá-lo não é suficiente!

Você verá as seguintes perguntas:

Servidor web para configurar automaticamente: <-- Selecione a opção: apache2  
Configurar banco de dados para phpmyadmin com dbconfig-common? <-- Sim  
Senha da aplicação MySQL para phpmyadmin: <-- Pressione enter, o apt criará uma senha aleatória automaticamente.

9.1 Acesso root ao PHPMyAdmin

MariaDB e MySQL habilitam um plugin chamado “unix_socket” para o usuário root por padrão, esse plugin impede que o usuário root possa fazer login no PHPMyAdmin e que conexões TCP ao MySQL funcionem para o usuário root. Para obter um usuário com privilégios para criar outros usuários e bancos de dados no PHPMyAdmin, vou criar um novo usuário MySQL com o nome “admin” com os mesmos privilégios que o usuário root.

Faça login no banco de dados MySQL como usuário root no shell:

mysql -u root

Crie um novo usuário com o nome “admin” e senha “howtoforge”. Substitua a senha “howtoforge” por uma senha segura nos comandos abaixo!

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';  
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;  
FLUSH PRIVILEGES;  
exit

Depois, você pode acessar o phpMyAdmin em http://192.168.1.100/phpmyadmin/:

Login do phpMyAdmin

Login como usuário administrativo no phpMyAdmin

10 Download da imagem da máquina virtual deste tutorial

Este tutorial está disponível como uma imagem de máquina virtual pronta para uso no formato ovf/ova que é compatível com VMWare e Virtualbox. A imagem da máquina virtual usa os seguintes detalhes de login:

Login SSH / Shell

Nome de usuário: administrator
Senha: howtoforge

Este usuário tem direitos sudo.

Login MySQL

Nome de usuário: root
Senha: howtoforge

O IP da VM é 192.168.1.100, ele pode ser alterado no arquivo /etc/network/interfaces. Por favor, altere todas as senhas acima para proteger a máquina virtual.

11 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.