# Passenger e debian linux

**URL:** <https://www.ruby-forum.com/t/passenger-e-debian-linux/171546>\
**Category:** IT\
**Created:** [July 4, 2009, 8:47pm UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546 "2009-07-04T20:47:26Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 4, 2009, 8:47pm UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546/1 "2009-07-04T20:47:26Z")

</div>

Per i linuxiani se qualcuno e’ presente e in particolare per i  
debianisti.  
Il pacchetto deb di passenger e’ reso disponibile su  
[http://debian.tryphon.org](http://debian.tryphon.org).  
So che si puo’ anche installare come gemma, viene creato il modulo per  
apache e viene installato automaticamente se non sbaglio.  
Quale dei due metodi e’ preferibile?  
Lo chiedo perche’ da poco su [http://debian.tryphon.org](http://debian.tryphon.org) c’e’ stato un  
aggiornamento di passenger e ci sono dei problemi con versioni di  
altri pacchetti.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 5, 2009, 12:08pm UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546/2 "2009-07-05T12:08:37Z")

</div>

Su una ubuntu (quindi debian…) ho preferito usare la gemma che ha  
compilato ed installato passenger in pochi minuti, senza problemi =)

Mini howto (richiede privilegi amministrativi):

1. installato apache con le librerie di sviluppo:  
aptitude install apache2-mpm-prefork apache2-prefork-dev

2. installato Passenger da gemma:  
gem install passenger  
passenger-install-apache2-module

3. creato un conf per il modulo di apache in  
/etc/apache2/mods-available/phusion\_passenger.conf (il nome del file è a  
tua discrezione) con il seguente contenuto:

LoadModule passenger\_module  
/usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod\_passenger.so  
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2  
PassengerRuby /usr/bin/ruby1.8

attenzione soprattutto alle versioni installate (ed in caso ai percorsi  
usati), nel tuo caso potrebbero essere differenti

1. attivo il modulo (io non uso a2enmod, lo faccio a manina…):  
cd /etc/apache2/mods-enabled/  
ln -s …/mods-available/phusion-passenger.conf .

2. creo un profilo per un nuovo sito (compreso virtualhost) in  
/etc/apache2/sites-available/rails (nome a scelta…):  
\<VirtualHost \*:80\>  
ServerName devrails  
DocumentRoot /home/andrea/workspace/ucms/public  

se devi testare più siti rails, o se usi anche altre tecnologie come  
PHP, ti conviene usare i virtualhosts di apache, nel mio caso ho usato  
il nome “devrails”, quindi l’ho specificato in /etc/hosts con questa  
riga:  
127.0.0.1 devrails

la DocumentRoot deve puntare alla directory ‘public’ della tua app rails

1. inserisco il nuovo sito tra quelli attivati e riavvio apache:  
cd /etc/apache2/sites-enabled/  
ln -s …/sites-available/rails ./000-rails  
/etc/init.d/apache2 restart

ogni volta che vuoi aggiungere un nuovo sito, ripeti i passi 5) e 6)

ciao e buona giornata =)  
A.

Mauro ha scritto:

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 5, 2009, 5:14pm UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546/3 "2009-07-05T17:14:06Z")

</div>

2009/7/5 Andrea P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> passenger-install-apache2-module  
> attenzione soprattutto alle versioni installate (ed in caso ai percorsi  
> DocumentRoot /home/andrea/workspace/ucms/public  
> cd /etc/apache2/sites-enabled/  
> ln -s ../sites-available/rails ./000-rails  
> /etc/init.d/apache2 restart
> 
> ogni volta che vuoi aggiungere un nuovo sito, ripeti i passi 5) e 6)

Grazie mille per la risposta veramente esaustiva.  
Posso qualche domanda?  
Perche’ preferisci la gemma visto che anche per ubuntu esiste, ed e’  
sempre aggiornato, il pacchetto deb?  
Per quanto riguarda l’uso dei virtual hosts per ospitare piu’  
applicazioni rails sulla stessa macchina ho sempre avuto dei dubbi.  
Mi pare di capire che ad ogni applicazione andrebbe associato un virtual  
host.  
Oltre che aggiornare il file /etc/hosts andrebbe aggiornato anche il dns  
giusto?  
Cioe’, se l’applicazione A e’ associata al virtual host appA e  
l’applicazione B a appB, affinche’ l’utente possa collegarsi al  
virtual host appA per utilizzare l’applicazione A bisogna che appA sia  
configurato nel dns o sbaglio?

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 5, 2009, 11:37pm UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546/4 "2009-07-05T23:37:25Z")

