Jak mogę zmienić aplikację Rails, aby działała w trybie produkcyjnym? Czy istnieje plik konfiguracyjny, na przykład environment.rb, aby to zrobić?
ruby-on-rails
development-environment
production-environment
Adler Medrado
źródło
źródło
Odpowiedzi:
Jak skonfigurować i uruchomić aplikację Rails 4 w trybie produkcyjnym (krok po kroku) za pomocą Apache i Phusion Passenger:
Zwykle możesz wziąć udział w projekcie Rails
rails s
i uzyskać wersję programistyczną swojej aplikacji pod adresem http://something.com:3000 . Tryb produkcji jest nieco trudniejszy do skonfigurowania.Przez jakiś czas się z tym bawiłem, więc pomyślałem, że napiszę to dla początkujących (takich jak ja). Istnieje kilka drobnych poprawek, które są rozpowszechniane w Internecie i uznałem, że może to być łatwiejsze.
Zapoznaj się z tym przewodnikiem, aby uzyskać informacje na temat podstawowej konfiguracji serwera (CentOS 6, ale powinno ono dotyczyć prawie wszystkich wersji Linuksa): https://www.digitalocean.com/community/tutorials/how-to-setup-a-rails-4 -app-with-apache-and -senger-on-centos-6
Upewnij się, że po skonfigurowaniu programu Passenger dokonałeś edycji
/etc/httpd/conf/httpd.conf
pliku, aby odzwierciedlić strukturę katalogu. Chcesz skierować DocumentRoot do swojego projektu / folderu publicznego w Railsach Dowolne miejsce whttpd.conf
pliku, w którym znajduje się ten katalog :/var/www/html/your_application/public
wymaga aktualizacji lub wszystko stanie się bardzo frustrujące. Nie mogę tego wystarczająco podkreślić.Uruchom ponownie serwer (lub przynajmniej Apache -
service httpd restart
)Wprowadź folder projektu Rails
/var/www/html/your_application
i rozpocznij migrację za pomocąrake db:migrate
. Upewnij się, że tabela bazy danych istnieje, nawet jeśli planujesz później dodać tabele (jest to również część kroku 1).RAILS_ENV=production rake secret
- stworzy to tajny klucz, do którego możesz dodaćconfig/secrets.yml
. Państwo może skopiować / wkleić do config / secrets.yml przez wzgląd na coraz wszystko działa, chociaż ja polecam nie rób tego. Osobiście robię ten krok, aby upewnić się, że wszystko inne działa, a następnie zmieniam go z powrotem i pozyskuję później.RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake assets:precompile
jeśli obsługujesz zasoby statyczne. Spowoduje to wypchnięcie plików js, css, obrazów do/public
folderu.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 sprawdź, czy jest taki wpis908 469.7 MB 90.9 MB Passenger RackApp: /var/www/html/projectname
Prawdopodobnie przeoczyłem coś ohydnego, ale to działało dla mnie w przeszłości.
źródło
To byłoby teraz
Lub bardziej kompaktowy
Działa dla projektów szyn 3+.
źródło
rails s -e production
server -e production
na nich biegać ?production
niezmiennie jest to ustawienie domyślne.echo "export RAILS_ENV=production" >> ~/.bash_profile
Jeśli korzystasz z Passenger , domyślnie jest uruchamiany w trybie produkcyjnym, w conf apache:
Jeśli prowadzisz tylko lokalny serwer z kundlem lub webrick, możesz:
lub bash:
w rzeczywistości przesłanianie stałej RAILS_ENV w enviornment.rb powinno być prawdopodobnie ostatnią deską ratunku, ponieważ prawdopodobnie nie pozostanie ustawione (patrz inna odpowiedź, którą udzieliłem na ten temat)
źródło
Jeśli sugestia mipadi nie działa, dodaj to do config / environment.rb
źródło
ENV['RAILS_ENV'] ||= 'production'
można je również zastosować?Zmień zmienną środowiskową
RAILS_ENV
naproduction
.źródło
~/.bashrc
lub~/.bash_profile
po prostuexport RAILS_ENV=production"
źródło
Możesz także przekazać środowisko do skryptu / serwera:
źródło
Spowoduje to uruchomienie serwera za pomocą
RAILS_ENV
='production'
.Oprócz tego musisz ustawić ścieżkę zasobów
production.rb
Bez tego Twoje zasoby nie zostaną załadowane.
źródło
LUB
Domyślnie środowisko to rozwój.
źródło
Jak napisali inni:
rails server -e production
Albo moja osobista ulubiona:
RAILS_ENV=production
rails s
źródło
W szynach 3
Dodanie
Rails.env = ActiveSupport::StringInquirer.new('production')
do application.rb irails s
będzie działać tak samo jakrails server -e production
źródło
Nie jest to dobry sposób na uruchomienie serwera Railsowego w środowisku produkcyjnym przez „produkcję serwera Railsowego -e”, ponieważ wtedy Railsy działają jako aplikacja jednowątkowa i mogą odpowiadać tylko na jedno żądanie HTTP na raz.
Najlepszy artykuł na temat środowiska produkcyjnego dla szyn to Środowiska produkcyjne - Rails 3
źródło
dla domyślnego serwera: produkcja szyn s -e
dla portu serwera costum: szyny s -p [port] -e produkcja, np. produkcja szyn s -p 3002 -e
źródło
Domyślnie serwer działa w środowisku programistycznym:
$ rails s
Jeśli pracujesz w środowisku produkcyjnym:
$ rails s -e production
lub$ RAILS_ENV=production rails s
źródło
Upewnij się, że zrobiłeś poniżej w pliku environment.rb.
Jeśli aplikacja działa w środowisku hostingu współdzielonego lub pasażera phushion, może być konieczne wprowadzenie zmian w pliku .httaccess (w folderze publicznym) i ustawienie trybu jako produkcyjnego.
źródło