Na versão 14.04 do Ubuntu, o PHP foi atualizado para a versão 5.5. Isso criou um problema para quem precisa da versão 5.3 do PHP para trabalhar com projetos que ainda não executam corretamente nas versões mais novas do PHP (no meu caso, o Magento 1.7.0.2).
Neste tutorial vou explicar como compilar e instalar a versão 5.3.28 do PHP com suporte ao PHP-FPM (FastCGI Process Manager) para funcionar no Ubuntu 14.04. Também vou ensinar como instalar e configurar o NGINX para funcionar com PHP-FPM.
1. Preparação do Sistema
Antes de tudo, execute o comando abaixo, pois todos os comandos aqui deverão ser executados como o superusuário root:
sudo -s
Edite o arquivo /etc/apt/sources.list e descomente as linhas iniciadas com deb-src ou acrescente as seguintes linhas, caso não existam no arquivo:
deb-src http://archive.ubuntu.com/ubuntu trusty main universe multiverse restricted deb-src http://archive.ubuntu.com/ubuntu trusty-updates main universe multiverse restricted deb-src http://archive.ubuntu.com/ubuntu trusty-security main universe multiverse restricted deb-src http://archive.ubuntu.com/ubuntu trusty-backports restricted main universe multiverse
Execute os seguintes comandos para instalar os pacotes necessários para a compilação do PHP:
apt-get update apt-get build-dep php5 apt-get install libt1-dev
Caso o Apache esteja instalado remova-o, porque vamos utilizar o NGINX como nosso servidor HTTP:
apt-get remove apache2 apt-get autoremove
Também remova os pacotes padrões do PHP 5.5, porque vamos compilar a versão 5.3:
apt-get remove php5 php5-cli php5-common apt-get autoremove
2. Compilando o PHP
Execute os comandos abaixo para compilar e instalar a versão 5.3.28 do PHP. (Ajuste os parâmetros do ./configure conforme a sua necessidade.)
cd /usr/local/src wget http://in1.php.net/distributions/php-5.3.28.tar.bz2 tar -xvf php-5.3.28.tar.bz2 cd php-5.3.28 ./configure --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --with-mysqli=mysqlnd --with-mysql=mysqlnd --with-pdo-mysql --with-gd --with-libdir=lib/i386-linux-gnu --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --enable-mbstring --with-mcrypt --with-mhash --enable-wddx --with-xmlrpc --with-xsl --enable-zip --with-curl --with-curlwrappers --with-xpm-dir --with-jpeg-dir --with-png-dir --with-t1lib --enable-soap make make install cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod a+x /etc/init.d/php-fpm cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf update-rc.d php-fpm defaults
3. Instalando e configurando NGINX
A instalação do Nginx é simples: vamos utilizar o pacote existente no Ubuntu. Execute o comando abaixo para realizar a instalação:
apt-get install nginx
Crie o arquivo /etc/nginx/conf.d/upstream.conf com o seguinte conteúdo:
upstream fpm_backend { server 127.0.0.1:9000; }
4. Configurando um servidor virtual no NGINX com PHP5-FPM
Para facilitar a compreensão dos passos a seguir, vamos configurar o domínio meuprojeto.localhost apontando para a nossa própria máquina (localhost). Edite o arquivo /etc/hosts e acrescente a seguinte linha:
127.0.0.1 meuprojeto.localhost
Agora crie o arquivo /etc/nginx/sites-available/meuprojeto.localhost com o seguinte conteúdo:
server { listen 80; server_name meuprojeto.localhost; # like ServerName in Apache root /home/meuusuario/meuprojeto; # document root, path to directory with files index index.html index.php; autoindex off; # we don't want users to see files in directories location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; # if reference to php executable is invalid return 404 expires off; # no need to cache php executable files fastcgi_read_timeout 600; fastcgi_pass fpm_backend; # proxy all requests for dynamic content to backend configured in upstream.conf fastcgi_keep_conn on; # use persistent connects to backend include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root${fastcgi_script_name}; } }
Habilite o servidor virtual digitando o seguinte comando:
ln -sf /etc/nginx/sites-available/meuprojeto.localhost /etc/nginx/sites-enabled/meuprojeto.localhost
Inicie os daemons do PHP-FPM e NGINX, por meio dos seguintes comandos:
service php-fpm start service nginx start
Para testar se tudo funcionou corretamente, crie um arquivo chamado phpinfo.php, dentro da pasta do seu projeto, com o seguinte conteúdo (no caso do exemplo acima, o arquivo será criado dentro da pasta /home/meuusuario/meuprojeto):
<?php echo phpinfo(); ?>
Agora, abra o seu navegador e acesse o endereço http://meuprojeto.localhost/phpinfo.php. Se, ao invés de fazer o download do arquivo phpinfo.php, apresentar as informações do PHP, sua configuração está funcionando corretamente!
Bem… é isso! Espero que tenha ajudado.
Comments
7 responses to “PHP 5.3 + PHP5-FPM + NGINX no Ubuntu 14.04”
[…] 1: Escrevi outro tutorial, utilizando PHP5-FPM e Nginx. Vale a pena dar uma […]
Muito bom esse tutorial!
Eu trabalho num sistema antigo que roda com banco firebird como seria para instalar o module interbase com essa versão do php??
Olá, a sua resposta não foi o que eu queria, mais Obrigado.
Depois de apanhar e pesquisar muito descobrir o algumas formas de habilitar as extensões que não compilaram com os comandos do tutorial. Vou mostrar o mais fácil.
pasta onde vai ser criado o .so da extensões.
http://forum.ubuntu.ru/index.php?topic=215755.0
/usr/local/lib/php/extensions/no-debug-non-zts-20090626/
Entre nas pastas das extensões e executar esses comandos.
cd php5.3.29/ext/mbstring
phpize
./configure
make && make install
cd php5.3.29/ext/gd
phpize
./configure
make && make install
cd php5.3.29/ext/interbase
phpize
./configure
make && make install
Esse comando sendo executado dentro das respectivas pastas de extensões vai criar os arquivo .so Ex: interbase.so e depois habilite a extensão no php.ini
Ex: extension=mbstring.so
extension=gd.so
extension=interbase.so
Obrigado por ter escrito esse tutorial.
Se você utiliza arquitetura de 64bits na instalação do seu Ubuntu, substitua
with-libdir=lib/i386-linux-gnu
porwith-libdir=lib/x86_64-linux-gnu
no comando ./configure, utilizado no passo de compilação do PHP.Hoje, após atualizar a minha versão do Ubuntu para 14.10 descobri que precisava recompilar o meu PHP; pois, ao iniciar o serviço php-fpm (
service php-fpm start
) descobri que a bibliotecalibt1.so.5
estava faltando.O problema é que os pacote libt1 (e o pacote libt1-dev) não está mais disponível nesta versão do Ubuntu.
Então, fiz o seguinte para resolver:
1) Fiz um link simbólico da pasta da biblioteca freetype2; pois, o configure que vem com a versão 5.3.28, procura o arquivo
freetype.h
dentro de/usr/include/freetype2/freetype
. (Não consegui informar a pasta correta como parâmetro do comando configure: a solução era era fazer patch no configure ou um link simbólico… o link simbólico é mais fácil de explicar :))ln -sf /usr/include/freetype2/ /usr/include/freetype2/freetype
2) Depois eu recompilei o PHP, mas tive que remover a opção
with-t1lib
e acrescentar a opçãowith-freetype_dir=shared,/usr
.Segue a sequência de comandos de como recompilei (para arquitetura de 64 bits):
./configure --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --with-mysqli=mysqlnd --with-mysql=mysqlnd --with-pdo-mysql --with-gd --with-libdir=lib/x86_64-linux-gnu --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --enable-mbstring --with-mcrypt --with-mhash --enable-wddx --with-xmlrpc --with-xsl --enable-zip --with-curl --with-curlwrappers --with-xpm-dir --with-jpeg-dir --with-png-dir --enable-soap --with-freetype-dir=shared,/usr
make clean
make
make install
Depois de instalado, bastou iniciar o php-fpm e tudo voltou como antes…
service php-fpm start
Nota: acrescentar –enable-opcache na linha do configure e incluir a seguinte linha no arquivo php.ini:
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20121212/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
Boa tarde, a todos.
Conteúdo de excelente qualidade do seu site Parabéns.
Tenho que usar PHP 5.3 e estou pensando em atualizar meu servidor para o Ubuntu 14 porem estou pensando se vale a pena? sera que não vou ter mais dores de cabeça? sera que não é melhor deixar o Ubuntu na versão 12?