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



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

628   15  

15 ответов:

как настроить и запустить приложение 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. делать абсолютной уверенности, что после того, как пассажир настроен ты отредактировал для отражения структура директорий. вы хотите указать DocumentRoot на ваш проект Rails / общую папку в любом месте httpd.conf файл, который имеет такой вид dir:/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 - это создаст secret_key, который вы можете добавить в config/secrets.yml . Ты можете скопируйте / вставьте это в config / secrets.yml ради того, чтобы все работало, хотя я бы рекомендовал вам не делать этого. Лично я делаю этот шаг, чтобы убедиться, что все остальное работает, а затем изменить его обратно и источник позже.

  6. RAILS_ENV=production rake db:migrate

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

  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

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

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

rails server -e production

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

rails s -e production

Он работает для рельсов 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 в окружающей среде.rb, вероятно, должен быть вашим последним средством, так как он, вероятно, не будет оставаться установленным (см. еще один ответ Я дал на что)

Если mipadi предложение не работает, добавьте это в config / environment.РБ

# 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'

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

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

$ script/server -e production
$> export RAILS_ENV=production
rails s -e production

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

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

config.serve_static_assets = true

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

RAILS_ENV=production rails s

или

rails s -e production

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

как: rails server -e production

или, мой личный фаворит: RAILS_ENV=productionrails s

на рельсы 3

добавлять Rails.env = ActiveSupport::StringInquirer.new('production') в приложение.РБ и 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

Это не очень хороший способ запустить rails server в производственной среде с помощью "rails server-e production", потому что тогда rails работает как однопоточное приложение и может отвечать только на один HTTP-запрос за раз.

Лучшая статья о производственной среде для rails-это Производственные Среды-Рельсы 3

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

для порта сервера костюма: продукция рельсов s-P [порта] - e, например. рейлинги с-п 3002 -е производства

по умолчанию сервер работает в среде разработки:$ rails s

Если вы работаете в производственной среде:$ rails s -e production или $ RAILS_ENV=production rails s

пожалуйста, убедитесь, что вы сделали ниже в вашей среде.rb файл.

ENV ['RAILS_ENV'] / / = 'производство'

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

Comments

    Ничего не найдено.