Измените приложение Rails на производство

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

Ответ 1

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

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

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

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

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

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

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

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

  • RAILS_ENV=production rake db:migrate

  • RAILS_ENV=production rake assets:precompile, если вы используете статические активы. Это заставит js, css, файлы изображений в папку /public.

  • 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

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

Ответ 2

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

rails server -e production

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

rails s -e production

Он работает для проектов с рельсами 3+.

Ответ 3

Если вы используете "Пассажир" , тогда по умолчанию запускается в процессе производства, в вашем 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, вероятно, будет вашим последним средством, так как он, вероятно, не собирается оставаться установленным (см. другой ответ, я дал это )

Ответ 4

Если предложение 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'

Ответ 5

Измените переменную окружения RAILS_ENV на production.

Ответ 6

Вы также можете передать среду на script/server:

$ script/server -e production

Ответ 7

$> export RAILS_ENV=production

Ответ 8

rails s -e production

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

Кроме того, вы должны установить путь к ресурсам в production.rb

config.serve_static_assets = true

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

Ответ 9

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

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

Ответ 10

В Rails 3

Добавление Rails.env = ActiveSupport::StringInquirer.new('production') в application.rb и rails s будет таким же, как 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

Ответ 11

Неэффективный способ запуска сервера rails в рабочей среде "rails server -e production", потому что тогда rails работает как однопоточное приложение и может отвечать только на один HTTP-запрос за раз.

Лучшая статья о рабочей среде для рельсов Производственные среды - Rails 3

Ответ 12

RAILS_ENV=production rails s

ИЛИ

rails s -e production

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

Ответ 13

для сервера по умолчанию: rails s -e production

для порта сервера costum: rails s -p [port] -e production, например. рельсы s -p 3002 -e производство

Ответ 14

Пожалуйста, убедитесь, что вы сделали это ниже в файле environment.rb.

ENV ['RAILS_ENV'] || = 'production'

Если приложение работает в среде общего хостинга или в телефоне с подушками, вам может потребоваться внести изменения в .httaccess(внутри общей папки) и установить режим как производственный процесс.