Измените приложение Rails на производство - PullRequest
187 голосов
/ 23 декабря 2009

Как я могу изменить приложение Rails для работы в производственном режиме? Есть ли файл конфигурации, например environment.rb, для этого?

Ответы [ 15 ]

350 голосов
/ 09 октября 2010

Теперь это будет

rails server -e production

Или, более компактный

rails s -e production

Работает для рельсов 3+ проектов.

68 голосов
/ 12 декабря 2014

Как настроить и запустить приложение Rails 4 в рабочем режиме (пошагово) с использованием Apache и Phusion Passenger:

Обычно вы можете войти в свой проект Rails, rails s, и получить версию для разработки своего приложения на http://something.com:3000. Режим производства немного сложнее настроить.

Я какое-то время возился с этим, поэтому я решил написать это новичкам (таким как я). Есть несколько небольших твиков, которые распространены по всему интернету, и подумал, что это может быть проще.

  1. Обратитесь к этому руководству для настройки ядра сервера (CentOS 6, но оно должно применяться почти ко всем разновидностям Linux): https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4-app-with-apache-and-passenger-on-centos-6

  2. Убедитесь, что после настройки Passenger вы отредактировали файл /etc/httpd/conf/httpd.conf, чтобы он отражал вашу структуру каталогов. Вы хотите указать DocumentRoot на вашу общую папку проекта / Rails В любом месте файла httpd.conf, который имеет такой тип директории: /var/www/html/your_application/public необходимо обновить, иначе все будет очень неприятно. Я не могу подчеркнуть это достаточно.

  3. Перезагрузите сервер (или Apache по крайней мере - service httpd restart)

  4. Войдите в папку проекта Rails /var/www/html/your_application и начните миграцию с rake db:migrate. Убедитесь, что таблица базы данных существует, даже если вы планируете добавить таблицы позже (это также является частью шага 1).

  5. RAILS_ENV=production rake secret - это создаст секретный ключ, который вы можете добавить к config/secrets.yml. Вы можете скопировать / вставить это в config / secrets.yml ради запуска, хотя я бы порекомендовал вам этого не делать. Лично я делаю этот шаг, чтобы убедиться, что все остальное работает, затем измените его обратно и отправьте позже.

  6. RAILS_ENV=production rake db:migrate

  7. RAILS_ENV=production rake assets:precompile, если вы обслуживаете статические активы. Это поместит файлы js, css, image в папку /public.

  8. RAILS_ENV=production rails s

На этом этапе ваше приложение должно быть доступно по http://something.com/whatever вместо :3000. Если нет, то passenger-memory-stats и посмотрите, есть ли запись типа 908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname

Я, вероятно, пропустил что-то отвратительное, но это работало для меня в прошлом.

61 голосов
/ 23 декабря 2009

Если вы работаете на Passenger , то по умолчанию он запускается в рабочем режиме в вашей apache conf:

<VirtualHost *:80>
  ServerName application_name.rails.local
  DocumentRoot "/Users/rails/application_name/public"
  RailsEnv production ## This is the default
</VirtualHost>

Если вы просто используете локальный сервер с mongrel или webrick, вы можете сделать:

./script/server -e production

или в bash:

RAILS_ENV=production ./script/server

фактически переопределение константы RAILS_ENV в enviornment.rb, вероятно, должно быть вашим последним средством, так как оно, вероятно, не останется установленным (см. другой ответ Я дал на это)

54 голосов
/ 23 декабря 2009

Если предложение mipadi не работает, добавьте его в 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'
19 голосов
/ 10 апреля 2013
$> export RAILS_ENV=production
19 голосов
/ 23 декабря 2009

Изменить переменную среды RAILS_ENV на production.

18 голосов
/ 23 декабря 2009

Вы также можете передать среду в скрипт / сервер:

$ script/server -e production
12 голосов
/ 29 июля 2015
rails s -e production

Это запустит сервер с RAILS_ENV = 'production'.

Помимо этого вы должны установить путь к активам в production.rb

config.serve_static_assets = true

Без этого ваши активы не будут загружены.

6 голосов
/ 11 января 2017
RAILS_ENV=production rails s

OR

rails s -e production

По умолчанию среда разработки.

5 голосов
/ 08 октября 2015

Как и другие опубликовали: rails server -e production

Или, мой личный любимый: RAILS_ENV=production rails s

...