¿Cómo puedo cambiar mi aplicación Rails para que se ejecute en modo de producción? ¿Hay un archivo de configuración, environment.rb, por ejemplo, para hacer eso?
ruby-on-rails
development-environment
production-environment
Adler Medrado
fuente
fuente
Respuestas:
Cómo configurar y ejecutar una aplicación Rails 4 en modo Producción (paso a paso) usando Apache y Phusion Passenger:
Normalmente, podrá 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 central del servidor (CentOS 6, pero debe aplicarse a casi todos los sabores 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 haya editado el
/etc/httpd/conf/httpd.conf
archivo para reflejar la estructura de su directorio. Desea apuntar DocumentRoot a su proyecto Rails / carpeta pública En cualquier parte delhttpd.conf
archivo que tenga este tipo de directorio:/var/www/html/your_application/public
debe actualizarse o todo se volverá muy frustrante. No puedo enfatizar esto lo suficiente.Reinicie el servidor (o Apache como mínimo
service httpd restart
)Ingrese su carpeta de proyecto Rails
/var/www/html/your_application
y comience la migración conrake db:migrate
. Asegúrese de que exista una tabla de base de datos, incluso si planea agregar tablas más tarde (esto también es parte del paso 1).RAILS_ENV=production rake secret
- esto creará una clave secreta a la que puede agregarconfig/secrets.yml
. Usted puede copiar / pegar esto en config / secrets.yml en aras de conseguir las cosas funcionando, aunque me gustaría recomendar que no lo hace. Personalmente, hago este paso para asegurarme de que todo lo demás funciona, luego lo cambio y lo busco 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 a la/public
carpeta.RAILS_ENV=production rails s
En este punto, su aplicación debería estar disponible en
http://something.com/whatever
lugar de:3000
. Si no,passenger-memory-stats
y ver si hay una entrada como908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname
Probablemente me he perdido algo atroz, pero esto me ha funcionado en el pasado.
fuente
Esto ahora sería
O más compacto
Funciona para rieles 3+ proyectos.
fuente
rails s -e production
server -e production
sobre ellos?production
es invariablemente el valor predeterminado.echo "export RAILS_ENV=production" >> ~/.bash_profile
Si está ejecutando en Passenger , entonces el valor predeterminado es ejecutar en producción, en su configuración de apache:
Si solo está ejecutando un servidor local con mongrel o webrick, puede hacer:
o en bash:
en realidad, anular la constante RAILS_ENV en enviornment.rb probablemente debería ser su último recurso, ya que probablemente no se mantendrá establecido (vea otra respuesta que di sobre eso)
fuente
Si la sugerencia de mipadi no funciona, agregue esto a config / environment.rb
fuente
ENV['RAILS_ENV'] ||= 'production'
puede aplicar sobre ellos también?Cambie la variable de entorno
RAILS_ENV
aproduction
.fuente
~/.bashrc
o~/.bash_profile
simplementeexport RAILS_ENV=production"
fuente
También puede pasar el entorno al script / servidor:
fuente
Esto ejecutará el servidor con
RAILS_ENV
='production'
.Aparte de esto, debe establecer la ruta de los activos en
production.rb
Sin esto, sus activos no se cargarán.
fuente
O
Por defecto el entorno es desarrollo.
fuente
Como otros han publicado:
rails server -e production
O mi favorito personal:
RAILS_ENV=production
rails s
fuente
En rieles 3
Agregar
Rails.env = ActiveSupport::StringInquirer.new('production')
a la aplicación.rb yrails s
funcionará igual querails server -e production
fuente
No es una buena forma de ejecutar el servidor rails en el entorno de producción mediante "rails server -e production", ya que 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 rieles es Entornos de producción - Rieles 3
fuente
para el servidor predeterminado: rails s -e production
para el puerto del servidor costum: rails s -p [port] -e producción, por ejemplo. rieles s -p 3002 -e producción
fuente
Por defecto, el servidor se ejecuta en el entorno de desarrollo:
$ rails s
Si está ejecutando en un entorno de producción:
$ rails s -e production
o$ RAILS_ENV=production rails s
fuente
Asegúrese de haberlo hecho a continuación en su archivo environment.rb.
Si su aplicación se ejecuta en un entorno de alojamiento compartido o pasajero, es posible que deba realizar cambios en .httaccess (dentro de la carpeta pública) y establecer el modo como producción.
fuente