Instalando e Configurando o XDebug com NetBeans usando Vagrant e Drupal 7

Porque ferramentas de debug são fundamentais para desenvolvimento php profissional (lembro de um amigo que dizia que nenhum código está suficientemente bem testado enquanto não passar por um debug)

Se você tem um ambiente com vagrant bem configurado (ou equivalente), como é o caso dos devs da Itelios, então a coisa é tão simples quanto:

No Netbeans, botão direito no seu projeto, escolha Propriedades. Selecione Run Configuration no painel da esquerda e clique em Advanced no painel central.

Agora mapeie a pasta do seu vagrant para a pasta local do seu computador:

Pronto!  Foi muito fácil não? Agora se você não tem um vagrant tão bem configurado assim, você talvez precise instalar e configurar o Xdebug, vamos lá:

Instalar XDebug

Basta rodar o comando:

sudo pecl install xdebug

Configurar XDebug

Para isso, crie um arquivo xdebug.ini na pasta /etc/php5/conf.d, com o seguinte conteúdo:

zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so

xdebug.remote_connect_back=1
xdebug.default_enable=1
xdebug.remote_autostart=0
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.max_nesting_level = 200
xdebug.remote_host=10.0.2.2

A primeira linha desse arquivo contém um path meio estranho. Acredito que no momento da instalação da extensão o PEAR deve dizer qual o path no qual ele instalou a extensão. Se você não reparou ou caso ele não diga, você pode descobrir o path do seu xdebug através de:

 find / -name 'xdebug.so' 2> /dev/null

Esse comando demora um pouco para executar, e se você tiver mais de uma versão de xdebug instalado, eu usaria a mais recente.

Agora, basta reiniciar o seu Apache com sudo service apache2 restart e clicar no botão Debug do NetBeans (ou Ctrl+F5).

Ah! Não se esqueça de fazer os passos do início deste post para configurar seu NetBeans!

Instalando e Configurando o profiler XHProf no PHP Apache e Drupal 7

Um profiler é ferramenta essencial para desenvolvimento profissional em PHP

Instalar o XHProf é bastante trivial:

 sudo pecl install xhprof

Mas aí você pode cair neste erro aqui:

Failed to download pecl/xhprof within preferred state "stable", latest release is version 0.9.4, stability "beta", use "channel://pecl.php.net/xhprof-0.9.4" to install
install failed

Mas não tema, basta configurarmos nosso PEAR para buscar pacotes beta e lá vamos nós:

sudo pecl config-set preferred_state beta
sudo pecl install xhprof

Normalmente isso é o suficiente para instalar o xhprof. Se você tiver qualquer problema diferente, coloque nos comentários abaixo que vou tentar criar uma base de conhecimento a respeito da instalação do xhprof.

Acho bom voltar à configuração padrão do PEAR para stable, então:

sudo pecl config-set preferred_state stable

Configuração do PHP e Apache

Agora vamos configurar o XHProf, primeiro criamos uma pasta onde ficarão os dados do profiler:

mkdir /tmp/xhprof
chmod 777 /tmp/xhprof

E então vamos precisar configurar o PHP, para habilitar a extensão (se você reparou na instalação do XHProf ele coloca a mensagem: "configuration option "php_ini" is not set to php.ini location You should add "extension=xhprof.so" to php.ini")

Normalmente, o PHP vai ler todos os arquivos *.ini localizados na pasta /conf.d, por isso criamos um arquivo /etc/php5/conf.d/xhprof.ini com o seguinte conteúdo:

[xhprof]
extension=xhprof.so
xhprof.output_dir="/tmp/xhprof"

A última etapa é criar um alias no Apache para os relatórios do xhprof. O Apache tb lê os arquivos da pasta conf.d, mas desta vez use a extensão .conf, ou seja: /etc/apache2/conf.d/xhprof.conf:

alias /xhprof_html "/usr/share/php/xhprof_html/"

O caminho "/usr/share/php" é o default para a instalação via PEAR da extensão xhprof. Você pode confirmar listando o conteúdo dessa pasta e vericando que existem duas pastas com o nome xhprof nelas.

Restarte o apache com sudo service apache2 restart e pronto!

Configuração Drupal 7

Para visualizar os relatórios do XHProf no Drupal é muito fácil: instale o devel!

Configure na página de configuração do módulo as variáveis:

devel_xhprof_directory "/usr/share/php"
devel_xhprof_url "/xhprof_html"

E veja suas páginas sendo renderizadas com um lindo profiler!

Dica Final

Para finalizar, mais uma pequena dica, se você não quiser ter o trabalho de ativar manualmente as extensões instaladas via PEAR (ou seja, via comando pecl install), então você pode executar o seguinte comando:

pecl config-set php_ini /path/to/php.ini

Alterando claro o "/path/to" para o caminho correto ao seu php.ini. Dessa forma o próprio PEAR irá colocar a linha que ativa a extensão no seu arquivo php.ini.

Particularmente, eu prefiro fazer isso manualmente, assim criamos um arquivo para cada extensão do PHP instalada.

Instalando o varnish no Ubuntu 12.04

Os comandos são bastante simples e diretos:

apt-get install apt-transport-https
curl https://repo.varnish-cache.org/ubuntu/GPG-key.txt | apt-key add -
echo "deb https://repo.varnish-cache.org/ubuntu/ precise varnish-4.0" >> /etc/apt/sources.list.d/varnish-cache.list
apt-get update
apt-get install varnish

e se você quiser instalar no ubuntu 14.04, basta trocar a palavra "precise" acima por "trusty".

A referência tirei daqui: https://www.varnish-cache.org/installation/ubuntu

Funcionou perfeitamente bem!

Depois disso, basta executar:

sudo varnishd -a hostname:8080 -b 127.0.0.1:80

Substituindo "hostname" pelo ip no qual o varnish deve "ouvir" (tipicamente é no próprio localhost, ou 127.0.0.1, mas no meu caso com vagrant coloquei o ip da máquina virtual). A opção -b dispensa o uso de um arquivo VCL de configuração.

Nos próximos posts vou explicar como usar um arquivo VCL (opção -f do varnish, que é mutuamente exclusiva com a opção -b) e comentar sobre a linguagem de configuração do varnish.