Zmień aplikację Rails na produkcyjną

Jak mogę zmienić aplikację Rails, aby działała w trybie produkcyjnym? Czy istnieje plik konfiguracyjny, środowisko.rb na przykład, aby to zrobić?

Author: the Tin Man, 2009-12-23

15 answers

Rails 4 Może być instalowany w trybie produkcyjnym (krok po kroku) przy użyciu Apache i Phusion Passenger:]}

Normalnie możesz wejść do swojego projektu Rails, rails s i uzyskać wersję rozwojową aplikacji pod adresem http://something.com:3000 . tryb produkcji jest nieco trudniejszy do skonfigurowania.

Trochę się tym bawiłem, więc pomyślałem, że napiszę to dla nowicjuszy(takich jak ja). Istnieje kilka małych poprawek, które są rozłożone przez internet i pomyślałem, że może to być łatwiejsze.

  1. Zapoznaj się z tym przewodnikiem po podstawowej konfiguracji serwera (CentOS 6, ale powinien on dotyczyć prawie wszystkich wersji Linuksa):https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4-app-with-apache-and-passenger-on-centos-6

  2. Upewnij się, że po skonfigurowaniu programu Passenger edytowałeś plik /etc/httpd/conf/httpd.conf, aby odzwierciedlał strukturę katalogów. chcesz wskazać DocumentRoot do twojego projektu Rails / folderu publicznego W Dowolnym Miejscu httpd.conf pliku, który ma tego rodzaju katalog: /var/www/html/your_application/public musi zostać zaktualizowany, inaczej wszystko stanie się bardzo frustrujące. Nie mogę tego wystarczająco podkreślić.

  3. Zrestartuj serwer (lub przynajmniej Apache - service httpd restart )

  4. Wprowadź swój folder projektu Rails /var/www/html/your_application i rozpocznij migrację od rake db:migrate. Upewnij się, że istnieje tabela bazy danych, nawet jeśli planujesz dodać tabele później (jest to również część step 1).

  5. RAILS_ENV=production rake secret - spowoduje to utworzenie secret_key, który możesz dodać do config/secrets.yml. Możesz skopiować/wkleić to do config / secrets.yml w trosce o to, aby wszystko działało, chociaż polecam, żebyś tego nie robił. Osobiście robię ten krok, aby upewnić się, że wszystko inne działa, a następnie zmienić go z powrotem i źródła go później.

  6. RAILS_ENV=production rake db:migrate

  7. RAILS_ENV=production rake assets:precompile jeśli obsługujesz aktywa statyczne. To spowoduje wypchnięcie plików JS, css, obrazów do /public folder.

  8. RAILS_ENV=production rails s

W tym momencie Twoja aplikacja powinna być dostępna pod adresem http://something.com/whatever zamiast :3000. Jeśli nie, passenger-memory-stats i zobaczyć, czy jest wpis jak 908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname

Prawdopodobnie przegapiłem coś ohydnego, ale to działało dla mnie w przeszłości.

 64
Author: etusm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-02 14:21:59

To teraz będzie

rails server -e production

Lub bardziej kompaktowy

rails s -e production

Działa dla projektów rails 3+.

 348
Author: BandsOnABudget,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-24 10:53:24

Jeśli korzystasz z Passenger , domyślnym ustawieniem jest uruchamianie w wersji produkcyjnej, w Twoim Apache conf:

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

Jeśli używasz lokalnego serwera z mongrel lub webrick, możesz to zrobić:

./script/server -e production

Lub w bash:

RAILS_ENV=production ./script/server

Faktycznie nadpisuje stałą RAILS_ENV w środowisku.rb powinien być prawdopodobnie ostatnią deską ratunku, ponieważ prawdopodobnie nie zostanie ustawiony (zobacz inna odpowiedź dałem na to)

 61
Author: Dan McNevin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:33

Jeśli sugestia mipadi nie działa, dodaj to do 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'
 54
Author: Pete,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:41

Zmień zmienną środowiskową RAILS_ENV na production.

 19
Author: mipadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-22 21:22:57

Możesz również przekazać środowisko do skryptu / serwera:

$ script/server -e production
 18
Author: foz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-22 22:35:41
$> export RAILS_ENV=production
 18
Author: Evolve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-10 11:16:37
rails s -e production

To uruchomi serwer z RAILS_ENV = 'production'.

Oprócz tego musisz ustawić ścieżkę zasobów w production.rb

config.serve_static_assets = true

Bez tego twoje aktywa nie zostaną załadowane.

 12
Author: prasann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-29 23:36:03
RAILS_ENV=production rails s

Lub

rails s -e production

Domyślnie środowiskiem jest developement.

 6
Author: puneet18,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-11 07:08:08

Jak napisali inni: rails server -e production

[[3]}lub, mój osobisty fave: RAILS_ENV=production rails s
 5
Author: alex1sz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-17 16:57:37

In Rails 3

Dodawanie Rails.env = ActiveSupport::StringInquirer.new('production') do aplikacji.rb i rails s będą działać tak samo jak 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
 2
Author: RSK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-05 13:39:18

Nie jest to dobry sposób na uruchomienie rails server w środowisku produkcyjnym przez "rails server-e production" , ponieważ wtedy rails działa jako aplikacja jednowątkowa i może odpowiadać tylko na jedno żądanie HTTP na raz.

Najlepszy artykuł o środowisku produkcyjnym dla rails to środowiska produkcyjne-Rails 3

 2
Author: Eugene Liskovets,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-19 23:06:18

Dla domyślnego serwera: rails s-E production

For costum server port: rails S-P [port] - e production, np. szyny S-p 3002-e produkcja

 1
Author: user3786185,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-13 04:50:18

Domyślnie serwer działa w środowisku deweloperskim: $ rails s

Jeśli używasz środowiska produkcyjnego: $ rails s -e production lub $ RAILS_ENV=production rails s

 1
Author: Pankaj Dhote,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-30 11:18:28

Upewnij się, że wykonałeś poniższe czynności w swoim środowisku.plik rb.

ENV ['RAILS_ENV'] / / = 'produkcja'

Jeśli aplikacja działa w środowisku hostingu współdzielonego lub phushion passenger, może być konieczne wprowadzenie zmian w .httaccess (wewnątrz folderu publicznego) i ustaw tryb jako produkcję.

 0
Author: Rakesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-29 08:16:44