Thin и sinatra — как остановить / перезапустить? Нет thin.pid

#sinatra #thin

#sinatra #thin

Вопрос:

Я использую thin в качестве сервера для своего приложения Sinatra. Он запускается таким образом:

 thin -C config/environment.yml -R config/config.ru start
  

Где environment.yml есть тонкий материал и config.ru есть общие материалы, которые вы найдете в файле rackup.

Я хотел бы иметь возможность демонизировать (достаточно просто с помощью конфигурационного файла thin), останавливать и перезапускать это так же, как это делается с apache / tomcat / etc.

Когда я пытаюсь thin stop перезапустить или выполнить другие действия, я получаю:

Can't stop process, no PID found in tmp/pids/thin.pid

Действительно, такого файла нет. Я попытался указать файл и местоположение pid (например /tmp/thin.pid , для удобства) в thin configuration yml в разных местах. Все, что это делает, это изменяет местоположение каталога в "no PID found in" сообщении, по-прежнему не создается файл pid.

Есть идеи?

Комментарии:

1. Ваше приложение действительно запущено? Вы худеете с ps ax | grep thin ?

2. Да, приложение запущено, я получаю его с помощью ps и могу подключиться к нему через браузер / curl / что у вас есть. Я запускаю его в настоящее время в screen и, когда я хочу перезапустить, просто screen -r , ctrl c , и перезапускаю вручную. Я хотел бы сделать лучше.

3. Вы пробовали thin -C config/environment.yml stop ?

4. У меня есть, и я получаю это сообщение. Единственное различие между thin stop и thin -C whatever.yml stop заключается в расположении каталога, в котором он должен искать pid. Если указан файл yaml, он будет выглядеть в каталоге, указанном pid: параметром в этом файле. Но в любом случае, насколько я могу судить, thin никогда нигде не записывает pid-файл. Я попытался настроить местоположение, разрешения и т. Д. Не повезло.

5. из вашего вопроса я предполагаю, что у вас есть опция демонизации в вашем конфигурационном файле. Но как насчет указания --daemonize switch тоже?

Ответ №1:

Pid будет создан, когда thin демонизируется, поэтому дважды проверьте свою конфигурацию на daemonize: true наличие опции. Учитывая, что это yaml, пробелы могут привести к сбоям. В качестве альтернативы укажите --daemonize переключатель.

Если расположение вашего pid-файла не задано по умолчанию, вы также должны указать конфигурационный файл при выдаче stop:

 thin -C config/environment.yml stop
  

Комментарии:

1. Я почти уверен, что это должно быть daemonize: true в файле конфигурации (т. Е. Без «d»)