Pergunta

Eu estou tentando configurar o Python mini-quadro CherryPy com FastCGI (na verdade fcgid) no Apache. Estou em um servidor compartilhado, então eu não tenho acesso a httpd.conf, apenas htaccess. Tenho seguido estes tutoriais sem sucesso:

Eu recebo 500 erros w / o Apache logs dizendo "Fim prematuro dos cabeçalhos de script". Eu tentei tudo (permissões / 'shebangs / full-caminhos / deamonized / não-daimonized). Eu sei Apache está executando corretamente a minha .fcgi, porque eu sou capaz de imprimir para o log de erro do python, mas é isso. Alguém lá fora instalado com sucesso CherryPy ou qualquer outra estrutura em um servidor compartilhado antes? Sua ajuda seria muito apreciada. Obrigado.

Foi útil?

Solução 3

O artigo Bluehost tem sido o melhor recurso, mas eu não ler atentamente a parte sobre a obtenção dos patches mais recentes (o início da etapa 3). Na altura do artigo, e até agora com CherryPy versão 3.1.2, você não pode fazer fcgi 'modo dinâmico' (quando apache spawns o processo). mais aqui . O modo dinâmico é basicamente essencial se você estiver em um servidor compartilhado.

Eu verifiquei para fora o tronco (3.2.0rc1), e depois de saltar através de algumas aros, tenho que trabalhar. Segui passo 5, o método C no artigo bluehost. Aqui era o material no principal da minha cherryd.fcgi:

if __name__ == '__main__':
    cherrypy.config.update({
        'server.socket_port': None,
        'server.socket_host': None,
        'server.socket_file': None
    })
    start( daemonize=False, fastcgi=True, imports=["hello"])

Além disso, em cherrypy / processo / servers.py, eu tive que mudar a seguinte linha:

# from this
# if not hasattr(socket.socket, 'fromfd'):

# to this
if not hasattr(socket, 'fromfd'):

Assim, é possível obtê-lo para o trabalho, mas parece tipo de hacky. Você deve esperar para a versão final da versão 3.2.0, ou fazer o que fiz e confira Web.py . Eu era capaz de fazê-lo funcionar com o meu servidor compartilhado muito facilmente (docs explicar fastcgi / htaccess bem).

Outras dicas

Apache + Bluehost + fastcgi + cherrypy + wsgi é, infelizmente, um monte de peças. Eu gostaria de ter um ano para escrever o guia definitivo para você, mas infelizmente. Você pode ganhar alguma introspecção da rosca lista bastante longa discussão que resultou em esses links que você postou.

Uma idéia: Verifique se o seu arquivo .fcgi tem uma referência para o executável python correta na linha inicial:

#! / Usr / bin / python

Eu tive que começar Django funcionando com fcgi em Bluehost e apache usando o ambiente python errado foi o meu problema (trabalhou a partir da casca, mas não a partir da web / apache).

Além disso, se você pode imprimir o log de erro do seu código, você pode confirmar que o seu código é executado corretamente, sem quaisquer excepções, quando você acessa a página da web? (Não durante a execução do shell).

No arquivo de log do seu servidor web, ele deve realmente mostrar o que a saída foi que confundiu-lo. Tem certeza de que está procurando no registo de erros, bem como o log de acesso?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top