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ć?
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.
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
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 Miejscuhttpd.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ć.Zrestartuj serwer (lub przynajmniej Apache -
service httpd restart
)Wprowadź swój folder projektu Rails
/var/www/html/your_application
i rozpocznij migrację odrake db:migrate
. Upewnij się, że istnieje tabela bazy danych, nawet jeśli planujesz dodać tabele później (jest to również część step 1).RAILS_ENV=production rake secret
- spowoduje to utworzenie secret_key, który możesz dodać doconfig/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.RAILS_ENV=production rake db:migrate
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.RAILS_ENV=production rails s
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.
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+.
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)
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'
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
.
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
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
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.
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.
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
RAILS_ENV=production
rails s
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
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
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
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
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ę.
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