2008-09-29 6 views
10

Ich versuche, mit dem Schreiben einiger Ruby on Rails-Apps zu beginnen, und war erfolgreich mit Mongrel, aber möchte ich meine Apps unter Windows auf meiner Apache 2.2-Instanz bereitstellen? Alle Tutorials, die ich gefunden habe, scheinen veraltet zu sein und sind für ältere Versionen von Apache/Rails.Wie konfiguriere ich Apache 2.2 für Ruby on Rails in Windows?

Kennt jemand eine gute, aktuelle Anleitung zum Konfigurieren von Apache 2.2 für Ruby on Rails-Anwendungen?

+0

möglich Duplikat von [Wie Ruby on Rails installieren neben WampServer?] (Http://stackoverflow.com/questions/2025449/how-to-install-ruby-on-rails-alongside-wampserver) –

Antwort

13

EDIT: Zumindest bis es einen Phusion Passagier für Win, Apache + Mongrel ist der Weg zu gehen. Sie können Apache + FastCGI ohne Mongrel verwenden, aber unter realen Lasten erhalten Sie (mehr) Zombie-Prozesse und (mehr) Speicherlecks.

Sie können sich auch auf Thin auf die gleiche Weise wie in der folgenden Beschreibung Proxying betrachten. Allerdings hatte ich einige Instabilitäten mit Thin on Win, obwohl es deutlich schneller ist. AB (Apache Benchmark) ist dein Freund hier!

Die Konfiguration von Apache + Mongrel unter Windows unterscheidet sich nicht wesentlich von * nix.

Im Wesentlichen müssen Sie Anfragen, die in Apache eingehen, an Mongrel weiterleiten. Was dies läuft darauf hinaus, ist so etwas wie folgt aus:

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> 

Haften Sie diesen in Ihre httpd.conf (oder httpd-vhost.conf, wenn Sie es sind inklusive).

Es wird davon ausgegangen, dass Sie Mongrel auf Port 3000 ausführen möchten, Ihr Rails-Stamm befindet sich in C:\web\myapp, und Sie erhalten Zugriff auf die App unter www.myapp.com.

Um die Rails-Anwendung im Produktionsmodus laufen:

mongrel_rails start -p 3000 -e production 

und gehen Sie weg (eigentlich nicht reinrassig standardmäßig auf Port 3000 so könnten Sie -p 3000 überspringen, wenn Sie möchten).

Der Hauptunterschied besteht darin, dass Sie Mongrel unter Windows nicht dämonisieren können (d. H. Es im Hintergrund laufen lassen). Stattdessen können Sie es als Service mit dem mongrel_service Juwel installieren.

Auch das Ausführen eines Clusters ist komplizierter und Sie können Capistrano nicht verwenden. Lassen Sie es mich wissen, wenn Sie mehr Informationen wünschen.

+0

Werden Ruby on Rails-Apps normalerweise auf Apache bereitgestellt? Ich dachte, dass es weggehen würde, um sie direkt zu Apache zu bringen, ohne Mongrel zu benötigen. – Owen

+0

Ich denke, es ist absolut der Weg - zumindest bis es einen Phusion Passenger for Win gibt. Sie können Apache + FastCGI ohne Mongrel verwenden, aber unter realen Lasten erhalten Sie (mehr) Zombie-Prozesse und (mehr) Speicherlecks. –

+0

Sie können auch auf Thin (http://code.macournoyer.com/thin/) auf die gleiche Weise Proxying betreiben. Allerdings hatte ich einige Instabilitäten mit Thin on Win, obwohl es deutlich schneller ist. AB (Apache Benchmark) ist dein Freund hier! –

3

Ich bin neu in RoR und wurden auf Windows Server 2008 dasselbe versucht, hier sind einige zusätzliche Hinweise zu bekommen Mischlings als Dienst gehen:

wenn Sie Kompilierungsfehlern erhalten, wenn mongrel_service Installation:

gem install mongrel_service 

versuchen, eine binäre anstelle durch Angabe Ihrer Plattform:

gem install mongrel_service --platform x86-mswin32 

Zusätzlich zu installieren tatsächlich den Dienst, den Sie benötigen r un dieser Befehl in der App-Verzeichnis RoR:

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

(oder zu entfernen:

mongrel_rails service::remove --name MyApp 

)

Dann sollten Sie in der Lage sein, die App "MyApp" in Ihrem Fenster zu starten/stoppen Service-Steuerfeld.

Hoffe, dass jemand hilft.

2

Im Moment funktioniert Mongrel nicht richtig mit Ruby 1.9 und wird einen "msvcrt-ruby18.dll nicht gefunden" Fehler beim Ausführen des Befehls mongrel_rails werfen.

Thin scheint in diesem Fall die einzige Option für jetzt zu sein.

+1

Mongrel 1.2.0.pre2 scheint gut mit Ruby 1.9 zu funktionieren. Installieren über: 'gem install mongrel --prelease' – gerard