Ao implantar uma aplicação PHP em uma instância do Elastic Compute Service (ECS) Windows, você pode integrar uma versão non-thread-safe (NTS) do PHP ao módulo FastCGI do Internet Information Services (IIS) para garantir o desempenho e a segurança do site. Este guia explica como configurar as permissões de diretório e um pool de aplicativos dedicado para o seu site.
Como funciona
Esta solução integra o módulo FastCGI do IIS ao interpretador PHP para analisar e servir páginas web PHP. As solicitações externas são primeiro filtradas pelo grupo de segurança da instância. Em seguida, o IIS usa um mapeamento de manipulador para encaminhar as solicitações .php ao processo php-cgi.exe no pool de processos FastCGI. O IIS então retorna o resultado ao cliente.
Componentes principais
-
O navegador de um usuário envia uma solicitação HTTP pela rede pública à porta 80 da instância ECS.
-
O IIS recebe a solicitação HTTP. Se a solicitação for para um arquivo
.php, as regras de mapeamento de manipulador do IIS encaminham a solicitação ao executável CGI do PHP (php-cgi.exe) por meio do protocolo FastCGI. -
O módulo FastCGI gerencia um pool de processos
php-cgi.exeque recebe as solicitações e executa os scripts PHP correspondentes. -
O interpretador PHP executa a lógica de negócios e retorna o conteúdo HTML gerado ou outros dados ao IIS.
-
O IIS retorna o resultado final ao cliente como uma resposta HTTP.
Procedimento
As etapas a seguir usam o Windows Server 2022 como exemplo.
Etapa 1: Instalar o IIS e o módulo CGI
Faça logon em uma instância ECS.
Acesse ECS console - Instances. No canto superior esquerdo, selecione a região e o grupo de recursos da instância de destino.
Navegue até a página de detalhes da instância de destino. Clique em Connect e selecione Workbench. Defina o método de conexão como Terminal Connection, insira seu nome de usuário e senha e faça logon no terminal gráfico.
-
Na caixa de pesquisa da barra de tarefas, insira Server Manager e abra-o.
-
Selecione Add roles and features. No assistente, clique em Next até chegar à página Server Roles e marque a caixa de seleção Web Server (IIS).
-
Na caixa de diálogo exibida, clique em Add Features e depois clique em Next até chegar à página Role Services.
-
Na lista de Role services, expanda e marque a caixa de seleção CGI. Clique em Next e depois clique em Install.
-
Após a conclusão da instalação, clique em Close.
Etapa 2: Instalar o ambiente de execução do PHP
-
Baixe e instale o Microsoft Visual C++ Redistributable necessário para o PHP.
-
Acesse a página de download no site oficial do PHP. Selecione e baixe o pacote Zip VS17 x64 Non Thread Safe.
O módulo FastCGI do IIS usa um modelo multiprocessos em que cada processo é executado de forma independente, eliminando a necessidade de segurança de threads. A versão Non-Thread Safe (NTS) do PHP omite essas verificações de segurança, oferecendo melhor desempenho e maior estabilidade em um ambiente IIS.
-
Extraia o pacote Zip baixado em um caminho de diretório que não contenha espaços, como
C:\php. Esse caminho será o diretório de instalação do PHP.
Etapa 3: Configurar a integração do PHP com o IIS
Configure o IIS para usar o protocolo FastCGI e chamar o interpretador PHP. Isso permite que o IIS processe arquivos .php encaminhando as solicitações ao interpretador PHP.
-
Na caixa de pesquisa da barra de tarefas, insira Internet Information Services (IIS) Manager e abra-o.
-
No painel de navegação à esquerda, clique no nome do host do servidor para abrir a visualização de recursos do servidor.
-
Clique duas vezes em Handler Mappings. No painel Actions à direita, clique em Add Module Mapping....
-
Na caixa de diálogo exibida, configure os seguintes parâmetros:
-
Request Path:
*.php -
Module:
FastCgiModule -
Executable (optional):
C:\php\php-cgi.exeNa caixa de diálogo de seleção de arquivo, altere o tipo de arquivo de
.dllpara.exepara localizar ophp-cgi.exe. -
Name:
PHP via FastCGI
-
-
Clique em OK. Na caixa de diálogo de confirmação exibida, clique em Yes para criar o aplicativo FastCGI correspondente.
Etapa 4: Criar e configurar o site
Crie um novo site e configure um pool de aplicativos dedicado e as permissões de diretório para ele.
-
Criar um diretório e configurar permissões
Seguindo o princípio do menor privilégio, o IIS não concede automaticamente permissões a novos diretórios. Você deve conceder manualmente permissões de leitura ao grupo
IIS_IUSRS. Caso contrário, ocorrerá um erro 403 ou 500 ao acessar o site.-
Na caixa de pesquisa da barra de tarefas, insira File Explorer e abra-o.
-
Crie um diretório raiz para o seu site, por exemplo,
C:\myphp. -
Clique com o botão direito no diretório raiz do site e selecione .
-
Na caixa Enter the object names to select, insira
IIS_IUSRS, clique em Check Names e depois em OK. -
Selecione o grupo
IIS_IUSRSrecém-adicionado e conceda as permissões Read & execute, List folder contents e Read. -
Clique em OK para salvar as configurações de permissão.
-
-
Alterar a porta do site padrão do IIS
O novo site precisa usar a porta 80, que já está ocupada pelo site padrão do IIS (Default Web Site).
-
Na caixa de pesquisa da barra de tarefas, insira Internet Information Services (IIS) Manager e abra-o.
-
No painel de navegação à esquerda, expanda o nome do host do servidor e clique em Sites.
-
Selecione Default Web Site. No painel Actions à direita, clique em Bindings....
-
Selecione a vinculação de porta, clique em Edit, altere a porta para outro número (como 8080), clique em OK e depois clique em Close.
-
-
Adicionar o site
-
No painel de navegação à esquerda, clique com o botão direito no nó Sites e selecione Add Website....
-
Configure as informações do site:
-
Site name: Por exemplo,
MyPHP. -
Physical path: O diretório raiz do site, por exemplo,
C:\myphp. -
Port:
80.
-
-
Clique em OK.
-
Etapa 5: Configurar o grupo de segurança e verificar a configuração
Crie uma página de teste para verificar a configuração do ambiente.
-
Configurar uma regra de grupo de segurança
Para permitir o acesso pela rede pública ao seu site, abra a porta do serviço web no grupo de segurança da instância.
-
Acesse o ECS console - Instances e clique no ID da instância de destino para acessar a página de detalhes.
-
Na página de detalhes da instância, clique na aba Security Groups e depois clique no ID do grupo de segurança de destino para abrir a página de detalhes.
-
Na lista de regras de entrada, clique em Add Rule, configure os seguintes parâmetros e salve a regra.
-
Action: Allow
-
Protocol: Custom TCP
-
Source:
0.0.0.0/0 -
Destination (Current Instance):
80/80
-
-
-
Criar uma página de teste
No diretório raiz do site (por exemplo,
C:\myphp), crie um arquivo chamadoindex.phpe adicione o seguinte conteúdo:<?php phpinfo(); ?> -
Acessar a página de teste
Abra um navegador web e acesse
http://<Endereço IP público da instância>/index.php. Se a página exibir informações detalhadas do PHP, o ambiente está configurado corretamente.