Ich denke, Kyl hat es ziemlich gut zusammengefasst. Aber ich dachte, ich würde Sie genau wissen lassen, was ich seit Schienen beta4 (und jetzt mit RC) verwendet habe. Dieses Setup hat gut für mich gearbeitet:
Rackspace Cloud-Server - Ermöglicht Ihnen die volle Kontrolle über den Server. Sie können die Größe Ihrer Server im laufenden Betrieb ändern. Sie können auch Schnappschüsse machen, wenn Sie Ihre Einrichtung für eine andere Website duplizieren wollen. Es ist billig und meiner Meinung nach besser als Amazon Cloud.
CentOS 5.4 - solide, aber wie kyl erwähnte, wird wahrscheinlich jede Distro gut funktionieren.
Ruby 1.9.2RC 2 - bisher keine Probleme mit Rails 3 bei mir. Wird auf jeden Fall Ruby Enterprise verwenden, wenn sie es auf 1.9.2 portieren (nicht sicher, ob das in den Werken ist, obwohl??)
Nginx - schnell und leicht. Ich mag es viel besser als Apache. Funktioniert gut vor Passagier, Mischling und dünn.
MySQL - Das ist eine persönliche Vorliebe. Ich benutze es schon seit Jahren. Es ist einfach, eine Master/Slave- oder Master/Master-Konfiguration einzurichten, wenn Sie skalieren müssen. Manche Leute haben Erfolg mit Sqlite, aber ich bevorzuge etwas, das etwas robuster ist.
Github - ein Muss für mich bei der Quellcodekontrolle. Bundler funktioniert sehr gut mit Github
Anwendungsserver - Ich bin immer noch am Überlegen, was ich damit anfangen soll. Ich war mit Passenger 2.2.15 zufrieden, bis ich sah, wie lange es dauerte, neue Ruby-Prozesse zu erzeugen, um Gleichzeitigkeit zu behandeln. Es dauert bis zu 30 Sekunden, um einen neuen Prozess für mich zu starten, und die Anwendung ist gesperrt, so dass keine Anfragen durchgehen können, während sie gestartet wird. Ich untersuche gerade, ob es meine App oder Rails 3 ist, die so lange zum Laden braucht. Dieses Problem ist jedoch mit Passenger 3 behoben. Hoffentlich wird das bald veröffentlicht. Als Folge davon werde ich wahrscheinlich Thin oder Mongrel verwenden, bis Passenger 3 herauskommt.
Capistrano - funktioniert hervorragend für Rails 3. Ich würde empfehlen, einige Rezepte für die Versionierung Ihrer App mit Git-Tags zu finden... oder schreiben Sie einfach Ihre eigenen.
Sonst noch etwas? Es hat zwar nicht wirklich etwas mit dem Server zu tun, aber ich würde empfehlen, die neue Plugin-API für jeden wiederverwendbaren Teil Ihrer Anwendung zu verwenden. Lesen Sie mehr über railties und engines. Es ist einfach, ein Gem mit Jeweler zu erstellen und es mit Github unter Verwendung von Jeweler Rake Tasks zu versionieren. Dann können Sie von einem Github-Tag oder von Master aus deployen, indem Sie das Gem und die Github-Quelle in Ihr Gemfile einfügen und es per Bundle installieren oder aktualisieren. Ich habe vor kurzem alle meine gemeinsamen App-Code (Blog, Authentifizierung, etc..) zu Rails 3 Motoren portiert und es funktioniert hervorragend. Und jedes Mal, wenn ich diesen Code wiederverwenden muss, füge ich ihn einfach in das Gemfile der neuen App ein.