![]() |
|
The Askeet Tutorialcalendário do advento symfony dia um: começando o projeto |
|


WARNING: The SVN source code found in the release_day tags is outdated. Please refer to the current version until each day code is updated.
You are currently reading "The Askeet Tutorial" which is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.
|
This work is licensed under a
Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Translation of this work into another language is explicitly allowed. |
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.
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 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.
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.
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'.
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
/sfdeve 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"
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.
Reinicie o Apache e verifique se você tem acesso à nova aplicação:
http://askeet/

Nota: O symfony pode utilizar o módulo
mod_rewritepara 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.htaccesslocalizado 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.
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/
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:
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ã!
If you find a typo or an error, please register and open a ticket.
If you need support or have a technical question, please post to the user mailing-list or to the forum.