Passenger e debian linux

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.
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 c’e’ stato un
aggiornamento di passenger e ci sono dei problemi con versioni di
altri pacchetti.

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:

2009/7/5 Andrea P. [email protected]:

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?

2009/7/5 Andrea P. [email protected]:

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?

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), ho inserito un dominio di terzo livello tipo
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 =)

2009/7/6 Andrea P. [email protected]:

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.
Se imposto .example.com che punta alla mia macchina, tutte le macchine
della intranet, avendo come dominio 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,
http://www.modrails.com/documentation/Users%20guide.html#deploying_rails_to_sub_uri.

Il giorno 05 Luglio 2009 23.36, Mauro [email protected] ha scritto:

2009/7/5 Andrea P. [email protected]:

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
(http://www.pluto.it/files/ildp/HOWTO/DNS-HOWTO/DNS-HOWTO.html)

Ciao,
A.

2009/7/7 Andrea P. [email protected]:

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, 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.

Mauro ha scritto:

Il dominio della intranet supponiamo che sia example.com.
Se imposto .example.com che punta alla mia macchina, tutte le macchine
della intranet, avendo come dominio 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, come esempio potresti avere
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). anche di 4°
(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,
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, 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.

Il giorno 08 Luglio 2009 12.38, Mauro [email protected] 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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs