O desafio
O calendário do advento symfony é um conjunto de 24 tutoriais, publicados dia-a-dia começando no dia primeiro de dezembro até o Natal. Isso mesmo, todos os dias incluindo os finais de semanas, um novo tutorial será publicado. Cada tutorial deve durar menos de uma hora, e será uma oportunidade para acompanhar passo-a-passo o desenvolvimento de uma aplicação web 2.0. Quando chegar o Natal, a aplicação criada será colocada on-line, e o seu código fonte será um software livre. Esta aplicação será usável, interessante, útil e divertida.
Vinte e quatro vezes menos de uma hora é menos que um dia, e é exatamente este o tempo que um desenvolvedor precisa para aprender o symfony. Todo dia, novas features serão adicionadas à aplicação, tomaremos este desenvolvimento como um modelo para demonstrar as funcionalidades do symfony assim como a aplicação das boas práticas do desenvolvimento web com ele. A cada dia, você vai descobrir como é rápido e eficiente o desenvolvimento de uma aplicação web utilizando o symfony, e você vai querer saber cada vez mais.
Considerando que isto não é o suficiente para um desafio, e também porque não queremos nada com a dureza, não temos planos para o 21° dia. A funcionalidade mais requisitada pela comunidade será adicionada à aplicação neste dia, sem preparativo algum, e isso vai funcionar. Será o dia do seja-o-guru-do-symfony-por-um-dia.
O projeto
A aplicação a ser desenvolvida poderia ser mais uma daquelas "mostre-e-explique", como uma lista de tarefas, um catálogo de endereços ou uma loja de livros. Mas nós queremos utilizar o symfony em um projeto original, alguma coisa realmente útil, com diversas funcionalidades e um tamanho considerável. O que queremos na verdade é provar que o symfony pode ser utilizado em situações complexas para desenvolver aplicações profissionais com estilo e pouco esforço.
Nós esperamos também que muitas pessoas usem e abusem da aplicação, para demostrar que um website desenvolvido com o symfony suporta uma grande carga. É por isso que a aplicação necessita trazer um serviço real e responder à uma necessidade existente - ou criar uma nova. O lançamento do website será um teste de stress real; isto também significa que nós precisamos de vocês, amigos leitores, para divulgar (digg/bookmark/blog) o site e falar sobre ele na vida real para verficarmos quantas visitas ele pode suportar.
O conteúdo do projeto será mantido em segredo até o próximo dia. Nós ainda temos muito o que fazer sem descrever uma aplicação web 2.0 completa. Isto deve dar a você algum tempo para pensar e levantar hipóteses adicionais. De qualquer forma, nos precisamos de um nome, então vamos chamá-la de: askeet.
O que temos para hoje
O objetivo do dia é mostrar a página da aplicação em um navegador web, e configurar um ambiente profissional de desenvolvimento. Isto inclui a instalação do symfony, a criação da aplicação, a configuração do servidor web e a configuração do sistema de controle de versão.
Isto será fácil para aqueles que já seguiram os tutoriais anteriores e não tão difícil para os outros. E, no final, todo mundo deverá ter apredido alguma coisa nova.
Vamos considerar que você está usando um sistema Unix-like com Apache, MySQL e PHP 5 instalados. Se você utiliza o Windows, não entre em pânico: tudo irá funcionar perfeitamente, você só terá que digitar alguns comandos no prompt.
Instalação do Symfony
A maneira mais simples de se instalar o symfony é usando o pacote PEAR. De qualquer forma, para poder utilizar os canais - e acessar o canal do symfony - você precisa atualizar o PEAR para a versão 1.4.0 ou superior (a menos que você esteja usando o PHP 5.1.0, que já inclui a versão 1.4.5 do PEAR):
$ pear upgrade PEAR
Nota: Se você tiver algum problema ao utilizar o PEAR, verifique o capítulo de instalação do livro.
Agora você já pode adicionar o canal 'symfony':
$ pear channel-discover pear.symfony-project.com
Tudo pronto para você instalar a última versão estável do symfony juntamente com todas as suas dependências:
$ pear install symfony/symfony
Verifique se o symfony foi instalado corretamente usando o prompt de comando para mostrar a versão:
$ symfony -V
Se você está curioso para saber o que esta nova ferramenta de linha comando pode fazer por você, digite symfony -T
para listar as opções disponíveis. Você também pode querer dar uma olhada no capítulo de instalação do livro para saber como instalar o symfony através de um arquivo tgz ou do repositório SVN. Uma contribuição da comunidade também indica os passos para realizar a instalação sem o PEAR no wiki do symfony.
Configuração do projeto
No symfony, aplicações que compartilham o mesmo modelo de dados são reagrupadas em projetos. Para o projeto askeet, presumimos que existirá um frontend e um backend: que são duas aplicações diferentes. O projeto sendo o 'hospedeiro' das aplicações deve ser criado primeiro. Para fazer isso, tudo o que você precisa é de um diretório e do comando symfony init-project
:
$ mkdir /home/sfprojects/askeet $ cd /home/sfprojects/askeet $ symfony init-project askeet
Agora é a hora de criar a aplicação frontend com o comando symfony init-app
:
$ symfony init-app frontend
Uau, isto foi rápido.
Nota: Usuários do Windows são aconselhados a executar o symfony e configurar seus novos projetos em um caminho cujos nomes não contenham espaços - incluindo o diretório 'Documents and Settings'.
Instalação do servidor web
Configuração do servidor web
Chegou a hora de alterar sua configuração do Apache para permitir que a nova aplicação fique acessível. Num contexto profissional, é melhor instalar a nova aplicação como um host virtual e é exatamente isso que vamos descrever aqui. De qualquer forma, se você preferir adicioná-la como um alias, veja os detalhes no capítulo configuração do servidor web do livro.
Abra o arquivo httpd.conf
do seu diretório Apache/conf/
e adicione ao final:
<VirtualHost *:80> ServerName askeet DocumentRoot "/home/sfprojects/askeet/web" DirectoryIndex index.php Alias /sf /usr/local/lib/php/data/symfony/web/sf <Directory "/home/sfprojects/askeet/web"> AllowOverride All </Directory> </VirtualHost>
Nota: o alias
/sf
deve apontar para o diretório do symfony que está dentro do diretório de dados(data) do PEAR. Para descobrir qual é o caminho, digitepear config-show
. As aplicações symfony precisam "enchergar" este diretório para ter acesso a arquivos de imagem e javascript e desta forma executar corretamente a barra de ferramentas de debug e os helpers AJAX.
No Windows, você precisa substituir a linha Alias
por alguma coisa mais ou menos assim:
Alias /sf "C:\php\pear\data\symfony\web\sf"
Declare o nome do domínio
O nome do domínio askeet
precisa ser declarado localmente.
Se você está num ambiente Linux, isso deve ser feito no arquivo /etc/hosts
, mas se você está num ambiente Windows XP, este arquivo está localizado no diretório C:\WINDOWS\system32\drivers\etc\
.
Adicione a seguinte linha:
127.0.0.1 askeet
Nota: Você precisa ter privilégios de administrador para fazer isso.
Se você não quer configurar um novo host, você deve adicionar uma declaração Listen
para configurar o seu website em uma outra porta. Isto irá permitir que você utilize o domínio localhost
.
Teste a nova configuração
Reinicie o Apache e verifique se você tem acesso à nova aplicação:
http://askeet/
Nota: O symfony pode utilizar o módulo
mod_rewrite
para remover a parte /index.php/ da URL. Se você não quer utilizar isso ou o seu servidor web não provê uma facilidade equivalente, você pode remover o arquivo.htaccess
localizado no diretórioweb/
. Se a sua versão do apache não é compilada com omod_rewrite
, verifique se você tem o mod_rewrite DSO instalado e as seguintes linhas no seuhttpd.conf
:AddModule mod_rewrite.c LoadModule rewrite_module modules/mod_rewrite.soVocê vai aprender mais sobre URLs amigáveis no capítulo roteamento do livro.
Você deve tentar acessar a aplicação no ambiente de desenvolvimento. Experimente a seguinte URL:
http://askeet/frontend_dev.php/
A barra de ferramentas de debug deve aparecer no canto superior direito, com pequenos ícones que comprovam que a sua configuração do Alias sf/
está correta.
Mais uma vez, a configuração é um pouco diferente se você desejar executar o servidor IIS num ambiente Windows. Descubra como fazer isso no tutorial específico.
Subversion
Um dos bons princípios de sujeitos preguiçosos é o de não se preocupar em quebrar o código existente. Como queremos trabalhar rápido, queremos poder reverter para uma versão anterior se uma modificação não foi eficiente, queremos permitir que mais de uma pessoa trabalhe no projeto e também queremos que você tenha acesso a todas as versões diárias da aplicação, adotaremos o sistema de controle de versão. Iremos utilizar o Subversion para isso. Consideramos que você já possui um servidor subversion instalado ou tenha acesso a um.
Primeiramente, crie um novo repositório para o projeto askeet
:
$ svnadmin create $SVNREP_DIR/askeet $ svn mkdir -m "criacao do layout" file:///$SVNREP_DIR/askeet/trunk file:///$SVNREP_DIR/askeet/tags file:///$SVNREP_DIR/askeet/branches
Em seguida, você deve importar primeiro, omitindo os diretórios temporários cache/
e log/
:
$ cd /home/sfprojects/askeet $ rm -rf cache/* $ rm -rf log/* $ svn import -m "importacao inicial" . file:///$SVNREP_DIR/askeet/trunk
Agora faça o checkout da versão do SVN e livre-se do diretório da aplicação original:
$ cd /home/sfprojects $ mv askeet askeet.origin $ svn co file:///$SVNREP_DIR/askeet/trunk/ askeet/ $ ls askeet $ rm -rf askeet.origin
Existe uma última coisa a ser feita. Se você comitar o seu diretório de trabalho para o repositório, você pode acabar copiando alguns arquivos indesejados, como aqueles localizados nos diretórios cache
e log
do seu projeto. Então você precisa especificar uma lista dos diretórios a serem ignorados pelo SVN desse projeto.
$ cd /home/sfprojects/askeet $ svn propedit svn:ignore cache
O editor de textos padrão configurado para o SVN será iniciado. Adicione os subdiretórios do askeet
que o SVN deve ignorar ao comitar:
*
Salve e saia. Pronto.
Repita o procedimento para o diretório log:
$ svn propedit svn:ignore log *
Agora, certifique-se de configurar as permissões corretas nos diretórios cache e logs para que o seu servidor web possa escrever neles novamente. Na linha de comando digite:
$ chmod 777 cache $ chmod 777 log
Nota: Usuários do Windows podem utilizar o ótimo cliente TortoiseSVN para gerenciar o seu repositório do subversion.
Se você quiser saber mais sobre o sistema de controle de versão, dê uma olhada no capítulo criação do projeto no livro do symfony.
Nota: O repositório askeet é público. Você pode acessá-lo no endereço:
http://svn.askeet.com/Experimente, faça o checkout.
O código de hoje foi comitado, você pode fazer o checkout da tag
release_day_1
:$ svn co http://svn.askeet.com/tags/release_day_1/ askeet/
Até amanhã
Bem, isso já durou uma hora! Nós falamos bastante, e não fizemos nada de novo para os entusiastas do symfony. Mas dê uma olhada no que será demonstrado no nosso segundo dia do calendário do advento do symfony:
- o que a aplicação irá fazer
- construindo o modelo de dados e gerando o mapeamento objeto-relacional
- implementando o scaffolding em um módulo
Enquanto isso, se você quiser manter-se informado sobre as novidades do askeet, você pode se inscrever na lista de e-mails do askeet ou então visitar o fórum específico.
Não se esqueça de voltar amanhã!
This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.