Back-End

20 mai, 2011

Symfony 1.4 no Ubuntu: configurando o servidor apache, instalando e criando uma aplicação

Publicidade

Symfony é um framework open source escrito em PHP 5, desenvolvido com objetivo de acelerar a produção de aplicações web. Segue o padrão MVC (Model View Control), com  camadas bem definidas, proporcionando uma melhor organização do código fonte.

Benefícios:

  • O framework é totalmente Orientado a Objetos;
  • Facilidade de implementar metodologias de desenvolvimento ágil ( Scrum ou XP );
  • Trabalha com dois tipos de ORM (Object Relational Mapper): Doctrine e Propel;
  • É super flexível, tanto para aplicações mais simples (sites pessoais, blogs, hotsites, etc.) como aplicações mais robustas (intranet, CRM, e-commerce, ERP, etc.);
  • Fácil de dar manutenção;
  • Flexível para ampliar o projeto;
  • Reutilização de aplicativos, com o desenvolvimento de plugins próprios;
  • Uma vasta fonte de informações, devido a uma excelente documentação;
  • Comunidade mundial muito forte;
  • Segurança das aplicações;
  • Linguagem de configuração super intuitiva e simples YAML;
  • Linha de comando para evitar a repetição e agilizar a produção;
  • Não há limitações para iniciar trabalhar com Symfony. É ótimo para programadores iniciantes e avançados;

Requisitos usados neste artigo:

  • Ubuntu 10.+
  • Apache2.2.+
  • PHP 5.2.4 || +
  • MySQL, PostgreSQL, SQLite, ou qualquer DB compatível com PDO.

Mãos à obra! Primeiramente, demonstrarei como configurar um servidor virtual no Ubuntu.

A partir do Terminal e liberar as permissões de administrador para o usuário.

$ sudo su 

Vamos preparar o local onde ficará o projeto. Prefiro inserir o projeto na pasta local do meu usuário. Então, vamos criar um diretório chamado “localhost” na pasta do usuário local ou qualquer outro nome que você possa identificar os seus projetos web. Pelo Terminal, navegue até esta pasta e crie dentro dela a estrutura necessária para o projeto Symfony. Neste caso, chamarei o projeto de “imasters”.

$ mkdir –p imasters/lib/vendor

Agora vamos configurar o servidor local dentro do Apache2 para definir o caminho do meu projeto. Ou seja, quando digitar no navegador um endereço deverá ser reconhecido e apontado para os arquivos dentro do diretório do projeto “imasters”.

No Terminal, digite o seguinte comando:

$ gedit /etc/apache2/httpd.conf

Copie e cole o código abaixo nesse arquivo, substituindo pelo seu nome de usuário do Ubuntu. Onde estiver “gaspar” substituir pelo seu usuário:

<VirtualHost *:80>
ServerName imasters.tut.br
DocumentRoot /home/gaspar/localhost/imasters/web
<Directory /home/gaspar/localhost/imasters/web >
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>

Agora configuramos o arquivo hosts, onde estão os endereços a serem reconhecidos como endereços do servidor local.

$ gedit /etc/hosts 

Copie e cole o seguinte código neste arquivo logo abaixo da linha onde contém o trecho “localhost”

127.0.0.1       imasters.tut.br

Vamos reiniciar o servidor local antes de criarmos o nosso projeto.

$ /etc/init.d/apache2 restart 

Criando o projeto “iMasters”

Vamos navegar até o endereço http://www.symfony-project.org/installation e ir até a linha “Download”, coluna “Symfony 1.4” e clicar em “Source .tgz”.

Após fazer o download, localize-o pelo nome “symfony-1.4.11.tgz”. No meu caso está no diretório “Downloads”. Através da linha de comando, vou copiá-lo até o devido local dentro do meu projeto.

$ cp  ../Downloads/symfony-1.4.11.tgz imasters/lib/vendor

Vamos navegar pelo Terminal até o endereço do arquivo e descompactar o arquivo dentro desta pasta indicada pela documentação do symonfy, “lib/vendor/symfony”.

$ cd imasters/lib/vendor
$ tar zxpf symfony-1.4.11.tgz

Agora vamos re nomear a pasta “symfony-1.4.11” para apenas “symfony”.

$ mv symfony-1.4.11 symfony

Não se esqueça de excluir o arquivo .tgz que ficou nesta pasta.

$ rm symfony-1.4.11.tgz

Agora posicionaremos o cursor do Terminal até a pasta do projeto. Ou seja, o diretório “imasters”.

$ cd ../../

Neste momento, basta criar o projeto com o seguinte comando.

$ lib/vendor/symfony/data/bin/symfony generate:project imasters

Após executar o comando acima, observe que o uma série de pastas e arquivos serão geradas dentro do diretório “imasters”. Mas ainda não será possível visualizar o projeto no navegador. Por que não criamos uma aplicação.

Vamos criar uma aplicação chamada “frontend”, através da linha de comando é claro. Para executar esta ação você já utilizará o próprio comando do symfony.

$ php symfony generate:app frontend

