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.