2010-11-10 26 views

Répondre

4

Il y a beaucoup, beaucoup de différentes façons de configurer un serveur Rails. Je ne sais pas s'il existe une config "idéale". Je vais vous dire comment j'ai configuré mon serveur et pourquoi.

Système d'exploitation: Linux, toute distribution.

Ceci est la seule plate-forme de serveur qui a du sens. La communauté Ruby est centrée autour de Linux, mais BSD serait également un très bon choix. Je suis plus à l'aise avec Linux. OSX est une excellente plate-forme de développement, mais le coût supplémentaire ne vous achète rien du côté serveur que vous ne pouvez pas obtenir sur Linux. Et Apple élimine progressivement la plate-forme Xserve, donc il n'y a probablement pas d'avenir de toute façon. Don't even think about using Windows.

Web Server: Apache + Phusion Passenger

Je recommande Apache car il est partout. Tout le monde le sait. Obtenir du soutien est très simple. Phusion Passenger est probablement le serveur d'application le plus simple à utiliser. Voici un exemple de configuration VirtualHost:

<VirtualHost x.x.x.x:80> 
    ServerName xxxx.com 
    DocumentRoot /var/www/xxxx/current/public 
    PassengerHighPerformance on 
    <Directory "/var/www/xxxx/current/public"> 
     AllowOverride all 
     Options -MultiViews 
    </Directory> 
    AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/json 
    AddOutputFilterByType DEFLATE image/jpeg, image/png, image/gif 
</VirtualHost> 

C'est tout. (Et la plupart ce n'est pas strictement nécessaire)

interpréteur Ruby: Ruby Enterprise Edition

J'utilise cette place de l'IRM à la vanille, car il est un peu plus efficace mémoire, ce qui fait une grande différence sur le serveur . Il est également fait pour intégrer avec le passager.

Un inconvénient de REE est qu'il est basé sur 1.8.7. Vous souhaiterez peut-être utiliser 1.9.2 à la place, car il présente un avantage significatif en termes de performances.

gestion Gem: RVM

RVM vous permet de créer des environnements de pierres précieuses sandbox pour des applications différentes, dans le cas où il y a des conflits de version. Fortement recommandé pour votre environnement de développement.

système de déploiement: Capistrano

Si vous ne l'utilisez Capistrano, vous devriez. Ce sera le plus gros gain de temps que vous pouvez faire pour le déploiement de la production.Cela rendra aussi le retour à la version précédente simple si il y a un problème.

Vous devez également avoir ExceptionNotifier installé. S'il y a une exception sur votre serveur de production, vous devriez le savoir.

Je recommande également vivement de vérifier NewRelic RPM pour le profilage. Même la version gratuite fournit des informations utiles.

+0

Bonne réponse. nginx devient extrêmement populaire, mais je pense que votre argument pour apache a du sens. La seule chose que je pourrais peut-être remettre en question est que si nous parlons des rails 3, l'IRM 1.9.2 peut être un meilleur choix que REE. ree pour 1.8.7 est un brainer bien cependant. –

+0

BSD⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠? – tchrist

+0

@tchrist touche! BSD serait également un bon serveur. Désolé pour les stores de Linux. –