Domanda

Sto cercando di configurare il Python mini-quadro CherryPy con FastCGI (in realtà fcgid) su Apache. Io sono su un host condiviso, in modo da non avere accesso a httpd.conf, appena .htaccess. Ho seguito questi tutorial senza alcun risultato:

Continuo a ricevere 500 errori w / il log di Apache dire "Fine prematura di intestazioni di script". Ho provato di tutto (permessi / SheBangs / full-percorsi / deamonized / non-daimonized). So che Apache è in esecuzione in modo corretto il mio .fcgi, perché sono in grado di stampare il log degli errori in pitone, ma questo è tutto. Qualcuno là fuori installato con successo CherryPy o qualsiasi altro quadro su un host condiviso prima? Il vostro aiuto sarebbe molto apprezzato. Grazie.

È stato utile?

Soluzione 3

L'articolo Bluehost è stata la miglior risorsa, ma non ho letto attentamente la parte su come ottenere le patch più recenti (l'inizio della fase 3). Al momento di questo articolo, e anche ora con CherryPy versione 3.1.2, non si può fare fcgi 'modalità dinamica' (quando apache genera il processo). più qui . modalità Dynamic è fondamentalmente essenziale se siete su un host condiviso.

Ho verificato il tronco (3.2.0rc1), e dopo il salto attraverso alcuni cerchi, ha ottenuto farlo funzionare. Ho seguito passo 5, metodo C. nell'articolo bluehost. Qui era la roba nella principale della mia 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"])

Inoltre, in cherrypy / processo / servers.py, ho dovuto cambiare la seguente riga:

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

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

Quindi, è possibile farlo funzionare, ma ci si sente tipo di hacky. Si consiglia di attendere per la versione finale di versione 3.2.0, o fare quello che ho fatto e controllare Web.py . Sono stato in grado di farlo funzionare con il mio host condiviso molto facilmente (docs spiegano FastCGI / htaccess bene).

Altri suggerimenti

Apache + Bluehost + FastCGI + cherrypy + WSGI è, purtroppo, un sacco di pezzi. Vorrei avere un anno per scrivere la guida definitiva per voi, ma ahimè. Si potrebbe guadagnare una certa comprensione dal thread lista piuttosto lungo mailing che ha portato in quei collegamenti hai postato.

Un'idea: assicurarsi che il file di .fcgi ha un riferimento al file eseguibile pitone corretto nella linea iniziale:

  

#! / Usr / bin / python

Ho dovuto ottenere Django esecuzione con fcgi su Bluehost e Apache utilizzando l'ambiente di pitone sbagliato è stato il mio problema (ha lavorato dal guscio, ma non dal web / apache).

Oltre a questo, se è possibile stampare il log degli errori dal codice, si può confermare che il vostro codice sia correttamente eseguito, senza alcuna eccezione, quando si accede alla pagina web? (Non quando va dalla shell).

Nel file di log del server web, si dovrebbe mostrare in realtà ciò che l'uscita è stata che lo confuse. Sei sicuro che stai cercando nel log degli errori così come il log di accesso?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top