Pesquisa de site

Instale a pilha Apache, MySQL, PHP (LAMP) no Ubuntu 18.04 LTS


A pilha LAMP é uma plataforma de desenvolvimento web popular e de código aberto que pode ser usada para executar e implantar sites dinâmicos e aplicativos baseados na web. Normalmente, a pilha LAMP consiste em servidor web Apache, bancos de dados MariaDB/MySQL, linguagens de programação PHP/Python/Perl. LAMP é o acrônimo de Linux, MariaDB/MYSQL, PHP/P<ython/Perl. Este tutorial descreve como instalar o Apache, MySQL, PHP (pilha LAMP) no servidor Ubuntu 18.04 LTS.

Instale a pilha Apache, MySQL, PHP (LAMP) no Ubuntu 18.04 LTS

Para os fins deste tutorial, usaremos a seguinte caixa de teste do Ubuntu.

  • Sistema operacional: Ubuntu 18.04.1 LTS Server Edition
  • Endereço IP: 192.168.225.22/24

1. Instale o servidor web Apache

Primeiro de tudo, atualize o servidor Ubuntu usando comandos:

sudo apt update
sudo apt upgrade

Em seguida, instale o servidor web Apache:

sudo apt install apache2

Verifique se o servidor web Apache está rodando ou não:

sudo systemctl status apache2

A saída de exemplo seria:

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: en
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2019-02-05 10:48:03 UTC; 1min 5s ago
 Main PID: 2025 (apache2)
    Tasks: 55 (limit: 2320)
   CGroup: /system.slice/apache2.service
           ├─2025 /usr/sbin/apache2 -k start
           ├─2027 /usr/sbin/apache2 -k start
           └─2028 /usr/sbin/apache2 -k start

Feb 05 10:48:02 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
Feb 05 10:48:03 ubuntuserver apachectl[2003]: AH00558: apache2: Could not reliably
Feb 05 10:48:03 ubuntuserver systemd[1]: Started The Apache HTTP Server.

Parabéns! O serviço Apache está instalado e funcionando!!

1.1 Ajuste o firewall para permitir o servidor web Apache

Por padrão, o navegador Apache não pode ser acessado de sistemas remotos se você tiver habilitado o firewall UFW no Ubuntu 18.04 LTS. Você deve permitir as portas http e https seguindo as etapas abaixo.

Primeiro, liste os perfis de aplicativos disponíveis em seu sistema Ubuntu usando o comando:

sudo ufw app list

Exemplo de saída:

Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

Como você pode ver, os aplicativos Apache e OpenSSH possuem perfis UFW instalados. Você pode listar informações sobre cada perfil e suas regras incluídas usando o comando "ufw app info "Profile Name" .

Vejamos o perfil “Apache Full ”. Para fazer isso, execute:

sudo ufw app info "Apache Full"

Exemplo de saída:

Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
80,443/tcp

Como você pode ver, o perfil "Apache Full" incluiu as regras para permitir o tráfego para as portas 80 e 443:

Agora, execute o seguinte comando para permitir o tráfego de entrada HTTP e HTTPS para este perfil:

$ sudo ufw allow in "Apache Full"
Rules updated
Rules updated (v6)

Se você não deseja permitir tráfego https, mas apenas tráfego http (80), execute:

sudo ufw app info "Apache"
1.2 Teste o servidor Web Apache

Agora, abra seu navegador e acesse a página de teste do Apache navegando até http://localhost/ ou http://IP-Address/.

Página de teste do Apache

Se você vir uma tela como a acima, você está pronto para prosseguir. O servidor Apache está funcionando!

2. Instale o MySQL

Para instalar o MySQL no Ubuntu, execute:

sudo apt install mysql-server

Verifique se o serviço MySQL está rodando ou não usando o comando:

sudo systemctl status mysql

Exemplo de resultado:

● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enab
Active: active (running) since Tue 2019-02-05 11:07:50 UTC; 17s ago
Main PID: 3423 (mysqld)
Tasks: 27 (limit: 2320)
CGroup: /system.slice/mysql.service
└─3423 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Feb 05 11:07:49 ubuntuserver systemd[1]: Starting MySQL Community Server...
Feb 05 11:07:50 ubuntuserver systemd[1]: Started MySQL Community Server.

Mysql está rodando!

2.1 Configurar senha do usuário administrativo (root) do banco de dados

Por padrão, a senha do usuário root do MySQL está em branco. Você precisa proteger seu servidor MySQL executando o seguinte script:

sudo mysql_secure_installation

Você será perguntado se deseja configurar o plugin VALIDATE PASSWORD ou não. Este plugin permite que os usuários configurem uma senha forte para credenciais de banco de dados. Se ativado, ele verificará automaticamente a força da senha e obrigará os usuários a definir apenas as senhas que sejam seguras o suficiente. É seguro deixar este plugin desabilitado. No entanto, você deve usar uma senha forte e exclusiva para credenciais de banco de dados. Se não quiser habilitar este plugin, basta pressionar qualquer tecla para pular a parte de validação de senha e continuar o restante dos passos.

Se sua resposta for Sim, você será solicitado a escolher o nível de validação de senha.

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No y

As validações de senha disponíveis são baixa, média e forte. Basta inserir o número apropriado (0 para baixa, 1 para média e 2 para senha forte) e pressionar a tecla ENTER.

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

