Ruby Forum Italian Ruby user group > Errori in production environment

Posted by Sam Pei (sampei)
on 05.05.2008 21:21
Salve a tutti.

Ho portato un'applicazione sotto il production envionment. Questo è dato
da un server apache2+mongrel sotto cui gira la mia applicazione rails.

Tutto funziona bene, ma stranamente gli errori generati da rails
continuano ad avere tutti i dati del debug.

Il file di configurazione sotto mongrel_cluster porta environment:
production, ed infatti l'applicazione va sul DB di produzione.

Da cosa puo' dipendere?

Grazie a tutti
Posted by Paolo Montrasio (pmontrasio)
on 06.05.2008 15:03
Non è che in config/environments/production.rb hai una linea questa?

config.log_level = :debug

Dovrebbe stare a :info, oppure essere commentata.

Paolo

Sam Pei wrote:
> Salve a tutti.
> 
> Ho portato un'applicazione sotto il production envionment. Questo è dato
> da un server apache2+mongrel sotto cui gira la mia applicazione rails.
> 
> Tutto funziona bene, ma stranamente gli errori generati da rails
> continuano ad avere tutti i dati del debug.
> 
> Il file di configurazione sotto mongrel_cluster porta environment:
> production, ed infatti l'applicazione va sul DB di produzione.
> 
> Da cosa puo' dipendere?
> 
> Grazie a tutti
Posted by Sam Pei (sampei)
on 06.05.2008 17:40
Paolo Montrasio wrote:
> Non è che in config/environments/production.rb hai una linea questa?
> 
> config.log_level = :debug

No, il mio file production.rb ha solo tre linee non commentate:

config.cache_classes = true
config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching             = true

Suppongo che il problema sia relativo all'istanza di mongrel che gira 
sotto apache2.

Infatti se faccio

ruby script/server -e production

tutto va ok, gli errori non hanno piu' i dati del debug.

Grazie a tutti
Posted by giovanni lion (Guest)
on 07.05.2008 12:11
(Received via mailing list)
> Suppongo che il problema sia relativo all'istanza di mongrel che gira
> sotto apache2.


Stai usando RewriteProxy?

Se fai partire mongrel (solo mongrel_rails -e production) non in cluster 
fa
lo stesso problma?
Posted by Sam Pei (sampei)
on 07.05.2008 16:08
giovanni lion wrote:
> Stai usando RewriteProxy?
No

> Se fai partire mongrel (solo mongrel_rails -e production) non in cluster 
> fa
> lo stesso problma?

No, se lancio il comando

mongrel_rails start -e production

va tutto ok.

Il problema sembra proprio essere il mongrel cluster, ma non riesco 
proprio a capire dove sbaglio.

Grazie di tutto!
Posted by giovanni lion (Guest)
on 07.05.2008 16:47
(Received via mailing list)
giovanni lion wrote:
> > Stai usando RewriteProxy?
> No
>

Puoi postare la tua configurazione di apache?



> Il problema sembra proprio essere il mongrel cluster, ma non riesco
> proprio a capire dove sbaglio.


Il cluster senza passare per apache fa sempre vedere gli errori vero?

Leggendo 
http://api.rubyonrails.com/classes/ActionController/Rescue.html,
potrebbe essere il fatto che per mongrel le richieste sono locali perchè 
vengono da apache e se guardi nel sorgente di rescue_action:

  if consider_all_requests_local || local_request?
    rescue_action_locally(exception)
  else
    rescue_action_in_public(exception)
  end

Prova barbaramente a ridefinire local_request? del modulo
ActionController::Rescue facendogli tornare sempre false.

Mah...
Posted by giovanni lion (Guest)
on 07.05.2008 16:54
(Received via mailing list)
Ho appena provato. In production environment se richiedi localhost:3000 
ti
fa vedere il debug, se richiedi [tuoip]:3000, non te lo fa vedere, 
quindi è 
proprio questo.

2008/5/7 giovanni lion <giovanni.lion@gmail.com>:
Posted by Sam Pei (sampei)
on 07.05.2008 17:48
giovanni lion wrote:
> Ho appena provato. In production environment se richiedi localhost:3000 
> ti
> fa vedere il debug, se richiedi [tuoip]:3000, non te lo fa vedere, 
> quindi e'
proprio questo.

Grazie, il problema era proprio questo!

Ho risolto cambiando la configurazione di apache e mettendo come proxy

[mioip]:porta

invece di

127.0.0.1:porta

e lo stesso [mioip] l'ho messo nel file di configurazione del mongrel 
cluster.

Adesso tutte le richieste (anche quelle fatte a localhost) sono viste 
come remote e quindi non da mai il debug.

Ciao e grazie.
Posted by Sam Pei (sampei)
on 07.05.2008 18:08
Sam Pei wrote:
> Grazie, il problema era proprio questo!

Ehmm, piccola divagazione sul tema...

A questo punto mi sono accorto che se da rails faccio una cosa come:

request.env["REMOTE_ADDR"]

restituisce sempre il mio ip, non quello del PC che si sta collegando al 
sito web!

Penso dipenda dal fatto che è sempre il server apache che si collega al 
server mongrel e quindi dal punto di vista di rails l'indirizzo ip è 
sempre quello del mio server.

Mi sa anche che non dipende dal fatto che ho messo [mioip], avrebbe dato 
lo stesso output anche con 127.0.0.1

Penso ci debba essere qualche direttiva apache per mandare al proxy 
mongrel anche l'ip della richiesta originaria, o qualcosa del genere...

Grazie a tutti.
Posted by Paolo Montrasio (pmontrasio)
on 08.05.2008 23:00
Puoi risalire all'IP del browser con request.env["HTTP_X_FORWARDED_FOR"] 
o almeno, così funziona con la mia combinazione apache2/mongrel.

Ciao
Paolo

Sam Pei wrote:
> Sam Pei wrote:
>> Grazie, il problema era proprio questo!
> 
> Ehmm, piccola divagazione sul tema...
> 
> A questo punto mi sono accorto che se da rails faccio una cosa come:
> 
> request.env["REMOTE_ADDR"]
> 
> restituisce sempre il mio ip, non quello del PC che si sta collegando al 
> sito web!
> 
> Penso dipenda dal fatto che è sempre il server apache che si collega al 
> server mongrel e quindi dal punto di vista di rails l'indirizzo ip è 
> sempre quello del mio server.
> 
> Mi sa anche che non dipende dal fatto che ho messo [mioip], avrebbe dato 
> lo stesso output anche con 127.0.0.1
> 
> Penso ci debba essere qualche direttiva apache per mandare al proxy 
> mongrel anche l'ip della richiesta originaria, o qualcosa del genere...
> 
> Grazie a tutti.