2012-01-02 8 views
5

Ok, robię swoją pierwszą aplikację ruby. Kto wie, jak przenieść wszystko do "produkcji", jest tak skomplikowany. Do tej pory przedzierałem się przez konfigurację pasażera, uruchamiałem go przy starcie, a następnie uruchomiłem redis na starcie.Jak automatycznie utworzyć bootloadera podczas bootowania?

Moje ostatnie zadanie podczas uruchamiania polega na dodaniu 1 pracownika. W tej chwili muszę ssh i uruchomić polecenie rake rake workers:start. Oczywiście nie jest to dobre, gdy chcę zamknąć ssh ... więc po prostu nie wiem, jak i co to jest następny krok.

Próbowałem skopiować domyślną konfigurację resque do config.ru i po prostu wysadził Pasażera błędami. Spojrzałem również na pulę, którą niektórzy wspomnieli, ale to nad moją głową.

wszystko co muszę zrobić, to dodać 1 pracownika przy starcie. To nie jest tak poważne, że tak prosta aplikacja byłaby najlepsza w tym momencie.

+0

Przy okazji, czy korzystasz z Rails? Lub jakieś inne ramy? –

+0

Sinatra. przepraszam, powinienem wspomnieć, że – Tallboy

+0

Rozumiem, co czujesz.Byłem też przytłoczony :-) –

Odpowiedz

4

W produkcji należy używać god do oglądania procesów. Nawet jeśli ten projekt jest mały, zdecydowanie polecam zainwestować swój czas i go skonfigurować.

Kolejny duży a musi to Capistrano.

Tak więc, jeśli używasz boga, oto config file, który ci pomoże.

Możesz także spróbować zaplanować rake resque:work przy starcie systemu, używając odpowiedniego skryptu w /etc/init.d/ lub /etc/init/ lub innym (w zależności od używanego systemu). Próbowałem tego jakiś czas temu i zrezygnowałem (nie pamiętam dlaczego).

Rozumiem, że moja odpowiedź nie jest dokładnie tym, czego szukasz teraz. Ale wyobraź sobie: jeśli wszystko jest skonfigurowane, wdrażanie następnej wersji jest tak proste, jak uruchomienie rake deploy na komputerze programisty. I zadba o to, by wyciągnąć kod z repozytorium, przeprowadzić migracje, zrestartować pracowników i serwery internetowe, a co nie.

+1

Wiem, że nie jest to odpowiedź, której się spodziewałeś, ale jak mogę to zrobić przy "poprawnym" skrypcie startowym. Obiecuję, że jeszcze bardziej zajrzę się bogiem i capistranem, ale chcę, żeby to działało jako pierwsze. Używam centOS. – Tallboy

+0

Hmm, używam Ubuntu na moich serwerach. Nie wiem o centos, przepraszam. –

+0

Dla ludzi, którzy wierzą, że Bóg jest kimś, kto oddaje pokłon, a nie czymś do użycia, jest to niedopuszczalne rozwiązanie. Lepszą alternatywą będzie monit. – sockmonk

6

Nie używam klejnotu boga, ponieważ (1) widziałem projekt, który był bardzo poruszony złożonością konfiguracji, którą wprowadziłem, i (2) Osobiście bardzo mi się podoba standardowy system Linux (Ubuntu) narzędzia, które obsługują tego rodzaju rzeczy.

Aby rozpocząć robotników Resque na starcie

Mam ten kod w moim pliku /etc/rc.local. Mam wdrożyć użytkownika w systemie:

# Start Resque 
su -l deploy -c "/home/deploy/start-resque-workers" 
su -l deploy -c "/home/deploy/start-resque-webui" 

Następnie w tych skryptach skonfigurować środowisko Ruby i uruchomić zadanie Zgrabiarka:

# Load RVM into a shell session *as a function* 
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then 
    # First try to load from a user install 
    source "$HOME/.rvm/scripts/rvm" 
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then 
    # Then try to load from a root install 
    source "/usr/local/rvm/scripts/rvm" 
else 
    printf "ERROR: An RVM installation was not found.\n" 
fi 

# Use rvm to switch to the default ruby. 
rvm use default 

# Now launch the app 
cd /home/deploy/app-name-here/current 
nohup rake QUEUE=* RAILS_ENV=production environment resque:work & 

Używam tego rodzaju ustanowiony przez lata i jest solidny. Serwery nie ulegają awarii. Nie potrzebuję jeszcze dodatkowego instalowania innego systemu (takiego jak klejnot bożka) do nadzorowania tych innych serwerów.

Dodatkowo używam klejnotu capistrano do obsługi ponownego uruchamiania pracowników podczas wdrażania.

+0

Hej, widzę, że odpowiedziałeś na to prawie 4 lata temu, ale ... Czy zdarzyłoby się, że masz sposób, aby oczyścić pracowników resque ... Używanie ps ax i zabicie pid zabija proces, ale resque nadal utrzymuje je zarejestrowane. – jdkealy

+0

hmm ... Przepraszam, nie mam. Oto moje skrypty resque, jeśli w ogóle jakaś pomoc: https://github.com/asm-products/think-200/tree/master/script – Dogweather

+0

Hej dziękuję za skontaktowanie się z nami! Właśnie to zaimplementowałem wczoraj: https://gist.github.com/jdkealy/a7f817bbb8e568ff38bb Martwiłem się o zabicie serwera, podczas gdy pracownicy resque byli zajęci zadaniem i dodawaniem dowiązania symbolicznego do skryptu Bash, który wykonuje zadanie rake w /etc/rc0.d/ wydaje się z wdziękiem opuszczać pracowników! – jdkealy

Powiązane problemy