17 de novembro de 2022 - Frederico Marinho

Como instalar LAMP completo com PHP 8.1 e 7.4 no Ubuntu 22.04

Nesse post vou explicar como instalar e executar o PHP 8.1 e 7.4 no Ubuntu 22.04, completando o LAMP com a instalação do Apache, MySQL e do PhpMyAdmin funcionando em todas as versões do PHP instaladas, tudo atrás de linhas de comando. Você terá um servidor web local, em seu computador, pronto para rodar aplicações e sites desenvolvidos em PHP.

Depois de quase 30 anos da sua criação, o PHP segue sendo uma das linguagens de programação a nível de servidor mais utilizadas no mundo para desenvolvimento web.

A 8.1 é a última versão do PHP até o momento, lançada em novembro de 2021. Nesse post você vai aprender a instalar essa última versão no Ubuntu 22.04 e configurado para ser executado em servidor Apache.

O intuito de ter duas versões do PHP é para manter o legado. Alguns frameworks e CMS em suas últimas versões, como o Laravel 9, WinterCMS e o OctoberCMS, já exigem o PHP 8.1. Já para executar projetos antigos que você, eventualmente, precise dar alguma manutenção, ter uma versão mais antiga do PHP é necessário.

Pra começar, basicamente vamos instalar todo o LAMP com o PHP 8.1 e depois de tudo pronto, instalamos também o 7.4. Particularmente gosto muito do pacote aptitude para instalar tudo, porque ajuda a corrigir as dependências e nesse caso será necessário instalá-lo antes. Mas fique a vontade para usar o apt-get se preferir.

sudo apt-get install aptitude

Instalar Apache

sudo aptitude install apache2

Instalar PHP 8.1

Por padrão o Ubuntu 22.04 só dá suporte ao PHP 8.1, então precisamos instalar o repositório que fornece as versões anteriores.

sudo add-apt-repository ppa:ondrej/php

Você vai precisar pressionar ENTER para finalizar a operação. Agora atualize o repositório:

sudo apt-get update

Agora instale o PHP 8.1 (se preferir por instalar o 7.0, 7.1, 7.2 ou 7.3). Se precisar de versões ainda mais antigas, veja esse post.

sudo aptitude install php8.1 libapache2-mod-php8.1 php8.1-mysql php8.1-common php8.1-curl php8.1-json php8.1-xml php8.1-mbstring php8.1-gettext php8.1-pdo php8.1-gd php8.1-zip php8.1-soap php8.1-xmlrpc php8.1-intl php8.1-mysqlnd php8.1-cli php8.1-dev php8.1-zip libapache2-mod-php8.1 php8.1-curl php8.1-bz2 php-pear

Instalar o MySQL/MariaDB

Simples e direto:

sudo aptitude install mariadb-server

Testar o servidor

Pronto. O servidor já estará funcionando. Você pode estar se perguntando como, já que não precisou instalar o Apache. Na verdade ele foi instalado no mesmo momento que você instalou o PHP. Veio no pacote completo.

Para testar, acesse o navegador da sua preferência e entre no localhost:

Se apareceu a tela do Apache de Boas-Vindas, tudo certo. Caso contrário, sugiro remover tudo e recomeçar do início.

Configuração da timezone no Apache e PHP

Aconselho fazer a configuração do UTC para o melhor funcionamento do seu servidor. Edite o php.ini:

sudo gedit /etc/php/8.1/apache2/php.ini

Procure por date.timezone. Vai ser preciso remover o ponto-e-vírgula antes para ativar a configuração. Preenche com o seu UTC correto, de acordo com a sua região.

Altere também as seguintes variáveis:

upload_max_filesize = 200
post_max_size = 200
max_input_vars = 5000

Coloque os valores que forem melhores para seu ambiente, esses são os que normalmente uso.

Depois de salvar o arquivo PHP.ini, reinicie o servidor Apache:

sudo service apache2 restart

Alterar a senha de root do MySQL

Deixar a senha vazia do usuário root para um servidor local é uma possibilidade, mas se for servidor de produção nem precisa falar que é essencial colocar uma senha forte né?