</div>

2009/7/5 Andrea P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> il DNS occorre _solo_ se questo discorso lo stai applicando ad un  
> server affacciato su internet, con un IP statico, etc… altrimenti puoi  
> fare qualcosa di più leggero sfruttando un servizio di dns-dinamico,  
> come ho fatto io. infine se devi lavorare solo da un pc basta smanettare  
> su /etc/hosts =)
> 
> tieni presente che il servizio DNS è solo un sistema che svolge la  
> stessa funzione di /etc/hosts in modo… _più avanzato_ =)

Le applicazioni sono per una intranet quindi agli utenti devo dare una  
URL per raggiungere l’host e utilizzare le applicazioni, devo per  
forza, se non sbaglio andare a maneggiare il dns e siccome non lo  
gestisco io in prima persona mi viene complicato chiedere di dover  
aggiungere n entry per n applicazioni.  
Ma passenger non ha un’opzione del tipo SUB URI o qualcosa del genere?

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 5, 2009, 6:16pm UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546/5 "2009-07-05T18:16:02Z")

</div>

Mauro ha scritto:

> Perche’ preferisci la gemma visto che anche per ubuntu esiste, ed e’  
> sempre aggiornato, il pacchetto deb?

diciamo che per non avere troppi problemi, ho preferito usare i deb solo  
per la parte _interprete ruby_, per tutto il resto ho installato le  
gemme separatamente.  
non amo installare pacchetti senza averne il controllo anche per la  
rimozione, ma i package managers non riescono a star dietro ai  
repository dei linguaggi interpretati come perl o ruby, quindi  
preferisco un ibrido che funziona comunque come mi aspetto =)

con un po’ di pazienza, se un giorno volessi rimuovere qualcosa a mano,  
so dove andare a raccattare le gemme =P

> Per quanto riguarda l’uso dei virtual hosts per ospitare piu’  
> applicazioni rails sulla stessa macchina ho sempre avuto dei dubbi.  
> Mi pare di capire che ad ogni applicazione andrebbe associato un virtual host.

esatto, i virtual host ti permettono (tra le varie cose) di specificare  
una DocumentRoot relativa ad un nome di host. per esempio potrebbe  
ospitare 3 apps con 3 virtual host tipo: app1, app2, app3. a quel punto  
è sufficiente che il browser possa raggiungere il web server utilizzando  
quei nomi host ed apache saprà a chi girare le richieste =)

> Oltre che aggiornare il file /etc/hosts andrebbe aggiornato anche il dns giusto?

se parliamo di un ambiente di test _domestico_, è sufficiente una entry  
nel /etc/hosts, chiaramente se stiamo parlando di ambiente _pubblico_ in  
quel caso serve anche un DNS.  
se può interessarti, mi sono registrato su un servizio di freedns  
([http://afraid.org](http://afraid.org)), ho inserito un dominio di terzo livello tipo  
[railsdev.mooo.com](http://railsdev.mooo.com), poi nel virtualhost ho messo lo stesso indirizzo. in  
questo modo sono raggiungibile dall’esterno e apache risponde con la mia  
app rails. è molto utile per mostrare qualche demo o lavorare fuori casa  
=)

> Cioe’, se l’applicazione A e’ associata al virtual host appA e  
> l’applicazione B a appB, affinche’ l’utente possa collegarsi al  
> virtual host appA per utilizzare l’applicazione A bisogna che appA sia  
> configurato nel dns o sbaglio?  
> apache analizza solo la richiesta in ingresso, poi la _gira_  
> all’applicazione preposta. l’applicazione non ha nulla a che fare con il  
> DNS, perchè quest’ultimo serve solo a risolvere nomi in indirizzi.

Esempio: se ci sono 2 macchine A e B, diciamo che su A impostiamo  
/etc/hosts per puntare ‘pippo’ con l’indirizzo di B. Vuol dire che da A  
puoi raggiungere B usando ‘pippo’ al posto del suo IP.  
B finora non ha configurato nulla, ma potresti impostare un virtualhost  
sul suo Apache per rispondere alle richieste indirizzate a ‘pippo’ =)

il DNS occorre _solo_ se questo discorso lo stai applicando ad un  
server affacciato su internet, con un IP statico, etc… altrimenti puoi  
fare qualcosa di più leggero sfruttando un servizio di dns-dinamico,  
come ho fatto io. infine se devi lavorare solo da un pc basta smanettare  
su /etc/hosts =)