Novamente uma estrutura de arquivos será criado. E, para visualizarmos perfeitamente. Vamos finalizar com apenas um comando que mostrará na integra o página padrão do projeto criada. Ou seja, vamos copiar as imagens e css para a pasta publica (“web”) do projeto.

$ cp –R lib/vendor/symfony/data/web/sf web/

Pronto basta abrir o seu navegador e digitar a seguinte url: http://imasters.tut.br

Você verá algo como a imagem abaixo:


Depois de instalar e configurar o Symfony Framework no Ubuntu, vamos criar nossa primeira aplicação. O objetivo é configurar a página inicial do projeto. Criaremos o módulo home e entenderemos como o symfony realiza o “roteamento” das urls – routing.

Umas das principais vantagens da URL amigável é a segurança gerada no seu site, pois a idéia é que seja eliminada do endereço a linguagem que foi aplicada no processo de desenvolvimento.

Ao invés de www.seusite.com.br/home.php teremos www.seusite.com.br/home

Com symfony isso é muito simples de configurar e você poderá fazer diversas adaptações, passando slugs ao invés de id numérico, por meio do método GET. Além disso, poderá configurar facilmente urls para sites multilíngües.

Primeiramente vamos entender estrutura do nosso projeto na imagem abaixo:


Você poderá usar o seu editor preferido para trabalhar com o projeto. Não se esqueça de informar que é um projeto UTF-8 e PHP 5.2+ para não gerar conflitos com a análise dos projetos, conforme algumas IDEs fazem.

Vamos abrir o projeto com o editor Gedit e verificar a estrutura da aplicação. Ou seja, a pasta “apps” onde será realizado todo o grande trabalho, para cada aplicação que for gerada.


Criaremos o novo módulo chamado home, que será o nosso modulo default. Dentro do diretório “modules” criaremos o diretório “home”, e dentro dele outros dois diretórios, “actions” e “templates”. Actions é a controladora do módulo e Templates é a Visão. Ou seja, toda a regra de negócio e ações serão definidas em “actions”, mais precisamente em um arquivo chamado “actions.class.php”. E para cada ação criada no controlador do módulo home (“actions.class.php”) será criado uma visão onde estará o HTML em “templates” com o mesmo nome da ação (no caso “indexSuccess.php”).

Dentro da pasta “actions” crie um arquivo chamado “actions.class.php” e insira o código abaixo:

<?php
/***** actions.class **********
controlador do módulo home
******************************/
class homeActions extends sfAction
{
public function executeIndex(sfWebRequest $request){
$this->dinamicos = "Hello World";
$this->outraVar = "Bem vindos à página inicial da sua primeira aplicação em Symfony";
$this->maisOutra = "Hoje é ". date('d/m/Y');
}
}

Agora, em “templates”, vamos criar outro arquivo, que mostrará as informações da controladora na visão. Ou seja, representará a ação inicial do modulo home. “index.Success.php” – copie e cole nesse o código abaixo.

<div id="homepage">
<h1><?php echo $dinamicos ?></h1>
<p><?php echo $outraVar ?></p>
<hr>
<small><?php echo $maisOutra ?></small>
</div>

Antes de realizar o teste vejamos como ficou a estrutura.

Agora você irá executar o comando mais utilizado no symfony, que é a limpeza do cache. Abra o terminal e navegue até a pasta do projeto. Ou seja, vá até o diretório “imasters” e execute a linha abaixo:

$ php symfony cc

Abra o seu navegador e execute a seguinte URL: http://imasters.tut.br/index.php/home/index você verá como a imagem abaixo:

Para ajustarmos a url e torná-la amigável deveremos ajustar o arquivo “routing.yml”, que está dentro do diretório “config” da aplicação frontend. Vamos editar este arquivo.

Nas linhas 4 até 7, você vê:

# default rules
homepage:
url: /
param: { module: default, action: index }
Editamos, mudando o default por home:
# default rules
homepage:
url: /
param: { module: home, action: index }

Novamente execute o comando para Limpar o Cache do projeto, pois foi alterado um arquivo YAML de configuração.

$ php symfony cc

Agora em seu navegador modifique a URL por esta http://imasters.tut.br/

Explicando

A página inicial da aplicação estava mostrando uma tela padrão do symfony. Eu apenas configurei um módulo que eu desenvolvi especialmente para a página inicial do meu projeto.

YAML: o arquivo de configuração das urls, chamado “routing.yml” é um arquivo que precisa, necessariamente, ser identado. YAML é uma linguagem identada. Ou seja, deve haver sempre dois espaços (executados obrigatoriamente pela barra de espaços do seu teclado) aos elementos subordinados. Na prática, a palavra homepage: é um roteador que levará a uma url vazia e será apontado para o módulo “home” e a ação “index”. Então “url” e “param” são subordinados à homepage. Eles devem ser identados por dois espaços.

No próximo artigo explicarei como configurar melhor a aplicação, carregar os headers e trabalhar com componentes incluídos e partes.

Por favor, deixe sua dúvida ou sugestão.