Agora, digite a senha do usuário root do MySQL. Lembre-se de que você deve usar a senha do usuário root do MySQL, dependendo da política de senha escolhida na etapa anterior. Se você não habilitou o plugin, basta usar qualquer senha forte e exclusiva de sua escolha.

Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 50 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Depois de inserir a senha duas vezes, você verá a força da senha (no nosso caso é 50). Se estiver tudo bem para você, pressione Y para continuar com a senha fornecida. Se não estiver satisfeito com o tamanho da senha, pressione qualquer outra tecla e defina uma senha forte. Estou bem com minha senha atual, então escolhi y.

Para o restante das perguntas, basta digitar y e pressionar ENTER. Isso removerá o usuário anônimo, impedirá o login do usuário root remotamente e removerá o banco de dados de teste.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

É isso. A senha do usuário root do MySQL foi definida.

2.2 Alterar método de autenticação para usuário root do MySQL

Por padrão, o usuário root do MySQL está configurado para autenticar usando o plugin auth_socket no MySQL 5.7 e versões mais recentes no Ubuntu. Embora aumente a segurança, também complicará as coisas quando você acessar seu servidor de banco de dados usando qualquer programa externo, por exemplo phpMyAdmin. Para corrigir esse problema, você precisa alterar o método de autenticação de auth_socket para mysql_native_password. Para fazer isso, faça login no prompt do MySQL usando o comando:

sudo mysql

Execute o seguinte comando no prompt do mysql para encontrar o método de autenticação atual para todas as contas de usuário do mysql:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Exemplo de resultado:

+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *F126737722832701DD3979741508F05FA71E5BA0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Como você pode ver, o usuário root do mysql usa o plugin auth_socket para autenticação.

Para alterar esta autenticação para o método mysql_native_password, execute o seguinte comando no prompt do mysql. Não se esqueça de substituir "senha" por uma senha forte e exclusiva de sua escolha. Se você ativou o plugin VALIDATION, certifique-se de ter usado uma senha forte com base nos requisitos da política atual.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Atualize as alterações usando o comando:

FLUSH PRIVILEGES;

Agora verifique novamente se o método de autenticação foi alterado ou não usando o comando:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Exemplo de saída:

Bom! Agora o usuário root do myql pode autenticar usando senha para acessar o shell do mysql.

Saia do prompt do mysql:

exit

3. Instale PHP

Para instalar o PHP, execute:

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

Após instalar o PHP, crie o arquivo info.php na pasta raiz do Apache. Normalmente, a pasta de documentos raiz do Apache será /var/www/html/ ou /var/www/ na maioria das distribuições Linux baseadas em Debian. No Ubuntu 18.04 LTS, é /var/www/html/.

Vamos criar o arquivo info.php na pasta raiz do apache:

sudo vi /var/www/html/info.php

Adicione as seguintes linhas:

<?php
phpinfo();
?>

Pressione a tecla ESC e digite :wq para salvar e sair do arquivo. Reinicie o serviço Apache para que as alterações tenham efeito.

sudo systemctl restart apache2
3.1 Testar PHP

Abra seu navegador e navegue até o URL http://IP-address/info.php.

Você verá a página de teste do php agora.

página de teste php

Normalmente, quando um usuário solicita um diretório do servidor web, o Apache primeiro procura por um arquivo chamado index.html. Se você deseja alterar o Apache para servir arquivos php em vez de outros, mova index.php para a primeira posição no arquivo dir.conf conforme mostrado abaixo

sudo vi /etc/apache2/mods-enabled/dir.conf

Aqui está o conteúdo do arquivo acima.

<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Mova o arquivo “index.php” para primeiro. Depois de fazer as alterações, seu arquivo dir.conf ficará como abaixo.

<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Pressione a tecla ESC e digite :wq para salvar e fechar o arquivo. Reinicie o serviço Apache para que as alterações tenham efeito.

sudo systemctl restart apache2
3.2 Instale módulos PHP

Para melhorar a funcionalidade do PHP, você pode instalar alguns módulos PHP adicionais.

Para listar os módulos PHP disponíveis, execute:

sudo apt-cache search php- | less

Exemplo de resultado:

Use as teclas de seta para ver o resultado. Para sair, digite q e pressione a tecla ENTER.

Para encontrar os detalhes de qualquer módulo php específico, por exemplo php-gd, execute:

sudo apt-cache show php-gd

Para instalar um módulo php, execute:

sudo apt install php-gd

Para instalar todos os módulos (embora não seja necessário), execute:

sudo apt-get install php*

Não se esqueça de reiniciar o serviço Apache após instalar qualquer módulo php. Para verificar se o módulo está carregado ou não, abra o arquivo info.php no seu navegador e verifique se ele está presente.

Em seguida, você pode querer instalar qualquer ferramenta de gerenciamento de banco de dados para gerenciar facilmente os bancos de dados por meio de um navegador da web. Nesse caso, instale o phpMyAdmin conforme descrito no link a seguir.

  • Instale o phpMyAdmin com LAMP Stack no Ubuntu 18.04 LTS

Parabéns! Configuramos com sucesso a pilha LAMP no servidor Ubuntu 18.04 LTS.

Leia também:

  • Instalar pilha Nginx, MariaDB, PHP (LEMP) no Ubuntu 18.04 LTS
  • Instale a pilha Apache, MariaDB, PHP (LAMP) no Arch Linux
  • Instale a pilha Nginx, MariaDB, PHP (LEMP) no Arch Linux

E isso é tudo por agora. Como você pode ver, configurar a pilha LAMP no Ubuntu é absolutamente fácil e direto.

Referência:

  • Oceano Digital

Artigos relacionados