por Laurent Bonnet
Visão Geral
Este documento é um novo tutorial passo-a-passo cobrindo a instalação, implantação e teste de funcionamento do framework symfony no Windows Server 2008.
A fim de preparar o desenvolvimento para Internet, o tutorial pode ser executado em um ambiente de servidor dedicado, hospedado na Internet.
Naturalmente, é possível concluir o tutorial em um servidor local, ou uma máquina virtual na estação de trabalho do leitor.
A razão para um novo tutorial
Atualmente, existem duas fontes de informação relacionadas com o Microsoft Internet Information Server (IIS) no symfony website , mas eles se referem às versões anteriores que não evoluíram com novas versões de sistemas operacionais Microsoft Windows, especialmente Windows Server 2008 (lançado em fevereiro de 2008), que inclui muitas mudanças de interesse para desenvolvedores PHP:
IIS versão 7, a versão embutida no Windows Server 2008, foi inteiramente reescrita para um design totalmente modular.
IIS 7 provou ser muito confiável, com muito poucas correções necessárias de Windows Update, desde o lançamento do produto.
O IIS 7 também inclui o acelerador FastCGI, um pool de aplicativos multi-threaded que tira proveito do modelo de segmentação nativo do sistemas operacionais Windows.
A implementação do PHP FastCGI equivale a um desempenho 5x a 10x melhor na execução, sem cache, quando comparado ao tradicional ISAPI ou implantações CGI do PHP em Windows e IIS.
Mais recentemente, a Microsoft mostrou um acelerador de cache para o PHP, que está em status de lançamento Release Candidate no momento da redação deste texto (02/11/2009).
Como utilizar este tutorial em diferentes sistemas Windows, incluindo 32-bit
Este documento foi escrito especificamente para edições do Windows Server 2008 de 64-bits . Entretanto, você deve ser capaz de usar as outras versões, sem quaisquer complicações.
note
A versão exata do software operacional utilizado na tela é Windows Server 2008 Enterprise Edition com Service Pack 2, 64-bit edition.
Versões do Windows 32-bit
O tutorial é facilmente transportável para versões do Windows 32-bit, substituindo as seguintes referências no texto:
Em edições 64-bit:
C:\Program Files (x86)\
eC:\Windows\SysWOW64\
Em edições de 32-bit:
C:\Program Files\
eC:\Windows\System32\
Sobre outras edições do Enterprise
Além disso, se você não tiver Enterprise Edition, este não é um problema. Essa documentação é diretamente portável para outras edições do Windows Server: Windows Server 2008 Web, Standard ou Datacenter Windows Server 2008 Web Standard ou Datacenter, com Service Pack 2 do Windows Server 2008 R2 Web Edições Standard, Enterprise ou Datacenter.
Por favor, note que todas as edições do Windows Server 2008 R2 estão disponíveis apenas como sistemas operacionais 64-bit.
Sobre a Edições Internacionais
As configurações regionais usadas nas imagens são en-US
. Nós também
instalamos um pacote de linguagem internacional para a França.
É possível executar o tutorial sobre sistemas operacionais Windows clientes: Windows XP, Windows Vista e Windows Seven, tanto em modos x64 e x86.
Servidor Web utilizado em todo o documento
O servidor web utilizado é o Microsoft Internet Information Server versão 7.0, que é incluído em todas as edições como parte do Windows Server 2008. Começamos o tutorial com um servidor Windows Server 2008 totalmente funcional e instalamos o IIS a partir do zero. As etapas de instalação usam as opções padrões, bastando adicionar dois módulos específicos que vem com o design modular do IIS 7.0: FastCGI e URL Rewrite.
Bancos de Dados
SQLite é o banco de dados pré-configurado para no sandbox do symfony. No Windows, não há nada específico para instalar: SQLite é diretamente implementado na extensão PDO do PHP para o SQLite, que é instalado no momento da instalação do PHP.
Assim, não há necessidade de baixar e executar uma instância separada do SQLITE.EXE:
[PHP_PDO_SQLITE] extension=php_pdo_sqlite.dll
Configuração do Windows Server
É melhor usar uma nova instalação do Windows Server, a fim de corresponder as capturas de telas (screenshots) do passo-a-passo neste capítulo.
Claro que você pode trabalhar diretamente em uma máquina existente, mas você pode encontrar diferenças devido aos softwares instalados, tempo de execução, e as configurações regionais.
A fim de obter as mesmas telas que aparecem no tutorial, é recomendável a obtenção de um Windows Server dedicado em um ambiente virtual, disponível gratuitamente na Internet por um período de 30 dias.
É necessário ter acesso de Administrador no servidor.
Se estiver trabalhando em uma estação de trabalho remota, o leitor deve executar Remote Desktop Services (anteriormente conhecido como cliente do Terminal Server) e garantir que ele tem acesso de Administrador.
A distribuição usada aqui é: Windows Server 2008 com Service Pack 2.
Windows Server 2008 foi instalado com o ambiente gráfico, que utiliza visual do Windows Vista. Também é possível usar uma linha de comando apenas para a versão do Windows Server 2008 com os mesmos serviços, a fim de reduzir o tamanho da distribuição (1,5 GB em vez de 6,5 GB). Isto também reduz a área de ataque e o número de patches do Windows Update, que terão de ser aplicados.
Verificações preliminares - Servidor Dedicado na Internet
Uma vez que o servidor está diretamente acessível na Internet, é sempre uma boa idéia verificar se o Firewall do Windows está fornecendo proteção ativa. As únicas exceções que devem ser verificadas são:
- Core Networking
- Remote Desktop (se acessado remotamente)
- Secure World Wide Web Services (HTTPS)
- World Wide Web Services (HTTP)
Então, é sempre bom para executar o Windows Update para garantir que todos os pacotes do software estão instalados com as últimas correções, patches e documentação.
Como última etapa de preparação, e por uma questão de eliminar quaisquer potenciais parâmetros conflitantes na distribuição existente no Windows ou configuração do IIS, recomendamos que você desinstale o Serviço Web do servidor Windows, se previamente instalado.
Instalando PHP - Apenas alguns cliques de distância
Agora, podemos instalar o IIS e o PHP em uma operação simples.
PHP não é uma parte da distribuição do Windows Server 2008, portanto, nós precisamos instalar primeiro o Microsoft Web Platform Installer 2.0, denominada Web PI nas seções seguintes.
Web PI toma cuidado de instalar todas as dependências necessárias para a execução de PHP em qualquer Windows / sistema do IIS. Então, ele instala o IIS com o mínimo de Role Services para o servidor Web, e também oferece opções mínimas para o PHP runtime.
A instalação do Microsoft Web Platform Installer 2.0 contém um analisador de configuração, verifica módulos existentes, propõe as atualizações de módulos necessárias, e ainda permite que você faça um beta-teste de extensões ainda não lançadas da Microsoft Web Platform.
Web PI 2.0 oferece a instalação do PHP runtime em um clique. A seleção instala a implementação Win32 "non-thread safe" do PHP, que é melhor associada ao IIS 7 e FastCGI. Também oferece o mais recente runtime testado, aqui 5.2.11. Para encontrá-lo, basta selecionar a guia "Frameworks and Runtimes" à esquerda:
Depois de selecionar o PHP, Web PI 2,0 automaticamente são selecionadas todas as dependências necessárias
para servir páginas web .php
armazenadas no servidor, incluindo o mínimo
IIS 7.0 roles services:
Em seguida, clique em Install, em seguida, no botão "I Accept". A instalação dos componentes IIS começará enquanto, paralelamente, o PHP é transferido runtime e alguns módulos são atualizados (atualização para um IIS FastCGI 7,0 por exemplo).
Finalmente, o programa de instalação do PHP é executado, e, após alguns minutos, deverá apresentar:
Clique em "Finish".
O Windows Server está escutando e agora é capaz de ouvir e responder na porta 80.
Vamos verificar isso no navegador:
Agora, para verificar que o PHP está instalado corretamente, e disponível a partir do IIS, nós
criamos um pequeno arquivo phpinfo.php
a ser acessado pelo servidor web padrão
na porta 80, em C:\inetpub\wwwroot
.
Antes de fazer isso, garantimos que, no Windows Explorer, podemos ver as extensões corretas dos arquivos. Selecione "Unhide Extensions for Known Files Types".
Abra o Windows Explorer e vá para "C:\inetpub\wwwroot. Clique com o botão direito do mouse e selecione
"New Text Document". Renomeie para
phpinfo.php` e copie a chamada de função
usual:
Em seguida, reabrir o navegador web, e colocar /phpinfo.php
no final da
URL do servidor:
Finalmente, para garantir que o symfony irá instalar sem problemas, faça o download http://sf-to.org/1.3/check.php.
Copie para o mesmo diretório como phpinfo.php
( C:\inetpub\wwwroot
) e
renomeie para check_configuration.php
se necessário.
Por fim, reabra o navegador web uma última vez para agora, e coloque
/check_configuration.php
no final da URL do servidor:
![Firefox - Execução check_configuration.php está OK.] /legacy/images/more-with-symfony/windows_19.png ()
Executando o PHP na interface de linha de comando
Para depois executar as tarefas da linha de comando com o symfony, precisamos assegurar que o PHP.EXE é acessível a partir do prompt de comando e é executad corretamente.
Abra um prompt de comando para C:\inetpub\wwwroot
e digite
PHP phpinfo.php
A seguinte mensagem de erro deve aparecer:
Se não fizermos nada, a execução de PHP.EXE trava na ausência do MSVCR71.DLL. Então, temos de encontrar o arquivo DLL e instalá-lo no local correto.
Este MSVCR71.DLL
é uma versão do Microsoft Visual C + + runtime, que
remonta à época de 2003. Ele está contido no pacote redistribuível
.NET Framework 1.1.
O pacote redistribuível .NET Framework 1.1, pode ser baixado em MSDN
O arquivo que estamos procurando é instalado no seguinte diretório:
C:\Windows\Microsoft.NET\Framework\v1.1.4322
Basta copiar o para MSVCR71.DLL
para o seguinte destino:
- Em sistemas x64: o diretório
C:\windows\syswow64
- Em sistemas x86: o diretório
C:\windows\system32
Podemos agora desisntalar o .Net Framework 1.1.
O executável PHP.EXE agora pode ser executado no prompt de comando sem erro. Por exemplo:
PHP phpinfo.php PHP check_configuration.php
Mais tarde, nós vamos verificar que symfony.bat (a partir da distribuição Sandbox) também dá a resposta esperada, que é a sintaxe do comando symfony.
Instalação e Uso do Sandbox do symfony
O parágrafo seguinte é um trecho do "Guia de Introdução ao symfony", "The Sandbox": página: "O sandbox é um projeto symfony pré-empacotado super fácil de instalar, já configurado com alguns padrões razoáveis. É uma ótima forma de praticar o symfony, sem o incômodo de uma instalação adequada que respeite a melhores práticas da web".
O sandbox é pré-configurado para usar o SQLite como banco de dados. No Windows, não há nada específico para instalar: O SQLite é diretamente implementado na extensão PDO do PHP para o SQLite, que é instalado juntamente com o PHP. Nós já realizamos isto antes, quando o PHP runtime foi instalado através do Microsoft Web PI.
Basta verificar se a extensão SQLite está corretamente referida no arquivo
PHP.INI, que reside no diretório C:\Program Files (x86)\PHP
, e que
a DLL que implementa o suporte PDO para SQLite está definida como
C:\Program Files (x86)\PHP\ext\php_pdo_sqlite.dll
.
Baixar, criar Diretório, copiar todos os Arquivos
O projeto sandbox do symfony está "pronto para instalar e executar", e vem em um
arquivo .zip
.
Baixe o arquivo
e extraia-o para em um local temporário, como o diretório "downloads",
que está disponível para leitura/escrita no diretório C:\User\administrador
.
Crie um diretório para o destino final do sandbox, como F:\dev\sfsandbox
:
Selecione todos os arquivos - CTRL-A
no Windows Explorer - a partir do seu local de download
(fonte), e os copie para o diretório F:\dev\sfsandbox
.
Você deverá ver 2599 itens copiados para o diretório de destino:
Teste de Execução
Abra o prompt de comando. Vá para F:\dev\sfsandbox
e execute o seguinte comando:
PHP symfony -V
Isso deve retornar:
symfony versão 1.3.0 (F:\dev\sfsandbox\lib\symfony)
A partir do mesmo prompt de comando, execute:
SYMFONY.BAT -V
Isso deve retornar o mesmo resultado:
symfony version 1.3.0 (F:\dev\sfsandbox\lib\symfony)
A criação de aplicativos Web
Para criar uma aplicação Web no servidor local, utilize o gerenciador do IIS7, que é o painel de controle da interface gráfica do usuário para todas as atividades relacionadas com o IIS. Todas as ações realizadas a partir da interface do usuário que são efetivamente realizadas por trás dos bastidores através da interface de linha de comando.
O Gerenciador do IIS é acessível a partir do Menu Start em Programs, Administrative Tools, Internet Information Server (IIS) Manager.
Reconfigurando o "Default Web Site" de modo a não interferir na Porta 80
Queremos garantir que apenas o nosso symfony sandbox está respondendo na porta 80 (HTTP). Para fazer isso, altere a porta atual do "Default Web Site porta" para 8080.
Observe que, se o Firewall do Windows estiver ativo, você poderá ter de criar uma exceção para a porta 8080 para continuar a ser capaz de atingir o "Default Web Site". Para esse efeito, vá para Windows Control Panel, selecione Windows Firewall, clique em "Allow a program through Windows Firewall" e clique em "Add port" para criar esta exceção. Marque a caixa para ativá-lo após a criação.
Adicionar um Novo Site para a Sandbox
Abra o IIS Manager a partir Administration Tools. No painel esquerdo, selecione o ícone "Sites"
e clique com o botão direito. Selecione Add Web Site a partir do menu de contexto. Digite, por
exemplo, "symfony Sandbox" como o nome do site, D:\dev\sfsandbox
para a Physical
Path, e deixe os outros campos inalterados. Você verá esta caixa de diálogo:
Clique em OK. Se um pequeno X
aparece no ícone do site (em Features View /
Sites), não deixe de clicar em "Restart" no painel direito para fazê-lo
desaparecer.
Verifique se o Site está Respondendo
Do IIS Manager, selecione o site "symfony Sandbox", e, no painel da direita, Clique em "Browse *. 80 (http)".
Você deverá receber uma mensagem de erro explícita, isso não é inesperado:
HTTP Error 403.14 - Forbidden
.
O servidor Web está configurado para não listar o conteúdo deste diretório.
Isto é originado a partir da configuração padrão do servidor web, que especifica
que o conteúdo deste diretório não deve ser listado. Uma vez que nenhum arquivo
padrão como index.php
ou index.html
existe em D:\dev\sfsandbox
, o
servidor retorna corretamente a mensagem de erro "Forbidden". Não tenha medo.
Digite http://localhost/web
na barra de endereços do seu navegador, em vez de apenas
http://localhost `. Agora você deve ver o seu navegador, por padrão o Internet
Explorer, exibindo "symfony Project Created":
A propósito, você pode ver uma faixa amarela no topo dizendo "Intranet settings are now turned off by default". Configurações de Intranet são menos seguras do que Configurações de Internet. Clique para ver opções. Não tenha medo desta mensagem.
Para fechá-lo permanentemente, clique com o botão direito do mouse na faixa amarela, e selecione a opção apropriada.
Esta tela confirma que a página padrão index.php
foi corretamente carregado
a partir de D:\dev\sfsandbox\web\index.php
, executado corretamente, e que as bibliotecas symfony
estão corretamente configuradas.
Temos que realizar uma última tarefa antes de começar a brincar com o symfony
Sandbox: configurar a página web do front-end importando as regras de reescrita de URL.
Estas regras são implementadas como arquivos .htaccess
e podem ser controladas em
apenas alguns cliques no Gerenciador do IIS.
Sandbox: Configuração do Front-end Web
Nós queremos configurar aplicação sandbox a fim de começar a
brincar realmente com as coisas do symfony. Por padrão, a primeira página final pode ser
alcançada e executa corretamente quando solicitada a partir da máquina local
(isto é, o nome localhost ou o endereço 127.0.0.1
).
Vamos explorar as "configuration", "logs" e "timers" os painéis de debug web para garantir que o sandbox esteja totalmente funcional no Windows Server 2008.
Enquanto nós poderíamos tentar acessar a aplicação sandbox da Internet ou a partir de um endereço IP remoto, o sandbox é mais concebido como uma ferramenta para aprender o framework symfony na máquina local. Portanto, nós vamos cobrir detalhes relacionados ao acesso remoto na última seção: Projeto: Configuração do Front-end Web.
Criação de um novo Projeto symfony
Criar um ambiente de projeto symfony para fins de desenvolvimento real é quase tão simples como a instalação do sandbox. Vamos ver todo o processo de instalação de um procedimento simplificado, que é equivalente a instalação e implantação do sandbox.
A diferença é que, neste seção "projeto", vamos nos concentrar na configuração da aplicação Web para fazer funcionar de qualquer lugar Internet.
Como o sandbox, o projeto symfony vem pré-configurado para usar o SQLite como motor de base de dados. Este foi instalado e configurado no início deste capítulo.
Baixar, criar um diretório e copiar os arquivos
Cada versão do symfony pode ser baixada como um arquivo zip e então usada para criar um projeto do zero.
Baixe o arquivo contendo a biblioteca do website symfony. Em seguida, extraia o diretório contido em um local temporário, como a diretório de "downloads".
Agora precisamos criar uma árvore de diretórios para o destino final do projeto. Isto é um pouco mais complicado do que o sandbox.
Árvore de diretórios de instalação
Vamos criar uma árvore de diretórios para o projeto. Iniciar a partir da raiz do volume,
D:
por exemplo.
Criar um diretório \dev
em D:
, e criar outro diretório chamado
sfproject
lá:
D: MD dev CD dev MD sfproject CD sfproject
Estamos agora em: D:\dev\sfproject
A partir daí, criar uma árvore de subdiretórios, criando os diretórios lib
, vendor
e symfony
em cascata:
MD lib CD lib MD vendor CD vendor CD vendor CD symfony
Estamos agora em: D:\dev\sfproject\lib\vendor\symfony
Selecione todos os arquivos (CTRL + A
no Windows Explorer) a partir do seu local de download
(fonte), e copie de Downloads para D:\dev\sfproject\lib\vendor\symfony
.
Você deverá ver 3819 itens copiados para o diretório de destino:
Criação e inicialização
Abra o prompt de comando. Mude para o diretório D:\dev\sfproject
e execute
o seguinte comando:
PHP lib\vendor\symfony\data\bin\symfony -V
Isso deve retornar:
symfony version 1.3.0 (D:\dev\sfproject\lib\vendor\symfony\lib)
Para iniciar o projeto, basta executar o seguinte linha de comando PHP:
PHP lib\vendor\symfony\data\bin\symfony generate:project sfproject
Isso deve retornar uma lista de operações de arquivo, incluindo alguns comandos
chmod 777
:
Ainda no prompt de comando, crie uma aplicação symfony, executando o seguinte comando:
PHP lib\vendor\symfony\data\bin\symfony generate:app sfapp
Novamente, este deve retornar uma lista de operações de arquivo, incluindo alguns
comandos chmod 777
.
A partir deste ponto, ao invés de digitar PHP lib\vendor\symfony\data\bin\symfony
cada vez que for necessário, copie o arquivo symfony.bat
desde a sua origem:
copy lib\vendor\symfony\data\bin\symfony.bat
Temos agora um comando conveniente para ser executado na linha de comando no prompt
D:\dev\sfproject
.
Ainda em D:\dev\sfproject
, podemos agora executar o comando clássico:
symfony -V
para obter a resposta clássica:
symfony version 1.3.0 (D:\dev\sfproject\lib\vendor\symfony\lib)
A criação de aplicativos Web
Nas linhas que se segue, vamos supor que você já leu em "Sandbox: Criação do Front-end Web" os passos preliminares para reconfigurar o" Default Web Site" para que não interfira na porta 80.
Adicione um novo Web Site para o Projeto
Abra o IIS Manager a partir do Administration Tools. No painel esquerdo, selecione o icone "Sites"
e clique com o botão direito do mouse. Selecione "Add Web Site" do menu popup. Digite, por
exemplo, "symfony Project" como o nome do site, D:\dev\sfproject
para a
"Physical Path", e deixar os outros campos inalterados; você verá esta caixa
de diálogo:
Clique em OK. Se um pequeno x
aparece no ícone do site (em Features View /
Sites), não deixe de clicar em "Restart" no painel direito para faze-lo
desaparecer.
Verifique se o Web Site está respondendo
A partir do IIS Manager, selecione o site "Symfony Project", e, no painel da direita, clique em "Browse *. 80 (http)".
Você deve obter a mesma mensagem de erro explícita como você tinha quando se testava o sandbox:
*HTTP Error 403.14 - Forbidden*
O servidor Web está configurado para não listar o conteúdo deste diretório.
Digite http://localhost/web
na barra de endereços do seu navegador, você deve agora
ver a página "Symfony Project Created", mas com uma discreta diferença da
mesma página resultante de inicialização do sandbox: não existem imagens:
As imagens não estão aqui por enquanto, porém elas estão localizadas em um diretório sf
na biblioteca symfony. É fácil ligá-los ao
diretório /
web, adicionando um diretório virtual em /web, nomeado
sf, e apontando para
D:\dev\sfproject\lib\vendor\symfony\data\web\sf`.
Agora temos a página "symfony Project Created" regular com imagens como esperado:
E, finalmente, toda a aplicação symfony está funcionando. A partir do navegador da Web,
digite o endereço da aplicação web, i.e. http://localhost/web/sfapp_dev.php
:
Vamos realizar um último teste no modo de local: verificar os painéis do web debug "configuration", "logs" e "timers" para garantir que o projeto está totalmente funcional.
Configuração da Aplicação para Aplicações Prontas para Internet
Nosso projeto symfony genérico está agora trabalhando localmente, como o sandbox, a partir da
servidor host local, localizado em http://localhost
ou http://127.0.0.1
.
Agora, nós gostaríamos de ser capazes de acessar o aplicativo da Internet.
A configuração padrão do projeto protege a aplicação de
ser executada de um local remoto, embora, na realidade, tudo deve estar ok
para acessar os arquivos index.php
e sfapp_dev.php
. Vamos executar o
projeto a partir do navegador da Web, usando o endereço IP do servidor externo
(por exemplo 94.125.163.150
) e o FQDN do nosso Servidor Dedicado Virtual
(por exemplo, 12543hpv163150.ikoula.com
). Você ainda pode usar os dois endereços
a partir de dentro do servidor, uma vez que eles não estão mapeadas ao 127.0.0.1
:
Como dissemos antes, o acesso a index.php
e sfapp_dev.php
de um
localização remota está ok. A execução do sfapp_dev.php
entretanto falha, pois
não é permitida por padrão. Isso impede usuários maliciosos de
acessarem seu ambiente de desenvolvimento, que contém informações potencialmente sensíveis
sobre o projeto. Você pode editar o arquivo sfapp_dev.php
para fazer
o trabalho, mas isto é fortemente desencorajado.
Finalmente, podemos simular um domínio real, editando o arquivo "hosts".
Este arquivo executa a resolução de nomes FQDN local, sem necessidade de instalar o Serviço de DNS no Windows. O serviço de DNS está disponível em todas as edições do Windows Server 2008 R2, e também no Windows Server 2008 Standard, Enterprise e Datacenter.
Em sistemas operacionais Windows x64, o arquivo "hosts" está localizado por padrão em:
C:\Windows\SysWOW64\Drivers\etc
O arquivo "hosts" é pré-preenchido para a máquina poder resolver localhost
para
C:\Windows\SysWOW64\Drivers\etc
Vamos adicionar um nome real de domínio falso, como o sfwebapp.local
, e poder
resolvê-lo localmente.
Seu projeto symfony agora roda na Internet, sem DNS, a partir de uma sessão de navegador web executada de dentro do servidor web.
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.