
25 de outubro de 2020 - Frederico Marinho
Como instalar LAMP com diferentes versões do PHP no Ubuntu 20.04
Nesse post vou me ater em explicar como instalar e executar o PHP 5.6 e 7.2 no linux e como fazer manualmente a mudança da versão, completando o LAMP com a instalação do Apache, MySQL e do PhpMyAdmin funcionando em todas as versões do PHP instaladas.
Depois de alguns anos trabalhando com desenvolvimento de sites na Divera nos deparamos com a necessidade de ter diferentes versões do PHP no mesmo servidor para manter sistemas legados. Há algum tempo chegamos a trabalhar com o IonizeCMS, um CMS bem interessante pela simplicidade, porém limitado quando o conteúdo começa a crescer muito e, agora, abandonado. Cheguei a precisar migrar um site de plataforma mantendo o mesmo template exportando mais de 3000 posts em menos de dois dias. Porém, temos alguns clientes ainda utilizando o Ionize e o mesmo acontece com o Prestashop. A versão 1.6 dessa plataforma de e-commerce pode conter alguns módulos que só funcionam na versão 5.6 do PHP. Acontece pouco, mas acontece.
Pra começar, basicamente vamos instalar todo o LAMP com o PHP 7.2 e depois de tudo pronto, instalamos também o 5.6. Particularmente gosto muito do pacote aptitude para instalar tudo, porque geralmente corrige 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 PHP 7.2
Por padrão o Ubuntu 20.04 só dá suporte ao PHP 7.4, 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 7.2 (se preferir por instalar o 7.0, 7.1, 7.3 ou mesmo o 7.4).
sudo aptitude install php7.2 libapache2-mod-php7.2 php7.2-mysql php7.2-common php7.2-curl php7.2-json php7.2-xml php7.2-mbstring php7.2-gettext php7.2-gd php7.2-zip php7.2-soap php7.2-xmlrpc php7.2-intl php7.2-cli php7.2-dev php-pear libapache2-mod-php7.2 php7.2-bz2
Instalar o MySQL
Simples e direto:
sudo aptitude install mysql-server mysql-client
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/7.2/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 outra versão do PHP
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 5.6:
sudo aptitude install php5.6 libapache2-mod-php5.6 php5.6-common php5.6-curl php5.6-json php5.6-xml php5.6-fpm php5.6-pdo php5.6-gd php5.6-mysqlnd php5.6-mbstring php5.6-gettext php5.6-cli php5.6-mcrypt php5.6-zip php5.6-soap php5.6-curl php5.6-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 php5.6-fpm php7.2-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.2 como padrão:
sudo update-alternatives --set php /usr/bin/php7.2
Para colocar o PHP 5.6 como padrão:
sudo update-alternatives --set php /usr/bin/php5.6
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.2:
sudo a2dismod php7.2
Ativar a versão 5.6:
sudo a2enmod php5.6
Reiniciar o apache:
sudo service apache2 restart
Instalar o PhpMyAdmin
O phpMyAdmin é um caso mais complicado, porque se você pretende usar uma versão inferior ao PHP 7.1, a versão do repositório do gerenciador de banco de dados não vai funcionar. Teremos que instalar manualmente. Mas é bem tranquilo.
cd ~/Downloads wget https://files.phpmyadmin.net/phpMyAdmin/4.6.4/phpMyAdmin-4.6.4-all-languages.tar.gz sudo cp phpMyAdmin-4.6.4-all-languages.tar.gz /usr/share cd /usr/share sudo tar xvf phpMyAdmin-4.6.4-all-languages.tar.gz sudo mv phpMyAdmin-4.6.4-all-languages phpmyadmin
É preciso habilitar o módulo mbstring:
sudo phpenmod mbstring
Agora é só apontar para o Apache onde está instalado o phpMyAdmin e dar permissão. Edite o arquivo de configuração do Apache:
sudo gedit /etc/apache2/sites-available/000-default.conf
Em qualquer lugar depois de “DocumentRoot /var/www/html”, insira as linhas:
Alias /phpmyadmin "/usr/share/phpmyadmin/" <Directory "/usr/share/phpmyadmin/"> Order allow,deny Allow from all Require all granted </Directory>
** ATENÇÃO: Se você copiou e colou o código acima, edite o arquivo novamente e reescreva as aspas (“). **
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…
PhpMyAdmin no PHP 5.6
Ao alterar a versão do PHP para a 5.6 e tentar fazer o login no phpmyadmin, você pode receber os seguintes erros:
- Server sent charset unknown to the client
- The server requested authentication method unknown to the client
Para corrigir esses erros precisamos adicionar um código no arquivo /etc/mysql/my.cnf. Edite o arquivo:
sudo gedit /etc/mysql/my.cnf
E cole o código abaixo no final do arquivo:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8 default-authentication-plugin=mysql_native_password
Agora basta reiniciar o servidor mysql:
sudo service mysql restart
Agora pode acessar http://localhost/phpmyadmin e fazer o login com o PHP 5.6.
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 instalar um novo pacote para cada versão do PHP que se deseja utilizar:
sudo aptitude install php5.6-fpm php7.2-fpm
Agora é preciso 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.2-fpm.sock|fcgi://localhost" </FilesMatch>
Observe que o código acima se refere ao PHP 7.2, 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.2 do PHP. Caso queira outra versão, basta trocar para 7.0, 5.6, etc.
Instalar o X-Debug
Instalar o pacote de acordo com a sua versão do PHP:
sudo apt-get install php7.2-xdebug
Editar o arquivo php.ini e incluir as linhas abaixo:
sudo gedit /etc/php/7.2/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.
2
Deixe um comentário