Homeland 部署 ruby-china 到服务器:unicorn pid 文件找不到?

maol · 2011年12月01日 · 最后由 siuying 回复于 2012年02月04日 · 3899 次阅读

用 capistrano 部署真折腾啊。好不容易到了这一步卡住了:

[err :: 192.168.1.2] cat:
*** [err :: 192.168.1.2] /home/fool/www/ruby-china/current/tmp/pids/unicorn.pid
*** [err :: 192.168.1.2] : No such file or directory
*** [err :: 192.168.1.2] 
*** [err :: 192.168.1.2] kill: 1:
*** [err :: 192.168.1.2] Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
*** [err :: 192.168.1.2] kill -l [exitstatus]
*** [err :: 192.168.1.2] 
    command finished in 41ms

看了下 config/unicorn.rb 的源码 似乎要 kill 掉原先运行的 unicorn.对于升级部署当然是必要的。 可是这个全新的部署怎么办呢?我哪里弄错了吗?

你自己 ssh 到服务器上去看一看,或者自己手动执行 Capistrano 执行过的命令,弄明白到底是因为 pid 不存在造成的问题,或者是 cap deploy 没有预先判断 unicorn 是否已经在运行,可能是 deploy.rb 的 bug,你需要手动启动一下,建议 fix 调,然后提交个 pull request 给 ruby-china 吧 :-)

第一次会这样的吧,可以先更新代码,然后手动 start

cap deploy:update deploy:start

的确需要先运行: cap delpoy:start 才能够完整的运行完整个 cap deploy 而且那个 unicorn.rb 文件来自 shared 目录的虚拟链接,那个目录里面啥都没有。所以之前只好把 deploy 里面的 run "ln -sf #{deploy_to}/shared/config/unicorn.rb #{deploy_to}/current/config/" 这行注释掉了。

顺便把 Capistrano 摸摸,有好处。

是不是 tmp 目录没有建立阿,手动建一个

其實錯誤很明顯了,有目錄未建立。這是因為你沒有設置好 deploy 環境。

有沒有在第一次 deploy 之前行這指令?

cap deploy:setup

這個指令會建立 capistrano 需要的目錄,即是 release, shared, shared/system, shared/log, shared/pids。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号