Ich habe eine Reihe von Rails-Apps, die unter Snow Leopard hervorragend funktionieren, würde diese jedoch gerne auf Lion migrieren.
Wie vielen anderen wurde mir jedoch durch die Änderungen, die mit Lion an der Mac OS X Server-Verwaltung vorgenommen wurden, der Boden unter den Füßen weggezogen.
Trotzdem war es einfach, Rails zu installieren und meine Rails-App über den WEBrick-Webserver zum Antworten zu bringen.
Ich möchte jetzt Passenger (oder Äquivalent) zum Laufen bringen und Apache als Webserver verwenden, mit automatisch gestarteten Rails-Apps und der damit verbundenen Güte.
Die an Lion vorgenommenen Änderungen scheinen jedoch Passenger zu beschädigen, da dies auf benannte virtuelle Hosts angewiesen ist, um Aufrufe zu erkennen und die Rails-Apps unter Apache zu starten. Ich habe versucht, die in Apples Support-Hinweis für benannte Hosts von Apple beschriebene Methode zu verwenden, - aber ich hatte keine Freude :-/
Es scheint, dass ich möglicherweise in den sauren Apfel beißen und den neuen Lion Server-Web-App-Konfigurationsmechanismus verwenden muss, um Rails-Abhängigkeiten anzugeben und die Rails-Apps auf diese Weise zu starten.
Hat jemand Erfolg damit gehabt, Lion Server so zu konfigurieren, dass Rails Apps über Apache bereitgestellt werden?
Alle Hinweise und Tipps wären willkommen.
Übrigens verwende ich einen neuen Mac mini, also ist dies eine Neuinstallation von Lion, und eine Rückkehr zu SL ist keine Option :-/
Ich habe einige Experimente durchgeführt, um meine eigene Frage zu beantworten ...
Erstens habe ich nur den virtuellen benannten Host kludge mit Passenger zum Laufen gebracht, nicht das neue Lion-Schema, aber hey, es ist ein Anfang ...
Folgen Sie zunächst dem temporären Apple-Fix, wie in der Frage verlinkt.
Dann funktioniert Folgendes für mich, um zwei virtuelle benannte Hosts zu unterstützen, die mit Passenger und Rails implementiert werden. Ich habe dies abgeleitet, indem ich das Beispiel des virtuellen Lion-Hosts genommen und in meiner Snow Leopard-Konfiguration zusammengeführt habe.
Haftungsausschluss Dies funktioniert, muss aber verbessert werden. Ich habe SSL noch nicht zum Laufen gebracht.
Fügen Sie Folgendes in einer Datei mit dem Namen 0000_any_80_.conf hinzu
## Example Virtual Host Configuration
<VirtualHost *:80>
ServerName bongle.example.com
ServerAlias bungle.example.com
ServerAdmin bongle@example.com
RackEnv bongle_production
RailsEnv bongle_production
DocumentRoot "/Users/Nigel/Rails/bungle/public"
CustomLog "/var/log/apache2/access_log" combinedvhost
ErrorLog "/var/log/apache2/error_log"
<IfModule mod_ssl.c>
SSLEngine Off
SSLCipherSuite "ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM"
SSLProtocol -ALL +SSLv3 +TLSv1
SSLProxyEngine On
SSLProxyProtocol -ALL +SSLv3 +TLSv1
</IfModule>
<Directory "/Users/Nigel/Rails/bungle/public">
Options All +MultiViews -ExecCGI -Indexes
AllowOverride None
<IfModule mod_dav.c>
DAV Off
</IfModule>
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName burble.anothersite.com
ServerAlias www.anothersite.com
ServerAdmin bongle@anothersite.com
RackEnv burble_production
RailsEnv burble_production
DocumentRoot "/Users/Nigel/Rails/burble/public"
CustomLog "/var/log/apache2/access_log" combinedvhost
ErrorLog "/var/log/apache2/error_log"
<IfModule mod_ssl.c>
SSLEngine Off
SSLCipherSuite "ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM"
SSLProtocol -ALL +SSLv3 +TLSv1
SSLProxyEngine On
SSLProxyProtocol -ALL +SSLv3 +TLSv1
</IfModule>
<Directory "/Users/Nigel/Rails/school/public">
Options All +MultiViews -ExecCGI -Indexes
AllowOverride None
<IfModule mod_dav.c>
DAV Off
</IfModule>
</Directory>
</VirtualHost>
Zusätzliche Beiträge zur Verbesserung sind willkommen.