Aplikacja w trybie daemona na innym porcie

Witam.

Mam aplikację postawioną na WeBrick i chciałbym ją odpalić na innym porcie (nie 3000) w trybie daemona. Wchodze na serwer za pomocą putty i używam takiego polecenia

rails server -d -p 3001 --pid tmp/pids/server1.pid

Niestety w odpowiedzi dostaje:

=> Booting WEBrick
=> Rails 4.0.4 application starting in development on http://0.0.0.0:3001
=> Run rails server -h for more startup options
[root@app1 projekt_1]#

i aplikacji nie ma w procesach. Bez -d działa ale zależy mi żeby aplikacja po wyłączeniu putty działała.
Czy da sie to jakoś zrobić ?

Dziękuja za wszelkie sugestie.

Nie wiem dlaczego nie działa opcja -d, ale zawsze możesz spróbować dodać ampersand na końcu:
rails server -p 3001 --pid tmp/pids/server1.pid &

A w jakimś szczególnym celu ustawiasz inny niż defaultowy pid?

Ponieważ na 3000 działa już inna aplikacja.

Z & po wyłączeniu konsoli jest to samo.

pytam o pid a nie o port - spróbuj z defaultowym (bez tej opcji, jeśli nie jest do czegoś szczególnego potrzebna)

Bez tego dostaje “A server is already running.”

Czy to nie jest sprzeczne?

W procesach mam tą aplikacje która dziala na porcie 3000, a ja chce włączyc ja na 3001 i ta na 3001 nie może miec tego samego pid’a co ta na 3000, dlatego podejrzewam że jest “A server is already running”.

spróbuj drugi server tak:
nohup rails s -p 3001 -P tmp/pids/server2.pid &

1 Like

Działa. Serdeczne dzięki. :smile:

Musisz podać pełną ścieżkę do pidfile’a:

bin/rails server --daemon --port 3001 --pid /Users/smefju/tmp/webrick/tmp/pids/server.pid

foo & spowoduje, że komenda zostanie wykonana w tle. Proces, który ją reprezentuje jest “potomny” względem procesu shella, który z kolei jest powołany w momencie zalogowania przez putty (ssh). Kiedy zamykasz putty (robisz np exit), proces shella zostaje unicestwiony wraz z procesami potomnymi (dostają one sygnał SIGHUP). nohup powoduje przechwycenie tego sygnału. Imho odpalanie serwera w ten sposób nie jest dobrym podejściem.