2008-09-29 14 views
10

Sto provando a iniziare a scrivere alcune app di Ruby on Rails e ho avuto successo con Mongrel ma, mi piacerebbe distribuire le mie app alla mia istanza di Apache 2.2 su Windows? Tutte le esercitazioni che ho trovato sembrano obsolete e riguardano versioni precedenti di Apache/Rails.Come configurare Apache 2.2 per Ruby on Rails in Windows?

Qualcuno sa di un buon tutorial in corso per configurare Apache 2.2 per le app Ruby on Rails?

+0

possibile duplicato di [Come installare Ruby on Rails accanto WampServer?] (Http://stackoverflow.com/questions/2025449/how-to-install-ruby-on-rails-alongside-wampserver) –

risposta

13

MODIFICA: Almeno fino a quando non c'è un Phusion Passenger per Win, Apache + Mongrel è la strada da percorrere. Puoi usare Apache + FastCGI senza Mongrel, ma con carichi reali otterrai (più) processi di zombi e (più) perdite di memoria.

Si potrebbe anche guardare il proxy a Thin nello stesso modo come descritto di seguito. Tuttavia, ho avuto alcune instabilità con Thin on Win, anche se è sensibilmente più veloce. AB (Apache Benchmark) è tuo amico qui!

La configurazione di Apache + Mongrel su Windows non è significativamente diversa da * nix.

In sostanza, è necessario inoltrare richieste di autorizzazione in Apache a Mongrel. Che questo si riduce a è qualcosa di simile:

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
<VirtualHost localhost:80> 
    ServerName www.myapp.comm 
    DocumentRoot "C:/web/myapp/public" 
    ProxyPass/http://www.myapp.com:3000/ 
    ProxyPassReverse/http://www.myapp.com:3000/ 
    ProxyPreserveHost On 
</VirtualHost> 

Stick questo nel vostro httpd.conf (o httpd-vhost.conf se si sta comprende).

Si presuppone che si eseguirà mongrel sulla porta 3000, la radice di Rails è in C:\web\myapp e si accede all'app su www.myapp.com.

per eseguire l'applicazione in modalità di produzione rotaie:

mongrel_rails start -p 3000 -e production 

e si va via (in realtà default bastardi alla porta 3000 così da poter saltare -p 3000 se si desidera).

La differenza principale è che non è possibile eseguire il daemonize mongrel su Windows (ad esempio eseguirlo in background). Invece puoi installarlo come servizio usando la gemma mongrel_service.

Inoltre, l'esecuzione di un cluster è più complicata e non sarà possibile utilizzare Capistrano. Fammi sapere se vuoi maggiori informazioni.

+0

È così che le app di Ruby on Rails vengono normalmente distribuite su Apache? Pensavo che ci sarebbe stato via per distribuirli direttamente ad Apache senza aver bisogno di Mongrel. – Owen

+0

Penso che sia assolutamente il modo - almeno finché non ci sarà un Phusion Passenger for Win. Puoi usare Apache + FastCGI senza Mongrel, ma con carichi reali otterrai (più) processi di zombi e (più) perdite di memoria. –

+0

Si potrebbe anche guardare a proxy su Thin (http://code.macournoyer.com/thin/) allo stesso modo. Tuttavia, ho avuto alcune instabilità con Thin on Win, anche se è sensibilmente più veloce. AB (benchmark Apache) è tuo amico qui! –

3

Sono nuovo di RoR e hanno tentato la stessa cosa su Windows Server 2008, ecco alcune note aggiuntive su come ottenere bastardino andando come un servizio:

se si ottiene errori di compilazione durante l'installazione di mongrel_service:

gem install mongrel_service 

provare a utilizzare un binario anziché specificando la vostra piattaforma:

gem install mongrel_service --platform x86-mswin32 

Inoltre, per installare in realtà il servizio è necessario r un questo comando nella directory app di RoR:

mongrel_rails service::install --name MyApp -e production -p 3001 -a 0.0.0.0 

(o rimuovere:

mongrel_rails service::remove --name MyApp 

)

allora si dovrebbe essere in grado di avviare/fermare l'app "MyApp" nelle finestre pannello di controllo dei servizi.

La speranza che aiuta qualcuno.

2

Al momento Mongrel non funziona correttamente con Ruby 1.9 e genera un errore "msvcrt-ruby18.dll non trovato" durante l'esecuzione del comando mongrel_rails.

Sottile in questo caso sembra essere l'unica opzione per ora.

+1

Mongrel 1.2.0.pre2 sembra funzionare bene con Ruby 1.9. Installa tramite: 'gem install mongrel --prerelease' – gerard