Passenger, als Alternative für script/server
Passenger vereinfacht nicht nur das deployen von Rails-Applikationen auf dem Server (siehe Artikel Passenger: Rails-Hosting leicht gemacht) sondern auch das Ausführen auf dem lokalen Rechner. Immer mehr Rails-Entwickler verwenden Passenger als Alternative für script/server.
Die Verwendung von script/server hat einige Nachteile:
- Nur ein Mongrel-Server (kann bei aufwendigen Apps zu wenig sein)
- um mehrer Rails-Applikationen gleichzeitig zu starten, muss
script/serverunter verschienden Ports gestartet werden (z.B.script/server -p 3001) - kein SSL möglich.
- Geschwindigkeit ist zu langsam, insbesondere beim Start.
Diese Probleme werden mit Passenger gelöst. Da Passenger ein sehr effizientes Prozess-Management besitzt. Daher ist es auch möglich, alle Rails-Projekte gleichzeitig auf dem lokalen Rechner laufen zu lassen. Wird eine Applikation länger nicht aufgerufen, so werden die unnötigen Prozesse beendet.
Installation unter Mac OS X Leopard
Im Folgenden wird gezeigt, wie Passenger unter Mac OS X Leopard installiert wird.
1. sudo gem install passenger
2. sudo passenger-install-apache2-module
/etc/apache2/users/passenger.conf anlegen mit folgendem Inhalt
# Bitte nicht die folgenden 3 Zeilen kopieren, sondern die Befele, die das Installer-Skript aus Schritt 2 ausgegben hat.
LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-1.0.5/ext/apache2/mod_passenger.so
RailsSpawnServer /Library/Ruby/Gems/1.8/gems/passenger-1.0.5/bin/passenger-spawn-server
RailsRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
RailsEnv development
# Im folgenden den Pfad anpassen, indem die eigenen Projekte liegen
<Directory "/Users/hussein/projekte">
Order allow,deny
Allow from all
</Directory>
NameVirtualHost *:80
# Pfade anpassen in dem das Rails-Projekt liegt. Wichtig ist, dass am ende das Verzeichnis @public@ angegeben wird.
<VirtualHost *:80>
DocumentRoot "/Users/hussein/prokte/projekt1/public"
ServerName projekt1.local
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/hussein/prokte/projekt2/public"
ServerName projekt2.local
</VirtualHost>
5. Host-Einträge am ende der Datei /etc/hosts
# nicht die anderen Einträge löschen, sonst kann der Rechner ggf. nicht booten 127.0.0.1 projekt1.local projekt2.local
4. Apache neustarten mit sudo apachectl restart
Aufruf der Rails-Applikationen im Webbrowser
Im Browser kann nun über projekt1.local und projekt2.local auf die Projekte zugefriffen werden.
Neustart der Rails-Applikationen
Um eine Rails-Applikation neuzustarten, einfach den folgenden Befehl ausfürhen:
touch pfad-zur-rails-app/tmp/restart.txt, wie z.B.
touch /Users/hussein/projekte/projekt1/tmp/restart.txt
Alternativ kann man auch den folgenden Rake-Task erstellen:
1. Erstellen im Verzeichnislib/taks innerhalb des Rails-Projekts die Datei
passenger.rake mit folgendem Inhalt:
require 'fileutils'
namespace :passenger do
desc "Restart Application"
task :restart do
FileUtils.touch "#{RAILS_ROOT}/tmp/restart.txt"
end
end
Anschließend kann ein Neustart einfach mit rake passenger:restart durchgeführt werden.
Sorry, comments are closed for this article.