Como posso alterar meu aplicativo Rails para executar no modo de produção? Existe um arquivo de configuração, environment.rb, por exemplo, para fazer isso?
ruby-on-rails
development-environment
production-environment
Adler Medrado
fonte
fonte
Respostas:
Como configurar e executar um aplicativo Rails 4 no modo Produção (passo a passo) usando o Apache e o Phusion Passenger:
Normalmente, você poderá entrar no seu projeto Rails
rails s
e obter uma versão de desenvolvimento do seu aplicativo em http://something.com:3000 . O modo de produção é um pouco mais complicado de configurar.Estou brincando com isso há um tempo, então achei que escreveria isso para os novatos (como eu). Existem alguns pequenos ajustes que estão espalhados pela Internet e concluímos que isso pode ser mais fácil.
Consulte este guia para obter a configuração principal do servidor (CentOS 6, mas deve aplicar-se a quase todos os tipos de Linux): https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-with-apache-and-passenger-on-centos-6
Certifique-se de que, após a instalação do Passenger, você edite o
/etc/httpd/conf/httpd.conf
arquivo para refletir sua estrutura de diretórios. Você deseja apontar o DocumentRoot para a pasta pública / projeto do Rails em qualquer lugar dohttpd.conf
arquivo que possua esse tipo de diretório:/var/www/html/your_application/public
precisa ser atualizado ou tudo ficará muito frustrante. Não posso enfatizar isso o suficiente.Reinicie o servidor (ou Apache, no mínimo -
service httpd restart
)Digite sua pasta de projeto do Rails
/var/www/html/your_application
e inicie a migraçãorake db:migrate
. Verifique se existe uma tabela de banco de dados, mesmo se você planeja adicionar tabelas posteriormente (isso também faz parte da etapa 1).RAILS_ENV=production rake secret
- isso criará uma chave_ secreta à qual você pode adicionarconfig/secrets.yml
. Você pode copiar / colar isso em config / secrets.yml com o objetivo de fazer as coisas funcionarem, embora eu recomendo que você não faça isso. Pessoalmente, eu faço essa etapa para garantir que tudo funcione, em seguida, altero-a novamente e a fonte mais tarde.RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake assets:precompile
se você estiver servindo ativos estáticos. Isso enviará arquivos de imagem js, css para a/public
pasta.RAILS_ENV=production rails s
Nesse momento, seu aplicativo deve estar disponível em
http://something.com/whatever
vez de:3000
. Caso contrário,passenger-memory-stats
e veja se existe uma entrada como908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname
Provavelmente perdi algo hediondo, mas isso funcionou para mim no passado.
fonte
Isso seria agora
Ou, mais compacto
Funciona para trilhos com mais de 3 projetos.
fonte
rails s -e production
server -e production
com eles?production
é invariavelmente o padrão.echo "export RAILS_ENV=production" >> ~/.bash_profile
Se você estiver executando no Passenger , o padrão é executar na produção, no seu apache conf:
Se você está apenas executando um servidor local com mongrel ou webrick, pode:
ou no bash:
na verdade, substituir a constante RAILS_ENV no ambiente.rb provavelmente deve ser seu último recurso, pois provavelmente não permanecerá definido (veja outra resposta que eu dei sobre isso)
fonte
Se a sugestão do mipadi não funcionar, adicione-o ao config / environment.rb
fonte
ENV['RAILS_ENV'] ||= 'production'
Também pode ser aplicado a eles?Mude a variável de ambiente
RAILS_ENV
paraproduction
.fonte
~/.bashrc
ou~/.bash_profile
simplesmenteexport RAILS_ENV=production"
fonte
Você também pode passar o ambiente para script / servidor:
fonte
Isso executará o servidor com
RAILS_ENV
='production'
.Além disso, você deve definir o caminho dos ativos em
production.rb
Sem isso, seus ativos não serão carregados.
fonte
OU
Por padrão, o ambiente é desenvolvimento.
fonte
Como outros postaram:
rails server -e production
Ou, meu favorito pessoal:
RAILS_ENV=production
rails s
fonte
No Rails 3
Adicionando
Rails.env = ActiveSupport::StringInquirer.new('production')
ao application.rb erails s
funcionará da mesma forma querails server -e production
fonte
Não é uma boa maneira de executar o servidor rails no ambiente de produção "rails server -e production", porque o rails é executado como um aplicativo de thread único e só pode responder a uma solicitação HTTP por vez.
O melhor artigo sobre ambiente de produção para trilhos é Ambientes de produção - Rails 3
fonte
para servidor padrão: produção de rails s -e
para porta do servidor de costum: produção de trilhos s -p [port] -e, por exemplo. produção de trilhos s -p 3002 -e
fonte
Por padrão, o servidor é executado no ambiente de desenvolvimento:
$ rails s
Se você estiver executando no ambiente de produção:
$ rails s -e production
ou$ RAILS_ENV=production rails s
fonte
Verifique se você fez o seguinte no arquivo environment.rb.
Se o seu aplicativo for executado em um ambiente de hospedagem compartilhada ou em um passageiro, talvez seja necessário fazer alterações no .httaccess (dentro da pasta pública) e definir o modo de produção.
fonte