部署 deploy 脚本的问题

sanvi · 2013年09月28日 · 最后由 shawnyu 回复于 2013年10月19日 · 2506 次阅读

我看到 ruby-china 有这行代码,但是他们用的是同一个 unicorn.rb

if ENV["DEPLOY"] == "pre"
  set :deploy_to, "/data/www/#{application}-pre"
else
  set :deploy_to, "/data/www/#{application}"
end
# unicorn.rb 路径
set :unicorn_path, "#{deploy_to}/current/config/unicorn.rb"

那么部署 pre 的时候不担心杀掉原本的进程吗?

路径不同嘛

每个 unicorn 都有自己的进程,各自环境有自己的 pid 文件,不会互相杀进程的。

#2 楼 @lgn21st

listen "/tmp/unicorn.xinplus.sock"

他 listen 的是同一个 sock,也就是说我启动了 pre 就需要把之前的 pro 干掉。还有点不明白的是 pre 的意义在哪?

@lgn21st Uncaught TypeError: Cannot read property 'length' of null app-c801ae3fea21b10950592995069cd126.js:5 顺便报个错,我回复的图片上传似乎不可用

#3 楼 @sanivbyfish 这个在开始重新定义了 root,所以不会有问题

def root
    File.expand_path("../..", __FILE__)
end

#5 楼 @santochancf sock 是同一个啊。。。难道不会像端口那样直接就冲突吗

#7 楼 @santochancf 好吧。。。虽然我还是没能理解

端口相同,URL 不同

#8 楼 @sanivbyfish 可以简单这样理解,文件路径其实是这样的: File.expand_path("../..", FILE) + "/tmp/unicorn.xinplus.sock"

而带 pre 和不带 pre 的是两个不同的目录,所以这也是两个不同的文件,各在各自的目录下,因此不会冲突。

#10 楼 @santochancf 不是我,我实验了一下,都是分别指向了/tmp 下,而不是在项目的目录下,所以 pre 跟 pro 的会有冲突

那么我怎么把 unicorn.rb 里面 listen 的分开呢?难道写 2 个文件?

写两个文件是一种办法,建议你最好确定一下代码: https://github.com/ruby-china/ruby-china/blob/master/config/unicorn.rb 这个应该是没问题的。

杀的是 master,而不是套接字 sock 吧

listen "#{Rails.root}/tmp/unicorn.ruby-china.sock"

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