tieni presente che il servizio DNS è solo un sistema che svolge la  
stessa funzione di /etc/hosts in modo… _più avanzato_ =)

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 7, 2009, 8:09pm UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546/6 "2009-07-07T20:09:58Z")

</div>

2009/7/6 Andrea P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> se la macchina è una sola, puoi impostare la entry del DNS come _catch all_,  
> per esempio imposti un dominio tipo mydevmachine.lan (o comunque qualcosa  
> riferito al dominio della intranet) e imposti che .mydevmachine.lan punta  
> comunque a quella macchina.

Il dominio della intranet supponiamo che sia [example.com](http://example.com).  
Se imposto .example.com che punta alla mia macchina, tutte le macchine  
della intranet, avendo come dominio [example.com](http://example.com) punteranno al mio ip.  
Sicuramente mi sfugge ancora qualcosa.

> Passenger in questo caso non c’entra, è solo un wrapper per far gestire le  
> app ruby da apache, qualcosa di molto simile agli altri moduli come mod\_php  
> o mod\_perl =)

Si lo so che passenger e’ solo il modulo di apache per gestire  
applicazioni rails ma ha un’opzione che, se non ho capito male,  
permette la gestione di piu’ applicazioni tutte su uno stesso virtual  
host,  
[Phusion Passenger users guide index](http://www.modrails.com/documentation/Users%20guide.html#deploying_rails_to_sub_uri).

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 6, 2009, 10:07am UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546/7 "2009-07-06T10:07:09Z")

</div>

Il giorno 05 Luglio 2009 23.36, Mauro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> 2009/7/5 Andrea P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> Le applicazioni sono per una intranet quindi agli utenti devo dare una  
> URL per raggiungere l’host e utilizzare le applicazioni, devo per  
> forza, se non sbaglio andare a maneggiare il dns e siccome non lo  
> gestisco io in prima persona mi viene complicato chiedere di dover  
> aggiungere n entry per n applicazioni.

se la macchina è una sola, puoi impostare la entry del DNS come _catch  
all_,  
per esempio imposti un dominio tipo mydevmachine.lan (o comunque  
qualcosa  
riferito al dominio della intranet) e imposti che .mydevmachine.lan  
punta  
comunque a quella macchina.

sul server configuri i virtualhost di apache con qualcosa tipo  
app1.mydevmachine.lan, app2…, app3, … appN

il DNS punterà le varie richieste sullo stesso IP, poi al resto ci pensa  
apache =)

> Ma passenger non ha un’opzione del tipo SUB URI o qualcosa del genere?

Passenger in questo caso non c’entra, è solo un wrapper per far gestire le  
app ruby da apache, qualcosa di molto simile agli altri moduli come  
mod\_php  
o mod\_perl =)

ora non conosco la situazione della tua azienda, ma di norma le  
operazioni  
sistemistiche non sono mai ben accette (a meno che siano  
inevitabili…). se  
il sysadmin della tua intranet è abbastanza gentile e disponibile, non gli  
costa nulla farti questa modifica =)

se poi vuoi approfondire o chiarire l’argomento DNS, ti consiglio di  
leggere  
il DNS HowTo  
([DNS HOWTO](http://www.pluto.it/files/ildp/HOWTO/DNS-HOWTO/DNS-HOWTO.html))

Ciao,  
A.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 8, 2009, 12:39pm UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546/8 "2009-07-08T12:39:33Z")

</div>

2009/7/7 Andrea P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > Si lo so che passenger e’ solo il modulo di apache per gestire  
> > applicazioni rails ma ha un’opzione che, se non ho capito male,  
> > permette la gestione di piu’ applicazioni tutte su uno stesso virtual  
> > host, [Phusion Passenger users guide index](http://www.modrails.com/documentation/Users%20guide.html#deploying_rails_to_sub_uri).  
> > di questo non saprei =P comunque mi informo, grazie per il link intanto =)

Bene, fammi sapere se l’utilizzo di questa opzione possa essere utile  
per poter utilizzare diverse app su uno stesso vhost anziche’  
intervenire sul dns.  
Tempo fa ci avevo frugato un po ma non ero riuscito a farlo  
funzionare, se non sbaglio bisogna aggiungere qualcosa  
nell’environment.rb di ogni app rails.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 7, 2009, 8:31pm UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546/9 "2009-07-07T20:31:36Z")

