2012-07-24 221 views
6

我试图制作一个可执行文件,它通过Thin作为守护进程启动一个Sinatra应用程序。 我使用这个代码来调用薄与西纳特拉应用:Thin :: Server#守护进程立即退出

#!/usr/bin/env ruby 

require 'thin' 
require 'app.rb' 

server = ::Thin::Server.new('127.0.0.1', 9999, App) 
server.log_file = 'tmp/thin.log' 
server.pid_file = 'tmp/thin.pid' 
server.daemonize 

这里是日志输出我得到的,当我执行脚本:

>> Writing PID to tmp/thin.pid 
>> Exiting! 

服务器启动正常,当我做

server.start 

任何建议如何追踪为什么它立即退出?

+0

1是TMP文件夹可写? 2.服务器对象创建部分中的App或App.new? – Kashyap 2012-07-25 04:39:37

回答

4

使用daemonize只会使脚本成为守护程序,并不会真正启动服务器。你仍然需要调用start算账:

server.daemonize 
server.start 

日志文件:

>> Writing PID to tmp/thin.pid 
>> Thin web server (v1.4.1 codename Chromeo) 
>> Maximum connections set to 1024 
>> Listening on 127.0.0.1:9999, CTRL+C to stop 
+0

工程就像一个魅力。非常感谢! – benzimmer 2012-08-15 09:07:38

+0

这是一个相当古老的帖子,但我没有明确地调用'server.daemonize' – poorva 2016-07-15 09:41:21