Multiplas versões PHP Ubuntu – PHPFarm
Tenho um ambiente de desenvolvimento para mostrar aos clientes, como está o processo de desenvolvimento de seus projetos, e as vezes pego alguns projetos para dar manutenção que o PHP é antigo 5.4 ás vezes é 5.5.6 outros com o ZF2 com PHP mais novo, oque fazer com esse problema, pois bem o PHPFarm é a solução para esse impasse
Instalando o Lamp Server ( Caso não tenha instalado )
sudo apt-get update && sudo apt-get upgrade $$ sudo apt-get install lamp-server^
No caso se você já instalou o php5 como módulo do Apache você pode desativar ele primeiro (Opcional)
a2dismod php5
Dependências necessárias
sudo apt-get install build-essential git apache2-mpm-worker libapache2-mod-fastcgi php5-fpm vim
Dependencias PHP
sudo apt-get build-dep php5
Clone GIT PHPFarm
sudo git clone https://github.com/cweiske/phpfarm.git /opt/phpfarm
/opt/ não é opcional é obrigatório
Vá até o local dp SRC PHPFarm
cd /opt/phpfarm/src
em options.sh você pode ver oque vai ser configurado de começo mas é algo bem simples, então vamos criar um arquivo custom-options.sh que será o arquivo que vai compilar junto ao options.sh
crie o arquivo custom-options.sh
sudo vim custom-options.sh
Abaixo está o conteúdo de custom-options.sh
configoptions=" --enable-cli \ --enable-debug \ --enable-bcmath \ --enable-calendar \ --enable-exif \ --enable-ftp \ --enable-mbstring \ --enable-pcntl \ --enable-soap \ --enable-sockets \ --enable-sqlite-utf8 \ --enable-wddx \ --enable-zip \ --enable-readline \ --enable-posix \ --with-readline \ --with-posix --with-apache2 \ --with-openssl \ --with-zlib \ --with-gettext \ --with-pear \ --with-curl \ --with-gd \ --with-mcrypt \ --with-pdo-mysql \ --enable-mbstring \ --with-mysqli \ --with-mysql -with-libdir=/lib/i386-linux-gnu \ "
obs: você pode criar para cada versão do php usando por exemplo custom-options-5.5.6.sh ou custom-options-5.6.2.sh assim por diante, como eu vou usar a mesma config para todos deixo no custom-options.sh que serve para todos que forem instalados
de permissão ao custom-options.sh
chmod +x custom-options.sh
Compilando as versões de PHP
Você pode compilar qualquer versão do PHP, basta ver a lista nesse link http://museum.php.net
tendo em vista que queira o php 5.5.6 e o 5.6.2
sudo ./compile.sh 5.5.6
sudo ./compile.sh 5.6.2
e assim por diante qual versão quiser e só verificar no museum e mandar a versão.
Agora vamos habilitar o Fast-CGI
sudo a2enmod actions fastcgi alias
Reinicie o apache
sudo service apache2 restart
Agora vamos configurar o FastCgiServer
criando um arquivo no conf.d para iniciar junto ao apache
sudo vim /etc/apache2/conf.d/php-cgisetup.conf
vai abrir uma tela preta no terminal, aperte I para poder inserir e coloque o código abaixo
#php-cgi setup #utilizado para multiplas versoes do PHP FastCgiServer /var/www/cgi-bin/php-cgi-5.5.6 FastCgiServer /var/www/cgi-bin/php-cgi-5.6.2 ScriptAlias /cgi-bin-php/ /var/www/cgi-bin/
Pode colocar quantos FastCgiServer quiser só basta colocar a versão certa, caso fique aparecendo erro 500 pode ser que você colocou alguma versão errada por exemplo um 5.5.0 invez de 5.5.6 só atentar aos detalhes
agora vamos criar o cgi-bin
sudo mkdir /var/www/cgi-bin
Criando o arquivo binário php-cgi-5.5.6
#!/bin/sh PHP_FCGI_CHILDREN=3 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_MAX_REQUESTS exec /opt/phpfarm/inst/bin/php-cgi-5.5.6
Criando o arquivo binário php-cgi-5.6.2
#!/bin/sh PHP_FCGI_CHILDREN=3 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_MAX_REQUESTS exec /opt/phpfarm/inst/bin/php-cgi-5.6.2
Trocando dono do da pasta cgi-bin
sudo chown -R www-data:www-data /var/www/cgi-bin
Permissão no cgi-bin
sudo chmod -R 0744 /var/www/cgi-bin
agora vamos criar um arquivo virtualhost vá em
cd /etc/apache2/sites-available
Crie um arquivo
sudo vim php-dev
aperte o i para inserir o conteúdo e coloque o conteúdo abaixo !
<VirtualHost *:80> ServerName meudev.com DocumentRoot /var/www <Directory /var/www> Options FollowSymLinks AddHandler php-cgi .php AllowOverride All Action php-cgi /cgi-bin-php/php-cgi-5.5.6 </Directory> #colocando em um diretório especifico a versão do php <Directory /var/www/meu-projeto> Options FollowSymLinks AddHandler php-cgi .php AllowOverride All Action php-cgi /cgi-bin-php/php-cgi-5.6.2 </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
Caso esteja fazendo na sua maquina pode criar apartir de sites separados (opcional, caso seja em sua maquina não em um cloud)
<VirtualHost *:80> ServerName teste556.com DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride All AddHandler php-cgi .php Action php-cgi /cgi-bin-php/php-cgi-5.4.0 </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost> <VirtualHost *:80> ServerName teste562.com DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride All AddHandler php-cgi .php Action php-cgi /cgi-bin-php/php-cgi-5.5.0 </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
Agora vamos desativar o virtual host default (padrão)
sudo a2dissite default
agora vamos ativar o qual criamos php-dev
sudo a2ensite php-dev
de um reload no apache
sudo service apache2 reload
agora vamos ver se está tudo ok crie um arquivo info.php
sudo vim /var/www/info.php
e cole
<?php phpinfo(); ?>
veja seu ip (e pegue o inet addr:IP)
ifconfig
vim /etc/hosts
coloque o ip com o dominio (opcional, caso seja em sua maquina não em um cloud)
192.168.1.10 teste556.com 192.168.1.10 teste562.com
agora veja se está tudo ok teste556.com/info.php e teste562.com/info.php
Adicionar mais modulos no PHPfarm
vamos localizar seu php.ini do php 5.5.6
/opt/phpfarm/inst/bin/php-5.5.6 --ini
vai aparecer a seguinte mensagem
Configuration File (php.ini) Path: /opt/phpfarm/inst/php-5.5.6/lib Loaded Configuration File: /opt/phpfarm/inst/php-5.5.6/lib/php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none)
se precisar de qualquer config já sabe onde está o php.ini neste caso /opt/phpfarm/inst/php-5.5.6/lib/php.ini
caso você precise de um novo modulo no php exemplo xdebug
cd /opt/phpfarm/ pear download pecl/xdebug
no meu caso foi o xdebug-2.3.3
tar -cvf xdebug-2.3.3.tar
Acesse o arquivo descompactado
cd xdebug-2.3.3
verificando se está tudo ok na versão que vai instalar o modulo
/opt/phpfarm/inst/bin/phpize-5.5.6
Compilando
./configure --with-php-config=/opt/phpfarm/inst/bin/php-config-5.5.6
make && make install
Se tudo ocorrer certo basta da um reload
/etc/init.d/apache2 reload
Pronto =)
Espero ter ajudado, eu achei fantástico essa ferramenta, para quem faz freelance é uma mão na roda no começo é meio chato de instalar mais vale a pena !
Fontes
http://www.fabiomingorance.com.br/instalando-multiplas-versoes-php-no-ubuntu-14/
https://cweiske.de/tagebuch/phpfarm-install-extensions.htm