Ror - deployment

Szukam jakiegoś prostego poradnika dotyczącego wdrożenia aplikacji ror na serwerze, o ile nginx + passenger nie są trudne o tyle potem zaczynają się schody… capistrano, repozytorium zdalne, skonfigurowanie samej aplikacji ROR na produkcje (baza danych produkcyjna, developerska)…

Chyba że może któryś z kolegów jest z okolic warszawy i byłby chętny się spotkać na “piwo” i pokazać jak całość ugryźć - byłbym baaardzo wdzięczny :wink:

Korzystałem z ich poradnika i udało mi się postawić apkę https://gorails.com/deploy/ubuntu/14.04

1 Like

Pobawiłem się przez weekend trochę w stawianie nginxa+passengera natomiast natrafiłem na problem - co w przypadku gdy nie chce korzystać z capistrano ;/

Na serwerze mam nginxa + moduł passengera + baze danych mysql w wersji deweloperskiej wszystko działa bez problemu, problem pojawia się w wersji produkcyjnej:

Incomplete response received from application

dodatkowo mam jeszcze w różnych miejsach railsów zmienne typu <%= ENV[“SECRET_KEY_BASE”] %>

czy jest jakieś jedno polecenie albo seria ? tak aby przerzucony projekt np. przez ftp można było uruchomić od razu w wersji produkcyjnej ? (podejrzewam że trzeba uruchomić bundla do instalacji gemów, asset precompile do przekompilowania i pewnie jeszcze rake db:migrate <- może coś jeszcze ?

Robiłeś rake secret i dodawałeś to co się tam wygenerowało do secrets.yml?

tak ;/ niestety błąd nadal występuje, w logach zobaczyłem że moja baza produkcyjna nie istnieje więc ją też zrobiłem… błędu jednak się nie pozbyłem - czyżby jedynym rozsądnym wyjściem było korzystanie z capistrano ? ehh…

oba błedy mają te samą przyczynę, sprawdz https://github.com/bkeepers/dotenv

Cześć!
Miałem (i właściwie nadal mam) ten sam problem. Okazuje się, że na necie można znaleźć parę instrukcji jak stworzyć “serwer produkcyjny”, gdzie indziej jak użyć Capistrano do deploymentu, ale nigdzie nie udało mi się znaleźć kompletnego poradnika jak stworzyć całe przykładowe środowisko developerskie oraz produkcyjne. Dobrze byłoby dodać do tego również środowisko staging. Plus informacje jak się po tym wszystkim poruszać: jak używać Capistrano, jak git-a.

Stworzenie ręcznie takiego środowiska zajmuje sporo czasu.

Szkoda byś i Ty tracił tyle czasu co i ja na szukanie informacji, które powinny być łatwo dostępne, więc proponuję byś spróbował wykorzystać to, co udało mi się do tej pory zrobić:

Repo powyżej pozwala całkowicie automatycznie (przynajmniej u mnie :wink: - wersja pre-pre-alpha) stworzyć serwer developerski (vagrant) i bliźniaczy produkcyjny (zwykła wirtualka VirtualBox-a w trybie headless - dostaje swój własny IP i logujesz się tam po ssh)
.
Fajne jest to, że wszystko korzysta z klucza publicznego użytkownika, wszelkie potrzebne hasła generuje automatycznie (nie musisz żadnych pamiętać) i po paru(nastu) minutach dostajesz wszystko gotowe do działania.

Więcej info w pliku README.

Podejrzyj sobie skrypty do “provisioningu” (znacie lepsze słowo?) - trochę roboty było :slight_smile:
(z góry odpowiadam: Chef - NIE chcę, Ansible - na tym etapie jeszcze nie chcę)

Sprawdź czy Ci się przyda - jeśli tak, to dodam instrukcję co do konfiguracji Capistrano (dlaczego nie chcesz go użyć? znakomicie upraszcza deployment).

Chciałbym by w sieci pojawił się poradnik opisujący przykładową konfigurację środowiska dev+prod od A do Z. Jeśli ktoś ma chęci by w tym pomóc, to będzie mi miło.

Co do Twojego problemu:

tak ;/ niestety błąd nadal występuje, w logach zobaczyłem że moja baza
produkcyjna nie istnieje więc ją też zrobiłem… błędu jednak się nie
pozbyłem - czyżby jedynym rozsądnym wyjściem było korzystanie z
capistrano ? ehh…

Capistrano chyba niewiele pomoże. Miałem podobny problem - w moim przypadku wynikał z dwóch przyczyn:

  • stałą ENV[“SECRET_KEY_BASE”] miałem ustawioną w pliku .bashrc użytkownika, ale okazuje się, że Passenger jej nie widzi (powłoka w której działa Passenger nie ładuje pliku .bashrc) - pomogło przeniesienie tego do pliku .profile
  • ruby 2.2 instalowane przez repozytoria BrightBox nie działało mi z Passengerem, ruby kompilowanego ze źródeł również nie udało mi się zmusić do pracy (ale już chyba wiem w czym tkwił problem) - dopiero użycie ruby 2.0 spowodowało, że Passenger zadziałał out-of-the-box

Porada: sprawdź logi passengera (w Ubuntu o ile pamiętam: /var/log/nginx cośtam)

Pozdrowienia

nie wiem czy te posty maja na celu zrażenie do frameworka ludzi jacy na nie trafią?

google: rails ubuntu passenger
dalem link do gema jak w 20 sek ogarnąć ENV nawet dla multi apps

.env nie jest przeznaczony do środowiska produkcyjnego - pierwsza linijka README na git:

Shim to load environment variables from .env into ENV in development.