Apache CGI Workflow

1

Estou tentando entender o fluxo de trabalho para CGI. Por exemplo, digamos que eu use um shell script unix com CGI, qual será a seqüência de etapas executadas para executar este script quando um cliente envia uma requisição para o servidor web (Apache). Eu tenho os seguintes passos, lendo link1 e link2 , mas eu quero perguntar se isso está completo:

  1. O Apache recebe uma solicitação na porta 80 - vê a solicitação de CGI
  2. O Apache bifurca e executa um processo CGI
  3. A CGI examina o script a ser executado e percebe que ele precisa, por exemplo, #! / bin / sh (portanto, um script de shell)
  4. garfos CGI e execs / bin / sh
  5. Shell analisa o script e o executa
por Jake 17.11.2015 / 02:34

2 respostas

4

O "Processo CGI" de que você fala é o programa CGI. O programa CGI pode ser um script em qualquer idioma ou um executável compilado.

Os detalhes de como o sistema operacional realmente executa o código do programa CGI (seus passos 2, 3, 4 e 5) não são realmente necessários para entender como o CGI funciona.

É assim que penso nisso (seus passos 2-5 são compactados na etapa 2 aqui):

  1. O Apache recebe uma solicitação - vê que é uma solicitação para um programa CGI
  2. O Apache executa o programa CGI, passando os parâmetros da solicitação para o programa CGI no ambiente (como variáveis de ambiente).
  3. O programa CGI obtém os parâmetros do ambiente, realiza qualquer processamento necessário e grava a página da web na saída padrão.
  4. O Apache recebe a página da Web da saída padrão do programa CGI e a transmite para o cliente da Web (geralmente seu navegador da Web).

A maioria dos detalhes discutidos nas suas etapas 2-5 é abordada na página execve man (no Linux há exemplos de código de trabalho): man 2 execve . Você também pode querer olhar para fork . Isso está ficando fora do tópico de CGI e no tópico do modelo de processo Unix. Melhor para outra pergunta depois.

Para uma descrição precisa e detalhada do CGI, consulte o esboço da especificação da Internet: O WWW Common Gateway Interface Versão 1.1

Veja também Tutorial do Apache: conteúdo dinâmico com CGI

    
por 17.11.2015 / 07:21
0

Uma das melhores explicações que vi sobre o funcionamento dos CGIs está neste livro

link

    
por 17.11.2015 / 06:30