</div>

Mauro ha scritto:

> Il dominio della intranet supponiamo che sia [example.com](http://example.com).  
> Se imposto .example.com che punta alla mia macchina, tutte le macchine  
> della intranet, avendo come dominio [example.com](http://example.com) punteranno al mio ip.  
> Sicuramente mi sfugge ancora qualcosa.

beh così non funziona =P forse mi sono spiegato male =)

se il dominio intranet è [example.com](http://example.com), come esempio potresti avere  
[rails.example.com](http://rails.example.com) che punta alla tua macchina. fin qui tutto ok. ma il  
DNS funziona a gerarchie, puoi usare i sotto-domini.  
di norma un DNS in intranet aiuta la _reperibilità_ di alcuni  
servizi/macchine nella lan, quindi è del tutto lecito che ci siano  
macchine con domini di 3° livello ([mail.example.com](http://mail.example.com)). anche di 4°  
([macchina1.mail.example.com](http://macchina1.mail.example.com)).

quindi, basta fare il _catch all_ che fa puntare \*.rails.example.com  
alla stessa macchina. a questo punto configuri i virtualhosts di apache  
con diverse DocumentRoot(s).  
riavviato apache, chiunque potrà raggiungere [app1.rails.example.com](http://app1.rails.example.com),  
app2, etc… =)

> Si lo so che passenger e’ solo il modulo di apache per gestire  
> applicazioni rails ma ha un’opzione che, se non ho capito male,  
> permette la gestione di piu’ applicazioni tutte su uno stesso virtual  
> host, [Phusion Passenger users guide index](http://www.modrails.com/documentation/Users%20guide.html#deploying_rails_to_sub_uri).  
> di questo non saprei =P comunque mi informo, grazie per il link intanto  
> =)

ciao,  
A.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [July 8, 2009, 1:29pm UTC](https://www.ruby-forum.com/t/passenger-e-debian-linux/171546/10 "2009-07-08T13:29:49Z")

</div>

Il giorno 08 Luglio 2009 12.38, Mauro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> Bene, fammi sapere se l’utilizzo di questa opzione possa essere utile  
> per poter utilizzare diverse app su uno stesso vhost anziche’  
> intervenire sul dns.  
> Tempo fa ci avevo frugato un po ma non ero riuscito a farlo  
> funzionare, se non sbaglio bisogna aggiungere qualcosa  
> nell’environment.rb di ogni app rails.

ok, ho letto la tua pagina, nulla di _magico_ è tutto scritto lì =)

detto in parole semplici:

- definisci una DocumentRoot _generica_, consiglierei fuori dall’albero  
dell’applicazione (es: /var/rails-public/ anzichè /mia\_app/public/)
- nel path indicato come docroot, crei link simbolici che puntano alla  
‘public’ delle tue applicazioni (seguendo l’esempio di prima: ln -s  
/mia\_app/public /var/rails-public/mia\_app)
- nel configurare il virtualhost, aggiungi N righe come questa (ogni  
riga  
punta ad una app specifica):  
RailsBaseURI /mia\_app

Nella pagina, giustamente, avvisano che questo metodo potrebbe  
danneggiare  
le URI che puntano a files statici della tua app rails, quindi fai  
attenzione e leggi bene la documentazione (consiglia vivamente l’uso  
degli  
helpers di rails ed evitare URI assolute e/o statiche) =)

quanto alle modifiche su environment.rb, almeno per questo topic, non ci  
sono indicazioni.

quanto al DNS, presumo che tu voglia comunque rendere raggiungibile la  
macchina in intranet tramite URL anzichè usando l’IP, quindi una entry nel  
DNS va comunque inserita. =)

ciao,  
A.
