Melhores práticas para novas implantações Rails no Linux?
-
07-07-2019 - |
Pergunta
Eu usei reta Mongrel, eu usei os clusters Mongrel atrás de Apache, eu olhei Fino, e eu estou me tornando muito intrigado com passageiros. Eu olhei para Nginx também. Eu olhei para MRI, Ruby Enterprise Edition, Rubinius e JRuby. Há uma série de opções, cada um pretendendo ser o novo Santo Graal.
O que é a melhor opção lá fora, para uma marca nova, totalmente up-to-date de implantação? As únicas hipóteses são o seguinte:
- O aplicativo é Rails 2.2 baseados. (Eu sei 2.2 não é totalmente liberado ainda, mas também não é essa implantação.)
- O servidor é baseado em Linux. Provavelmente Ubuntu Hardy, mas realmente, o que funciona melhor neste caso.
- Rails terá de ser totalmente funcional e, provavelmente, falar com um banco de dados MySQL.
- Tudo o resto é negociável.
Tendo em conta estes constrangimentos especialmente largas, que combinação de software irá proporcionar o melhor resultado, em termos de simultaneidade e baixa sobrecarga?
Eu estou inclinado a Apache com o MPM "trabalhador" e passageiro + Ruby Enterprise Edition, simplesmente porque ele oferece estabilidade imediata e simplicidade de configuração e manutenção.
Am I susceptível de ser particularmente melhor com outra opção?
Solução
Troquei de Mongrel Cluster de Passageiros há duas semanas (Debian Linux Server). Eu não olhei para trás por um segundo. Passageiro é provavelmente a maneira mais fácil de obter o seu novo servidor instalado e funcionando. Desempenho e confiabilidade são razoáveis ??também.
Pessoalmente, gosto de passar meu tempo trabalhando em excitantes projetos novos trilhos em vez de lidar com problemas de implantação - Passenger me permite fazer exatamente isso. No entanto, Mongrel ou qualquer outra coisa ainda pode ser preferível se você tem alguns requisitos especiais tipo (não se aplica para a maioria dos produtos).
Outras dicas
Esta manhã, DHH fala sobre esse mesmo tema no seu próprio blog:
Mas de alguma forma a mensagem de passageiros tem sido um pouco lento a afundar-se. Já existe uma tonelada de grandes sites que funcionam fora dela. Incluindo Shopify, MTV, Geni, Yammer, e nós vamos estar se movendo ao longo do primeiro Ta-da lista em breve, então espero que o resto da suíte 37signals rapidamente depois.
Assim, enquanto ainda há razões para executar seu próprio costume configuração multi-tier de peças configurado manualmente, assim como há pessoas se afastando de mod_php para suas particularidades, eu acho que nós finalmente liquidada em uma resposta padrão. Algo que não exigem que você realmente pensar sobre a primeira implantação de sua aplicação Rails. Algo que só funciona fora da caixa. Mesmo que a caixa é um servidor compartilhado!
http: //www.loudthinking .com / posts / 30-mito-1-rails-é-difícil de implementar
Tobias Lütke sobre o tema da mudança Shopify (milhões de pedidos / dia) para os passageiros:
Tudo isso significa que a quantidade total de memória que é usado por Shopify durante as operações normais passou de média de 9 GB para uma média de 5 GB. Nós uniformemente distribuída a poupança entre os mais processos Shopify e mais espaço que mudou o nosso tempo médio de resposta de 210ms para 130ms enquanto o tráfego cresceu 30% nos últimos meses memcached.
Em conclusão: Eu não posso ver qualquer razão para escolher uma estratégia de implantação diferente neste momento. É simples, completo, documentado rápido e bem.
Estamos usando o velho nginx padrão -> vira-lata de pilha para os últimos 18 meses, e embora não era trivial para configurar a primeira vez, está provado flexível e tem lidado com alguns sites muito alto tráfego para nos. Nginx, em particular, tem sido absolutamente rocha sólida e rápido, e se você pode obter o seu aplicativo de página cache que você pode lidar com um monte de pedidos.
mestiços Preso ter sido um problema, por isso usamos monit para matá-los quando eles se comportassem mal. Mais uma vez, não foi totalmente trivial de configurar, mas nós usamos o mesmo processo em muitos muitos sites neste momento.
Nós não ter jogado com passageiros ainda, então talvez seja mais fácil e mais estável, eu vou adiar para os outros respondedores em que um, tudo o que posso dizer é que não há nenhuma razão em tudo que você não pode construir um sólido pilha com nginx e vira-lata.
Mudamos Fron nginx + Mongrel para passageiros.
Eu acredito plenamente que Passageiros vai ser o novo padrão para trilhos, apesar Nginx e Mongrel aglomerado sendo endossado por algumas pessoas muito inteligentes. Os recentes avanços na Passageiros têm realmente impulsionou-o para frente.
A nossa configuração atual é algo como isto:
Servidores Web
- Ubuntu 8.04 LTS
- Phusion Passenger on Apache2
- MRI Rubi 1.8.6 e amigos (formar apt)
- Gems Ruby 1.3.0 (Instalado de origem)
Servidores banco de dados
- Centos 5
- MySQL Cluster (apenas transferido para este, mas é promissor)
Tendo padronizado no linux exata distro temos sido capazes de escrever receitas Capitrano a implantação de ajuda (pequenas variações na configuração ter sido a fonte de falhas no serviço MUITOS) e de outra maneira simplificar nossas vidas.
Tenha um olhar em Litespeed . Você pode obter uma versão gratuita que funciona em 1 CPU ou pagar para obter múltiplas cpu. É um pouco caro, mas é bastante sólida e alças trilhos de forma brilhante (ou seja, usa menos memória e é menos de uma sobrecarga para monitorar e configuração). Eu corro uma enorme quantidade de aplicativos nele e não perder uma batida.
Nós também mudou de Mongrel para mod_passenger e estabilidade encontrada melhorou muito com este esforço necessário para configurar e manter. Boa escolha.
Outra pouco de ouro:
O Josh Peek Slicehost gem está cheio de receitas Capistrano que são muito mais simples e muito mais organizada do que Deprec . Nada ali é específico Slicehost, especialmente, qualquer um.
Eu estou hospedando meus novos aplicativos com Apache2 e passageiros no Ubuntu Hardy. Parece que a opção mais fácil e melhor para a maioria dos cenários. Acabei de entrar para Slicehost.com para esse fim. Eles parecem ter boas críticas e têm os preços mais competitivos de primeira classe oferece.
Eu realmente não posso subscrevê-las ainda, porque eu sou um novo cliente, mas o conjunto de guias e gama de opções de suporte é impressionante.
O que você não está mencionando é quão grande e popular a sua aplicação é / será. Este critério poderia afetar o processo de decisão.
Capistrano + Depreciação para realmente configurar meu stack no Ubuntu e gerenciar fisicamente a implantação.
Nginx proxy para clusers Mongrel para a arquitetura de servidor. Não é a, técnica borda do sangramento mais novo, mas ele funciona bem, ele está ficando bem documentado, e é muito, muito alto desempenho, mesmo quando trabalhando em pequenas VPSes. Supondo que você não borked o aplicativo que você pode Slashdot a 128 MB Slicehost VPS e ele simplesmente continua voltando para mais.
Dito isto: havia um muito de pegadinhas na primeira vez, até que eu descobri como Nginx efectivamente trabalhadas. Depois que sua incrível -. Como um pequeno Apachelet com um ligeiro sotaque russo