2016-01-19 26 views
5

L'app Dancer non funziona con combinazione uWSGI (2.0.7) + Apache (2.4.10) mentre viene eseguita liberamente in altri ambienti (uWSGI + nginx, Starman + Apache, proprio server di sviluppo di Dancer). Non trovo nei log alcuna informazione significativa. Così ho fatto semplice applicazione test comePerché l'app Dancer fallisce sotto uWSGI + Apache?

$ dancer -a tset 

Poi copiato predefinita production.yml in uwsgi.yml, legato bin/app.pl in bin/app.psgi creato tset.ini come questo:

[uwsgi]                                            
plugins = psgi                                          
socket = 127.0.0.1:3033                                       
uid  = www                                          
gid  = www-data                                         
chdir  = /home/www/apps/tset/bin/                                     
psgi  = app.psgi                                         
processes = 1                                          
master = true 

reso questo ini disponibile per uWsgi in /etc/uwsgi/apps-available, legata in /etc/uwsgi/apps-enabled .

Riavviato uwsgi servizio.

Poi per modulo di Apache (2.4.10) mod-proxy-uwsgi aggiunto poche righe nel mio conf virtualhost:

ProxyPass /adm/y uwsgi://127.0.0.1:3033/ 

Questo sembra il punto più fragile, perché mi sento come ho bisogno di impostare uWSGIModifier1 5 qui, ma non ho capito dove e come?

Apache riavviato e ricevuto "Errore interno server". Nel registro uwsgi vedo solo:

Tue Jan 19 02:10:36 2016 - spawned uWSGI worker 1 (pid: 21712, cores: 1) 
Tue Jan 19 02:10:56 2016 - -- unavailable modifier requested: 0 -- 
Tue Jan 19 02:24:44 2016 - -- unavailable modifier requested: 0 -- 
Tue Jan 19 02:27:14 2016 - -- unavailable modifier requested: 0 -- 
Tue Jan 19 02:27:17 2016 - -- unavailable modifier requested: 0 -- 

Che cos'è questo "modificatore non disponibile richiesto"?

In error.log Apache è nessuna voce, in access.log sono voci, ma nessuna altra informazione di stato di 500.

Tale comportamento è riproducibile con passaggi di cui sopra, quindi spero capire, ciò che è sbagliato in questa combinazione?

risposta

3

Mi sento come se avessi bisogno di impostare uWSGIModifier1 5 qui ma non ho capito dove e come?

Sì, hai ragione. È necessario impostare modifier1 a 5, ma uwsgi docs dice a proposito mod_proxy_uwsgi:

Attualmente il modulo non ha la possibilità di impostare i modificatori, anche se questo sarà risolto al più presto.

Ciò significa, non è possibile passare il modificatore per esempio uWSGI utilizzando questo metodo (uWSGI utilizzerà modificatore 0 se non in dotazione)

Per risolvere questo problema, si può passare a mod_uwsgi o modificare modificatore su cui PSGI viene caricato, utilizzando:

plugins = 0:psgi 

anziché

plugins = psgi 
+0

Purtroppo per il ritardo. Questo è stato un buon suggerimento e dopo essermi trasferito allo '0: psgi' ho un piccolo progresso. Nel registro uwsgi ora '--- impossibile trovare l'applicazione perl ---' e un'altra riga disordinata '[pid: 5757 | app: -1 | req: -1/1] 212.7.22.161() {66 vars nel 1511 bytes} [Sat Jan 23 00:07:15 2016] GET/adm/z/=> ha generato 21 byte in 0 msecs (HTTP/1.1 500) 2 intestazioni in 83 byte (0 passa al core 0) 'Qui vedo che la risposta è 21 byte, qual è la lunghezza di" Errore interno del server ". Hai qualche suggerimento in più, perché l'app Perl non è stata trovata sotto Apache qui? –

+0

Abbiamo scoperto che www-data usesr non aveva lo stesso '@ INC', ecco perché l'app Perl non è stata trovata. Quindi ho eseguito uwsgi anche con Apache2. Grazie! –