Lighttpd + Symfony
Nota: Este artigo foi escrito em 2006, ele sera atualizado em breve.
Instalando PHP 5,Fastcgi, lighttpd e symfony framework
Objetivo
No final das contas, ter o symfony framework, instalado e funcionando. Para isso teremos a instalação do lighttpd na porta 81, compilação do PHP 5 direto dos fontes com bibliotecas gd e zlib incluidas, suporte a mysql, sqlite, e postgresql.
Instalando o lighttpd
Optei por instalar via apt-get( ahhh, esqueci de dizer que estou fazendo este tutorial no debian 3, kernel 2.6.17…), a principio o lighttpd funciona na porta 80, mas como a ideia é ser uma alternativa vamos instalar na porta 81, ou outro que voce queira. Se voce ja tinha o Apache ( como previsto) e instalou via apt, ja tera um erro , o httpd vai alegar que nao pode usar a porta 80, pois obvio, ja esta em uso. Logo de um STOP no Apache.
# apt-get install lighttpd
Aqui ele instalou na porta 80, vamos mudar isso mais a frente.Ok!
Usuarios do slack ( esse esta em casa :-] ), fedora, e outros. Voces devem saber uma forma parecida de instalar, no slack uso o slackpkg, que é otimo, no fedora tem o rpm.
Bem, instalem o bem dito de alguma forma. :-]
Instalando dependecias para compilação do PHP
Quando formos compilar o PHP precisaremos de alguns componentes instalados no sistema, entre eles, as bibliotecas, GD, PNG, Jpeg e etc. Eu, como voces ja sabem, estou utilizando debian, então o que fiz? Ai esta.
# apt-get install libpng12-dev libgd-dev libpng12-dev libjpeg62-dev zlib1g-dev libmysql++-dev postgresql-dev libpq-dev libpq4 libxml2-dev
Todos claro dev, ou seja pacote com os arquivos desenvolvimento ( tambem conhecidos como headers ).
NOTA: verifiquem em suas distribuições, mas no debian a libpq4, é referente ao Postgresql 8.x.x, e a libpq3 é referente ao ramo 7.x
Obs: Essas foram as bibliotecas que eu precisei , voce pode precisar de outras, então, preste atenção nas mensagens do ./configur do PHP , ai voce instala as depencias não encontradas.
Alguns ajustes antes de compilar.
Vamos editar o lighttpd.conf, que no debian fica em /etc/lighttpd/
# vim /etc/lighttpd/lighttpd.conf
Devera ter uma parte que seta o server.port = 80 , altere para 81, marromenos assim.
(…)
######### Options that are good to be but not neccesary to be changed #######
## bind to port (default: 80)
server.port = 81
## bind to localhost only (default: all interfaces)
server.bind = “localhost”
(…)
Ok, restart o light e inicie o apache. e verifique no seu navegador http://localhost (home do apache) e http://localhost:81 ( Placeholder lighttpd).
A principio estamos aptos a instalar o PHP. Let’s go dude.
Compilando o PHP 5
RÁ… finalmente chegamos na parte divertida ( que nerd, não?) . 3 liçães basicas que aprendi na marra.
- Preste atenção nas mensagens.
- Preste MUITA atenção nas mensagens.
- Não se apavore com as mensagens.
Depois dessas otimas lições, vamos ao trabalho.
Baixe a ultima versão do PHP5.
Entre em PHP Downloads e baixe o tar.bz2 da versão estavel ( Complete Source Code). PS.: Link Direto para Versão 5.1.4
Salve este arquivo no seu /tmp/
Descompactar
# tar -jxvf php-5.1.4.tar.bz2
Sera criada a pasta php-5.1.4 em /tmp, ficando /tmp/php-5.1.4/
# cd /tmp/php-5.1.4/
Configurar Compilação.
# ./configure –enable-fastcgi –with-gd –with-mysql –with-pgsql –with-zlib –with-pear=/opt/php5-cgi/pear –prefix=/opt/php5-cgi –with-libxml-dir=/usr/lib/
Assim, pedimos que o bash configure habilite o modo fastcgi ( –enable-fastcgi ), compile com gd, mysql, postgresql ( –with-pgsql ) e zlib ( biblioteca de compressão ) , o parametro –with-pear=/opt/php5-cgi/pear avisa para instalar o pear no diretorio especificado, –prefix=/opt/php5-cgi avisa em qual diretorio queremos a instalação do PHP e por ultimo informamos o caminho da libxml ( –with-libxml-dir=/usr/lib/ ).
Ps.: Volto a repetir, neste ponto voces podem ter problema com dependencias, que tentamos suprir anteriormente, pode acontecer de a biblioteca que o configure acusa não ter, estar presente, mas ele nao saber aonde, para isso informe a ele, como feito com a libxml, que passamos direto o local, no caso /usr/lib/.
Make
Se o ./configure tiver tido sucesso, compilamos e instalamos:
# make && make install
Agora, va tomar um café, jogar play2, liga pra mulher só pra dar um oi , pois o make leva em torno de 15 minutos para compilar tudo, o make install é rapido, coisa de 20 segundos e ela coloca as coisas no lugar.
( … ) after 15 minutes ( … )
Olha que beleza. temos tudo pronto. entre no diretorio de instalação, se tiver seguido a risca sera /opt/php5-cgi/, e de uma olhada.
Configurando
PHP
Entre no diretorio do PHP:
# /opt/php5-cgi
Vamos agora copiar o php.ini
# cp /tmp/php-5.1.4/php.ini-dist /opt/php5-cgi/lib/php.ini
E claro, vamos dar uma pequena arrumada para funcionar como symfony ![]()
# vim /opt/php5-cgi/lib/php.ini
Localize a variavel de configuração magic_quotes_gpc , que devera estar setada como On, altere para Off ficando assim:
( … )
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off
( … )
Aproveite e localize tambem a seção sobre session ( :-] ), descomente a var de config session.save_path e sete ela para /tmp, ou um dir que o PHP tenha direito de escrita durante a execução.
( … )
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process’s umask.
session.save_path = “/tmp”
( … )
, PHP agora esta prontinho para rodar!
lighttpd
Entre no diretorio de configuração disponiveis.
# cd /etc/lighttpd/conf-available
Edite o arquivo de configuração do fastcgi
# vim 10-fastcgi.conf
Delete todo o conteudo original, e deixe assim
#*********************************************************************
fastcgi.server = ( “.php” =>
( “*” =>
( “socket” => “/tmp/php5-fcgi.socket”,
“bin-path” => “/opt/php5-cgi/bin/php”
)
)
)
#*********************************************************************
Após isso, habilite o modulo
# lighty-enable-mod fastcgi
Opa, vamos dar um restart no lighttpd
# /etc/init.d/lighttpd restart
Teste rapido, crie um arquivo /var/www/info.php ( estou assumindo que o dir raiz seja /var/www/ ) com o conteudo <?php phpinfo(); ?>, abra o seu navegador e aponte para http://localhost:81/info.php, se ver aquela tradicional tela com as informações do PHP, e especificar a versão certinho com o fastcgi. otimo, realmente tudo saiu como esperado, se não, revise o passos.
Go Symfony, go!
Vamos agora a instalação do symfony, que sera instalado via pear.
Primeiro, vamos para o direitorio bin do php.
# cd /opt/php5-cgi/bin
Agora, atualizamos o pear
# ./pear upgrade PEAR
Beleza, hora de adicionarmos o canal do symfony, ahhh , precisa de conexão web é claro ( se estiver usando proxy, export http_proxy=”http://ip:porta” )
# ./pear channel-discover pear.symfony-project.com
Finalmente instalamos o symfony, no caso o beta ( trunk/night-build)
# ./pear install symfony/symfony-beta
Precisamos instalar tambem o Phing
# ./pear install http://phing.info/pear/phing-current.tgz
Ok, agora vamos corrigir um pequeno detalhe, caso voce tenha tambem outra versão do php instalada, trocaremos o executavel do php para o qual o symfony aponta.
# vim /opt/php5-cgi/bin/symfony
Estando com o arquivo aberto, localize a linha:
export PHP_COMMAND=php
Altere para:
export PHP_COMMAND=/opt/php5-cgi/bin/php
Para finalizar criamos um link para o binario do symfony
# ln -s /opt/php5-cgi/bin/symfony /usr/bin/symfony
Para testa, tecle no terminal
# symfony -T
Se aparecer uma lista de opções do symfony, ok, estamos indo bem.
Symfony at lighttpd
Pronto, temos tudo para funcionar, lighttpd instalado, php compilado e symfony instalado.
Vamos criar uma pasta para nosso projeto symfony de teste
# mkdir /var/www/symfony-teste
# cd /var/www/symfony-teste
Temos o diretorio, agora vamos criar a estrutura
# symfony new symfony-teste
Verifique o diretorio ( ls -la) deve ter sido criada uma serie de diretorios ( app, lib, data, web, e etc.)
Vamos criar um blog como aplicação teste
# symfony app blog
E um modulo Teste
#symfony module blog Teste
Vamos alterar o index padrao.
#vim apps/blog/modules/Teste/templates/indexSuccess.php
Coloque qualquer codigo html , ou altere o que ja existe.
Agora o teste final, abrar o navegador, e aponte para http://localhost:81/
ooopsss.
Nada? faltou alguma coisa?
Claro, precisamos avisar o lighttpd, para isso abra novamente o lighttpd.conf
# vim /etc/lighttpd/lighttpd.conf
Localize a config server.document-root e altere do que estiver para
server.document-root = “/var/www/symfony-teste/web/”
Após localize essa parte:
alias.url += (
“/doc/” => “/usr/share/doc/”,
“/images/” => “/usr/share/images/”
)
dir-listing.activate = “enable”
}
Troque para:
alias.url += (
“/doc/” => “/usr/share/doc/”,
“/images/” => “/usr/share/images/”,
“/sf/” => “/opt/php5-cgi/pear/data/symfony/web/sf/”
)
dir-listing.activate = “enable”
}
Ou seja, incluimos na lista de alias a pasta do symfony.
Agora sim, reinicie novamente o lighttpd, abra o navegador e aponte dessa vez para http://localhost:81/blog_dev.php/Teste , voce devera visualizar a rederização daquele arquivo que modificamos anteriormente.
Conclusão
Era isso pessoal, qualquer erro ou problema, me mandem um e-mail ( domluc at gmail dot com ), que responderei o mais rapido possivel.
ToDo
- Incluir Configuração do Rewrite Url no lighttpd
- Virtual Host para cada projeto
Criado em 07/08/2006 por Lucas Stephanou
Ultima Alteração 08/08/2006
Licença GPL