2015-10-24 4 views
1

Я успешно развернул приложение для рельсов на VPS, используя сервер Ubuntu с цифровым океаном. Я использую мастера для запуска многих процессов, я могу запустить свой мастер-сервер с foreman start, если я ssh на моем сервере, но когда я закрою терминал, все процессы прекратятся. как заставить его работать непрерывно на фоне?Как запустить сервер Foreman на фоне производства?

благодарит заранее.

ответ

2
  • SSH в удаленной машине
  • старт tmux набрав tmux в оболочку
  • начать процесс, который вы хотите в запущенном tmux сессии
  • отпуск/отсоединять tmux сессии, набрав Ctrl + B и затем D

Теперь вы можете безопасно покинуть удаленную машину, ваш процесс будет работать внутри tmux. Когда вы вернетесь назад и хотите проверить статус своего процесса, вы можете использовать tmux attach для присоединения к сеансу tmux.

Если вы хотите, чтобы несколько сеансов работали бок о бок, вы должны называть каждый сеанс с помощью Ctrl-B и $. Вы можете получить список текущих сеансов, используя tmux list-sessions.

tmux может делать гораздо более сложные вещи, а затем обрабатывать одно окно за один сеанс. Для получения дополнительной информации смотрите man tmux или http://tmux.github.io/. Часто задаваемые вопросы об основных различиях между экраном и tmux доступны здесь.

7

Лучшим вопросом будет «как запустить приложение Rails в качестве сервиса?».

Foreman - отличный инструмент для разработки, но он не предлагает контроль над процессом, автоматический запуск на сервере, вращение журнала или возможность управления процессами с помощью сигналов Unix.

Если ваш Ubuntu равен 15,04, вы установили systemd и должны использовать его вместо этого. Форман может даже экспортировать вашу конфигурацию через foreman export systemd (см. the foreman manpage).
Если ваш Ubuntu старше этого, у вас будет Upstart, который, опять же, Foreman может экспортировать (foreman export upstart).

Использование nohup, screen или tmux для запуска процессов - это ужасный совет и сделает вашу жизнь излишне жесткой даже в краткосрочной перспективе.

+0

Это неправда. Мне нужен мастер в фоновом режиме на моей машине dev. В основном потому, что мне нужен скрипт миграции, который выполняет 'git pull; rake db: migrate', но мне нужны мои postgresql, redis и т. д., пока это происходит. Сценарий bash выполнил бы запуск мастера -f updateonly.yml &; PID = $? ', А затем, когда закончен' kill $ PID', но мастер является глупым и нуждается в экземпляре tmux или screen. Серьезно WTF? как это возможно? (Правило композиции Unix) – Sukima

Смежные вопросы