sudo mysql

Dentro do terminal do MySQL, entre com o comando abaixo trocando “sua_senha_nova” para senha que você desejar:

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

Instalando o PHP 7.4

Agora basta instalar a versão do PHP alternativa que você gostaria de utilizar, inclusive mais de uma se achar necessário. No meu caso, vou instalar a versão 7.4:

sudo aptitude install php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-common php7.4-curl php7.4-json php7.4-xml php7.4-mbstring php7.4-gettext php7.4-pdo php7.4-gd php7.4-zip php7.4-soap php7.4-xmlrpc php7.4-intl php7.4-mysqlnd php7.4-cli php7.4-dev php7.4-zip libapache2-mod-php7.4 php7.4-curl php7.4-bz2

Depois de finalizado, agora é preciso instalar a habilitar o módulo fcgi que vai fazer essa organização, além da instalação do módulo fpm do php que deve ser instalado para cada versão do PHP que será utilizada nesse servidor.

sudo aptitude install libapache2-mod-fcgid
sudo aptitude install php7.4-fpm php8.1-fpm
sudo a2enmod actions fcgid alias proxy_fcgi

Agora é só reiniciar o apache.

sudo service apache2 restart

Configurando a versão padrão do PHP no Ubuntu

A partir do momento que possuímos mais de uma versão do PHP instaladas, pode ser que seja preciso definir uma versão específica como padrão. Para isso, utilize os comandos abaixo:

Para colocar o PHP 7.4 como padrão:

sudo update-alternatives --set php /usr/bin/php7.4

Para colocar o PHP 8.1 como padrão:

sudo update-alternatives --set php /usr/bin/php8.1

Para as demais versões, siga a mesma lógica.

Alternar entre as versões do PHP instaladas

Para alterar as versões do PHP é necessário desativar a que está ativa e ativar a nova.

Desativar PHP 7.4:

sudo a2dismod php7.4

Ativar a versão 8.1:

sudo a2enmod php8.1

Reiniciar o apache:

sudo service apache2 restart

Instalar o PhpMyAdmin

O phpMyAdmin é um excelente gerenciador de banco de dados para servidores VPS ou Cloud. Facilita muito o trabalho de editar, criar e apagar bancos de dados e tabelas, além de adicionar ou remover campos e dados. Evita ter que rodar comandos SQL no terminal, o que pode ser pouco produtivo.

Abaixo explico como instalar o phpMyAdmin no Ubuntu 22.04 com as versões do PHP 8.1 e 7.4.

Você vai precisar instalar dois pacotinhos, que talvez já tenha instalado ai:

sudo apt install apache2 wget unzip

Vamos agora baixar a última versão do phpMyAdmin a partir da página oficial de download, descompactar com o Unzip e depois mover para o local correto. Faça os comandos:

É preciso habilitar o módulo mbstring:

cd ~/Downloads
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.zip
unzip phpMyAdmin-5.2.0-all-languages.zip
sudo mv phpMyAdmin-5.2.0-all-languages /usr/share/phpmyadmin

O próximo passo é criar uma pasta tmp e configurar as permissões adequadas. Necessário para funcionamento correto:

sudo mkdir /usr/share/phpmyadmin/tmp
sudo chown -R www-data:www-data /usr/share/phpmyadmin
sudo chmod 777 /usr/share/phpmyadmin/tmp

Configurar o phpMyAdmin

Agora precisamos configurar o servidor web para “servir” o phpMyAdmin na rede. Vamos criar uma configuração Apache com um editor de texto:

sudo vim /etc/apache2/conf-available/phpmyadmin.conf

Agora cole o código abaixo e salve o arquivo:

<Directory /usr/share/phpmyadmin/>
 AddDefaultCharset UTF-8
 <IfModule mod_authz_core.c>
 <RequireAny>
 Require all granted
 </RequireAny>
 </IfModule>
</Directory>
 
<Directory /usr/share/phpmyadmin/setup/>
 <IfModule mod_authz_core.c>
 <RequireAny>
 Require all granted
 </RequireAny>
 </IfModule>
</Directory>

