Как я могу изменить приложение Rails для работы в производственном режиме? Есть ли для этого файл конфигурации, например environment.rb?
ruby-on-rails
development-environment
production-environment
Адлер Медрадо
источник
источник
Ответы:
Как настроить и запустить приложение 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-с-апаш-пассажирские-на-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, image в/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
Я, наверное, пропустил что-то отвратительное, но это работало для меня в прошлом.
источник
Это было бы сейчас
Или более компактный
Это работает для рельсов 3+ проектов.
источник
rails s -e production
server -e production
на них бегать ?production
это всегда значение по умолчанию.echo "export RAILS_ENV=production" >> ~/.bash_profile
Если вы работаете в Passenger , то по умолчанию это запуск в производственной среде в вашем apache conf:
Если вы просто используете локальный сервер с помощью mongrel или webrick, вы можете сделать:
или в bash:
фактически переопределение константы RAILS_ENV в enviornment.rb, вероятно, должно быть вашим последним средством, поскольку, вероятно, оно не останется установленным (см. другой ответ, который я дал на это)
источник
Если предложение mipadi не работает, добавьте его в config / environment.rb
источник
ENV['RAILS_ENV'] ||= 'production'
быть применен к ним тоже?Измените переменную среды
RAILS_ENV
наproduction
.источник
~/.bashrc
или~/.bash_profile
или простоexport RAILS_ENV=production"
источник
Вы также можете передать среду в скрипт / сервер:
источник
Это запустит сервер с
RAILS_ENV
='production'
.Помимо этого вы должны установить путь активов в
production.rb
Без этого ваши активы не будут загружены.
источник
ИЛИ
По умолчанию среда разработки.
источник
Как и другие опубликовали:
rails server -e production
Или мой личный любимый:
RAILS_ENV=production
rails s
источник
В Rails 3
Добавление
Rails.env = ActiveSupport::StringInquirer.new('production')
в application.rb иrails s
будет работать так же, какrails server -e production
источник
Это не хороший способ запустить сервер rails в рабочей среде с помощью «rails server -e production», потому что тогда rails запускается как однопоточное приложение и может отвечать только на один HTTP-запрос за раз.
Лучшая статья о производственной среде для рельсов - Рабочая среда - Рельсы 3
источник
для сервера по умолчанию: rails s -e production
для порта сервера costum: rails s -p [port] -e production, например. рельсы s -p 3002 -e производства
источник
По умолчанию сервер работает в среде разработки:
$ rails s
Если вы работаете в производственной среде:
$ rails s -e production
или$ RAILS_ENV=production rails s
источник
Пожалуйста, убедитесь, что вы сделали ниже в вашем файле environment.rb.
Если ваше приложение работает в среде общего хостинга или в Phushion-пассажире, вам может потребоваться внести изменения в .httaccess (в общей папке) и установить режим работы.
источник