#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»)