1. Introdução
LAMP é o acrônimo para Linux + Apache + MySQL + PHP, ambiente mais popular para servidores Web. Obviamente, a esta altura, o Linux já está instalado. Resta, portanto, instalar o AMP. Adicionalmente, este tutorial funciona como introdução para a instalação de serviços que necessitam destes programas, como o WordPress e o NextCloud.
Nota: a versão 16.04 do Ubuntu introduziu o PHP 7.0. Segue, portanto, o tutorial atualizado, com instruções tanto para a instalação da versão corrente do LAMP, com o PHP 7.0, quanto para a instalação do LAMP com PHP 5, para quem estiver usando versões anteriores do Ubuntu.
[Atualização] O Ubuntu 17.10 introduziu algumas novidades. Além de ter adotado o PHP 7.2, o método de autenticação do MySQL mudou, para utilizar automaticamente as credenciais do usuário root do sistema.
Isso pode ser muito bacana para alguns desenvolvedores, mas para quem utiliza o banco de dados conectados a programas como o phpMyAdmin e o MySQL Workbench, ou CMS como o WordPress e o Drupal, eles podem exigir o método tradicional de credenciamento.
2. Servidor Apache
2.1. Instalando o Apache
[Nota] Se sua intenção, ao recorrer a este tutorial, for instalar o Open Atrium, é preciso observar que até maio de 2019 ele apenas suportava o PHP até a versão 7.0. Ocorre que os repositórios mais recentes do Ubuntu apenas incluem a versão 7.2 da linguagem. Para instalar versões anteriores, será necessário incluir o repositório mantido pelo desenvolvedor Ondřej Surý. Para tanto, rode os seguinte comando no Terminal (Ctrl+Alt+T), antes de seguir adiante. Se esse não for seu caso, pule esta etapa.
sudo add-apt-repository ppa:ondrej/php
Para iniciar a instalação, escolha a versão desejada abaixo e digite no Terminal (Ctrl+Alt+T):
a) PHP 8.0 [Ubuntu 21.10]
sudo apt install apache2 libapache2-mod-php8.0
b) PHP 7.4 [Ubuntu 21.04]
sudo apt install apache2 libapache2-mod-php7.4
c) PHP 7.3 [Ubuntu 19.10 a Ubuntu 20.10]
sudo apt install apache2 libapache2-mod-php7.3
d) PHP 7.2 [Ubuntu 17.10 a Ubuntu 19.04]
sudo apt install apache2 libapache2-mod-php7.2
e) PHP 7.0
sudo apt install apache2 libapache2-mod-php7.0
f) PHP 5.0:
sudo apt install apache2 libapache2-mod-php5
2.2 Testando a instalação do Apache
Para testar a instalação, abra o navegador-Web e digite o seguinte endereço:
http://localhost/
ou
http://endereço-de-ip-do-servidor/
3. MySQL
3.1. Instalando o MySQL
a) Se tiver instalado o PHP 8.0 [Ubuntu 21.10]
sudo apt install mysql-server mysql-client php8.0-mysql
b) Se tiver instalado o PHP 7.4 [Ubuntu 21.04]
sudo apt install mysql-server mysql-client php7.4-mysql
c) Se tiver instalado o PHP 7.3 [Ubuntu 19.10]
sudo apt install mysql-server mysql-client php7.3-mysql
d) Se tiver instalado o PHP 7.2 [Ubuntu 17.10 a Ubuntu 19.04]
sudo apt install mysql-server mysql-client php7.2-mysql
e) Se tiver instalado o PHP 7.0
sudo apt install mysql-server mysql-client php7.0-mysql
f) Se tiver instalado o PHP 5.0
sudo apt install mysql-server mysql-client php5-mysql
3.2. Alteração do método de autenticação [Apenas Ubuntu 17.10 e MySQL 8.0 em diante]
Se você utiliza o Ubuntu 17.10, ou mais recente, deve ter notado que não foi requerido o cadastramento de uma senha durante a instalação do MySQL.
Isso acontece porque o Ubuntu passou a utilizar o plugin auth_socket para autenticar o usuário root.
O problema é que o plugin atual utiliza a senha de login do usuário do Ubuntu para o usuário root do MYSQL. É preciso mudar isso para que os serviços remotos possam dialogar corretamente com seus bancos de dados.
Comece logando no MYSQL com o comando:
sudo mysql -u root
Dentro do console do MYSQL, vamos conferir qual é o método de autenticação em uso para o root:
SELECT user,host,plugin FROM mysql.user;
Deve aparecer uma tabela. Na coluna “user”, procure pela linha do usuário root e verifique que o plugin associado é o auth_socket.
Altere-o plugin para o caching_sha2_password, adotado pelo MYSQL em sua versão 8.0 com o comando:
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY 'escolha_uma_senha';
Logicamente, substituta ‘escolha_uma_senha’ por uma senha segura de sua escolha, diferente da senha do root do seu sistema. Em seguida, rode o comando:
FLUSH PRIVILEGES;
Confira se funcionou com o mesmo comando usado anteriormente:
SELECT user,host,plugin FROM mysql.user;
Na linha do usuário root, repare que o plugin utilizado para autenticação deve ter mudado para caching_sha2_password.
Finalmente, saia do console do MYSQL com o comando a seguir:
exit;
Se tiver funcionado, ao entrar o comando abaixo, aparecerá uma mensagem de erro.
sudo mysql -u root
Para retornar ao console do MYSQL, digite o comando a seguir. Repare que será requisitada a sua senha. Digite a senha inserida há pouco.
sudo mysql -u root -p
3.3 Para todas as versões
Para tornar a instalação segura, rode o comando abaixo:
sudo mysql_secure_installation
Quando instado a tanto, responda às perguntas da seguinte forma:
Would you like to setup VALIDATE PASSWORD plugin? (Y, se quiser usar o plugion de validação, N, se não achar necessário).
Enter current password for root (enter for none): [digite uma senha segura]
Change the root password? N (Nota: se tiver seguido o passo “3.2”, insira aqui a senha de root que será utilizada.)
Remove anonymous users? Y
Disallow root login remotely? Y
Remove test database and access to it? Y
Reload privilege tables now? Y
Responda “Yes” para as demais perguntas, até o final.
4. Instalando o PHP e outros módulos
Após instalar o servidor de dados, rode os comandos abaixo, no Terminal, para instalar o PHP e outros módulos:
a) Se tiver instalado o PHP 8.0 [Ubuntu 21.10]
sudo apt install php8.0
sudo apt install php8.0-curl php8.0-gd php8.0-intl php-pear php-imagick php8.0-imap php-memcache memcached php8.0-pspell php8.0-snmp sqlite php8.0-sqlite3 php8.0-tidy php8.0-xml php8.0-xsl build-essential php8.0-dev php8.0-fpm php8.0-cli php8.0-mbstring php8.0-zip snmp php-ssh2 php8.0-opcache php-apcu php-common php-mysql php-redis php-http-request
b) Se tiver instalado o PHP 7.4 [Ubuntu 21.04]
sudo apt install php7.4
sudo apt install php7.4-curl php7.4-gd php7.4-intl php-pear php-imagick php7.4-imap php-memcache memcached php7.4-pspell php7.4-snmp sqlite php7.4-sqlite3 php7.4-tidy php7.4-xmlrpc php7.4-xml php7.4-xsl build-essential php7.4-dev php7.4-json php7.4-fpm php7.4-cli php7.4-mbstring php7.4-zip snmp php-ssh2 php7.4-opcache php-apcu php-common php-mysql php-redis php-http-request
b) Se tiver instalado o PHP 7.3 [Ubuntu 19.10]
sudo apt install php7.3
sudo apt install php7.3-curl php7.3-gd php7.3-intl php-pear php-imagick php7.3-imap php-memcache memcached php7.3-ps php7.3-pspell php7.3-recode php7.3-snmp sqlite php7.3-sqlite php7.3-tidy php7.3-xmlrpc php7.3-xml php7.3-xsl build-essential php7.3-dev php7.3-json php7.3-fpm php7.3-cli php7.3-mbstring php7.3-zip snmp php-ssh2 php7.3-opcache php-apcu php-common php-mysql php-redis php-http-request
c) Se tiver instalado o PHP 7.2 [Ubuntu 17.10 a Ubuntu 19.04]
sudo apt install php7.2
sudo apt install php7.2-curl php7.2-gd php7.2-intl php-pear php-imagick php7.2-imap php-memcache memcached php7.2-ps php7.2-pspell php7.2-recode php7.2-snmp sqlite php7.2-sqlite php7.2-tidy php7.2-xmlrpc php7.2-xml php7.2-xsl build-essential php7.2-dev php7.2-json php7.2-fpm php7.2-cli php7.2-mbstring php7.2-zip snmp php-ssh2 php7.2-opcache php-apcu php-common php-mysql php-redis php-http-request
d) Se tiver instalado o PHP 7.0
sudo apt install php7.0
sudo apt install php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache memcached php7.0-ps php7.0-pspell php7.0-recode php7.0-snmp sqlite php7.0-sqlite php7.0-tidy php7.0-xmlrpc php7.0-xml php7.0-xsl build-essential php7.0-dev php7.0-json php7.0-fpm php7.0-cli php7.0-mbstring php7.0-zip snmp php-ssh2 php7.0-opcache php-apcu php-common php-mysql php-redis php-http-request
e) Se tiver instalado o PHP 5.0
sudo apt install php5
sudo apt-get install php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache memcached php5-ming php5-ps php5-pspell php5-recode php5-snmp sqlite php5-sqlite php5-tidy php5-xmlrpc php5-xsl build-essential php5-dev php5-json php5-fpm php5-cli php-xml-parser snmp libssh2-php php-common php-mysql php-redis php-http-request
4.1. Para todas as versões
Para testar a instalação do PHP, crie uma página de teste, com a ajuda do Nano, da seguinte forma: no Terminal, digite:
sudo nano /var/www/html/testphp.php
Será aberto com um documento vazio. Copie e cole (Shift+Ctrl+V) as seguintes linhas:
<?php phpinfo(); ?>
Salve o documento e feche o Nano com a seguinte sequência de teclas: Ctrl+X, S (ou “y”, se o sistema estiver em inglês) e Enter. Em seguida, reinicie o Apache com o comando abaixo:
sudo service apache2 restart
Nota: outras opções interessantes:
sudo service apache2 restart|stop|start|reload
Abra o navegador-Web e digite o seguinte endereço:
http://localhost/testphp.php
Se não aparecer uma resposta de erro, mas um relatório do Apache, está tudo bem.
5. Notas finais
Com o LAMP instalado, é possível desenvolver sítios-web dinâmicos inteiramente em seu computador pessoal, para depois transferí-lo inteiramente para o servidor-web remoto. Outra opção é transformar seu computador em um servidor-web, o que quer dizer que sterceiros poderão acessar seu site diretamente em sua máquina. Por fim, o LAMP pode ser utilizado para rodar aplicações-web locais, como o NextCloud, OwnCloud e o WordPress.