Как я могу изменить приложение Rails для запуска в рабочем режиме? Есть ли файл конфигурации, например, environment.rb?
Измените приложение Rails на производство
Ответ 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(внутри общей папки) и установить режим как производственный процесс.