Carregar a configuração no Apache:

sudo a2enconf phpmyadmin

Reinicie o Apache:

sudo service apache2 restart

Pronto! Já deve estar tudo funcionando.

Teste o Apache+PHP+MySQL e PHPMyAdmin entrando com o endereço no navegador:

http://localhost/phpmyadmin

Se estiver tudo certinho, você conseguirá acessar o PHPMyAdmin. Entre com o usuário root e a senha que você configurou na instalação do MySQL. Porém, só vai funcionar com o PHP 7.1 pra cima…

 

Definir a versão do PHP a ser usada em cada projeto

Como você viu em alguns tópicos atrás, é possível ativar a versão do PHP que se deseja utilizar. Assim você consegue rodar aquele projeto que precisa de uma versão específica. Mas existe uma forma mais simples de definir qual versão utilizar, sendo colocado diretamente na configuração do Virtual Host do projeto.

Obviamente, é preciso já estar com a configuração do Virtual Host pronta, então se você ainda não fez ou não sabe o que são Virtual Hosts, minha dica é: siga o passo-a-passo desse post sobre essa configuração e depois volte aqui que você vai entender melhor sobre o que estou falando.

Estando então com o Virtual Host do seu projeto já configurado e funcionando, vamos precisar editar o arquivo de configuração do Virtual Host:

sudo gedit /etc/apache2/sites-available/nomedosite.com.conf

Insira o código abaixo logo depois da cláusula <Directory>…</Directory>:

<FilesMatch \.php$>
   # Apache 2.4.10+ can proxy to unix socket
   SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>

Observe que o código acima se refere ao PHP 7.4, ou seja, em todo arquivo de configuração Virtual Host que tiver o código acima, o site correspondente vai ser executado com a versão 7.4 do PHP. Caso queira outra versão, basta trocar para 8.1.

Instalar o X-Debug

Instalar o pacote de acordo com a sua versão do PHP:

sudo apt-get install php8.1-xdebug

Editar o arquivo php.ini e incluir as linhas abaixo:

sudo gedit /etc/php/8.1/apache2/php.ini

Incluir no final do arquivo:

xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9000

Salvar e reiniciar o Apache:

sudo service apache2 restart

Outras configurações úteis do Apache:

Habilitar o modo de rescrita de para usar URLs amigáveis:

sudo a2enmod rewrite

Habilitar mod_ssl:

sudo a2enmod ssl

Habilitar o Expires:

Útil para melhorar o tempo de carregamento do site:

sudo a2enmod expires

Habilitar a compressão GZip:

sudo a2enmod deflate

Seu servidor estará configurado e pronto para uso com versões diferentes do PHP integradas ao Apache, MySQL e o PhpMyAdmin. Agora o próximo passo é ativar servidores virtuais no apache para cada projeto.

1

Desenvolvimento web / PHP / Servidor web

Comments

  • Anderson disse:

    Olá! Quero agradecer pelo conteúdo que você fez, muito bem explicado. Olha que eu estava com problema de versões do php e só conseguia usar uma, agora posso aplicar versões diferentes em outros projetos. Top!!

  • Caio Russo disse:

    Não sei se ocorreu para todos, porém o meu precisou de um link simbólico:
    sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

  • Carlos Natal disse:

    Obrigado pela dedicação e empenho!

    Eu tenho certeza que vocês que que produzem esse tipo de conteúdo, mesmo que remunerado, não o faz por engajamentos, por seguidores e por comentários elogiosos como esse. Eu sei que o fazem primeiro, por amor à tecnologia, por amor à profissão, a um projeto de carreira profissional e por um projeto de vida. Eu sou da área de tecnologia, com formação e carreira integralmente na área de tecnologia e agora aposentado, retornei a um curso de Jornalismo que abandonara lá atrás. Qual não foi a minha surpresa ao perceber que a produção jornalística agora é pura tecnologia. Eu estou agora me atualizando e me aperfeiçoando através de um curso livre e complemetar em tecnologia e utilizando dos seus préstimos e da sua boa vontade. Parabéns e sucesso no seu projeto de vida profissional e pessoal!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *