Uma resposta real precisa de muito mais informação (caminhos relevantes, pedaços de configuração, é o seu executável * .py, você reiniciou após a configuração etc), então eu vou fazer o melhor que puder, mas primeiro ...
Diferentemente do PHP que possui o fastCGI embutido no próprio interpretador, o Python não oculta a implementação do fastCGI. No nível básico, este test.py define cabeçalhos inválidos ( \r\n
newlines são obrigatório ) e está faltando a linha em branco necessária entre os cabeçalhos e o corpo. Estas são as duas coisas que as funções req.set_header()
e req.write()
(como mostrado no exemplo) lidam.
Esse aplicativo terá uma função de manipulador de solicitação que é chamada para cada solicitação e é responsável pela leitura e pelo processamento da solicitação real. No caso do exemplo fornecido, a classe Handler
(que é uma subclasse de cgi.Handler
) é criada e é usada para construir um servidor fastCGI cujo método run()
é chamado para manipular a parte "executar para sempre" do questão. A classe tem um membro process()
adicionado que aceita a solicitação e faz alguma coisa. Esse "algo" é onde você teria o seu código mundial de olá.
Com base na configuração do exemplo vinculado, quando um navegador acessar http://vhost.example.com/python/banana/apple.jpg
, a litespeed tentará se conectar a um processo /absolutepathto/demoapp.py
existente por meio do arquivo de soquete em /tmp/lshttpd/mypythonfcgi.sock
(ou executar o programa demoapp.py então conecte se necessário). Uma vez conectado, ele usa o protocolo fastCGI para informar ao aplicativo em execução que ele tem uma solicitação para banana/apple.jpg
via REQUEST_URI
(eu penso). Pode ser /python/banana/apple.jpg ou algo assim. Use o exemplo dado para descarregar o pedido e ver). Cabe à função de membro process()
descobrir o que fazer com a solicitação banana/apple.jpg
. Ao contrário do PHP simples, os URLs não correspondem necessariamente a partes individuais do código-fonte. (Embora você possa escrever um programa python que use REQUEST_URI para executar outros programas python.)
Observe também que /absolutepathto/fastcgiapp.py está tradicionalmente fora da raiz do documento do seu servidor, para que as pessoas não possam baixar acidentalmente o aplicativo em si.
Agora , como por que seu script está sendo impresso, em vez de gerar um erro de cabeçalho incorreto, dando a você uma página em branco ou apenas travando. Os principais suspeitos são um dos três:
- o seu "
/absolutepathto/test.py
" não é executável (embora tenha certeza de que isso causaria um erro) - seu virtualhost na litespeed não está configurado com seu test.py como um "Aplicativo externo" (isso também pode ser configurado no nível do servidor para todos os virtualhosts)
- seu URI nesse host virtual não está configurado para rotear solicitações para seu "Aplicativo externo" configurado na etapa 2.
- você não reiniciou a litespeed depois de alterar a configuração para # 2 e # 3? (não é realmente um suspeito principal, mas tem que perguntar)
Se não for o n.º 1 ou o n.º 4, atualize a questão com a sua configuração relevante da litespeed e iremos a partir daí.