Cambiar una aplicación Rails a producción
¿Cómo puedo cambiar mi aplicación Rails para que se ejecute en modo de producción? ¿Hay un archivo de configuración, entorno?rb por ejemplo, para hacer eso?
15 answers
Cómo configurar y ejecutar una aplicación Rails 4 en modo de producción (paso a paso) usando Apache y Phusion Passenger:
Normalmente podría ingresar a su proyecto Rails, rails s
, y obtener una versión de desarrollo de su aplicación en http://something.com:3000 . El modo de producción es un poco más complicado de configurar.
He estado jugando con esto por un tiempo, así que pensé en escribir esto para los novatos (como yo). Hay algunos pequeños ajustes que se extienden a través de Internet y pensé que esto podría ser más fácil.
Consulte esta guía para la configuración principal del servidor (CentOS 6, pero debería aplicarse a casi todos los tipos de Linux): https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4-app-with-apache-and-passenger-on-centos-6
Asegúrese de que, después de configurar Passenger, ha editado el archivo
/etc/httpd/conf/httpd.conf
para reflejar la estructura de su directorio. Quieres señalar DocumentRoot a su carpeta Rails project /public En cualquier lugar del archivohttpd.conf
que tenga este tipo de dir:/var/www/html/your_application/public
necesita ser actualizado o todo se volverá muy frustrante. No puedo enfatizar esto lo suficiente.Reinicie el servidor (o Apache como mínimo -
service httpd restart
)Introduzca su carpeta de proyecto Rails
/var/www/html/your_application
e inicie la migración conrake db:migrate
. Asegúrese de que existe una tabla de base de datos, incluso si planea agregar tablas más adelante (esto también es parte del paso 1).RAILS_ENV=production rake secret
- esto creará un secret_key que puede agregar aconfig/secrets.yml
. Puede copiar/pegar esto en config/secrets.yml por el bien de hacer que las cosas funcionen, aunque te recomiendo que no hagas esto. Personalmente, hago este paso para asegurarme de que todo lo demás esté funcionando, luego lo cambio de nuevo y lo obtengo más tarde.RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake assets:precompile
si está sirviendo activos estáticos. Esto empujará js, css, archivos de imagen en el/public
carpeta.RAILS_ENV=production rails s
En este punto, su aplicación debería estar disponible en http://something.com/whatever
en lugar de :3000
. Si no, passenger-memory-stats
y ver si hay una entrada como 908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname
Probablemente me he perdido algo atroz, pero esto ha funcionado para mí en el pasado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-02 14:21:59
Esto sería ahora
rails server -e production
O, más compacto
rails s -e production
Funciona para proyectos rails 3+.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-24 10:53:24
Si se está ejecutando en Passenger , entonces el valor predeterminado es ejecutarse en producción, en su conf de apache:
<VirtualHost *:80>
ServerName application_name.rails.local
DocumentRoot "/Users/rails/application_name/public"
RailsEnv production ## This is the default
</VirtualHost>
Si solo está ejecutando un servidor local con mestrel o webrick, puede hacer:
./script/server -e production
O en bash:
RAILS_ENV=production ./script/server
En realidad sobreescribe la constante RAILS_ENV en el enviornment.rb probablemente debería ser su último recurso, ya que probablemente no se quedará establecido (ver otra respuesta que di sobre eso)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:33
Si la sugerencia de mipadi no funciona, agregue esto a config/environment.rb
# force Rails into production mode when
# you don't control web/app server and can't set it the proper way
ENV['RAILS_ENV'] ||= 'production'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:41
Cambie la variable de entorno RAILS_ENV
a production
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-22 21:22:57
También puede pasar el entorno a script / server:
$ script/server -e production
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-22 22:35:41
$> export RAILS_ENV=production
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-10 11:16:37
rails s -e production
Esto ejecutará el servidor con RAILS_ENV
= 'production'
.
Aparte de esto, debe establecer la ruta de los activos en production.rb
config.serve_static_assets = true
Sin esto, sus activos no se cargarán.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-29 23:36:03
RAILS_ENV=production rails s
O
rails s -e production
Por defecto el entorno es developement.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-11 07:08:08
Como otros han publicado: rails server -e production
O, mi favorito personal: RAILS_ENV=production
rails s
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-17 16:57:37
En Carriles 3
Añadiendo Rails.env = ActiveSupport::StringInquirer.new('production')
en la aplicación.rb y rails s
funcionarán igual que rails server -e production
module BlacklistAdmin
class Application < Rails::Application
config.encoding = "utf-8"
Rails.env = ActiveSupport::StringInquirer.new('production')
config.filter_parameters += [:password]
end
end
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-05 13:39:18
No es una buena manera de ejecutar rails server en el entorno de producción mediante "rails server-e production", porque entonces rails se ejecuta como una aplicación de un solo subproceso, y solo puede responder a una solicitud HTTP a la vez.
El mejor artículo sobre entorno de producción para rails es Entornos de producción-Rails 3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-19 23:06:18
Para el servidor predeterminado: rails s-e production
Para el puerto del servidor costum : rails s-p [port]- e production, por ejemplo. rieles s-p 3002-e producción
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-13 04:50:18
Por defecto el servidor se ejecuta en el entorno de desarrollo: $ rails s
Si se está ejecutando en un entorno de producción: $ rails s -e production
o $ RAILS_ENV=production rails s
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-30 11:18:28
Por favor, asegúrese de haber hecho lo siguiente en su entorno.archivo rb.
ENV ['RAILS_ENV'] / / = 'production'
Si su aplicación se ejecuta en el entorno de alojamiento compartido o phushion passenger, es posible que deba realizar cambios en .httaccess (dentro de la carpeta pública) y establecer modo como producción.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-29 08:16:44