PHP 5,Fastcgi,lighttpd,symfony framework
por Lucas Stephanou ( domluc at gmail dot com )
lucas-ts.com/php5_lighttpd_symfony
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
#*********************************************************************
server.modules
+= ( "mod_fastcgi" )
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:
$HTTP["host"] == "localhost"
{
alias.url +=
(
"/doc/" => "/usr/share/doc/",
"/images/" =>
"/usr/share/images/"
)
dir-listing.activate =
"enable"
}
Troque para:
$HTTP["host"] ==
"localhost" {
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