多个独angular兽/ Rails应用程序,Nginx,一个用户

  1. 我使用以下独angular兽configuration成功部署了一个使用Capistrano,Unicorn,Nginx的Rails应用程序:

     env = ENV [“RAILS_ENV”] ||  “发展”
    
     worker_processes 4
    
    听“/tmp/app_one.socket”,:backlog => 64
    
     preload_app true
    
    超时60
    
     pid“/tmp/unicorn.app_one.pid”
    
    如果env ==“生产”
       working_directory“/ home / single_user / app_one / current”
    
      用户'single_user'
    
       shared_pa​​th =“/ home / single_user / app_one / shared”
    
       stderr_path“#{shared_pa​​th} /log/unicorn.stderr.log”
       stdout_path“#{shared_pa​​th} /log/unicorn.stdout.log”
    结束
    
     before_fork do | server,worker |
      如果定义?(ActiveRecord :: Base)
         ActiveRecord的:: Base.connection.disconnect!
      结束
    
       old_pid =“/tmp/unicorn.app_one.pid.oldbin”
      如果File.exists?(old_pid)&& server.pid!= old_pid
        开始
           Process.kill(“QUIT”,File.read(old_pid).to_i)
        救援Errno :: ENOENT,Errno :: ESRCH
           # 已经死了
        结束
      结束
    结束
    
     after_fork do | server,worker |
      如果定义?(ActiveRecord :: Base)
        的ActiveRecord :: Base.establish_connection
      结束
    结束
    
  2. 在同一个single_user ,我添加了第二个Rails应用程序,第二个Nginx虚拟服务器,并使用完全相同的Unicornconfiguration,在所有适当的位置app_tworeplaceapp_one

  3. 我的第二个应用程序部署得很好,但现在我无法部署应用程序。 /tmp/unicorn.app_one.pid不存在,但该网站仍然正常工作( top显示10个进程按预期)。 但是/tmp/app_one.socket确实存在,这使我无法手动启动Unicorn。

那么这是适当的做法,在同一个用户下运行多个Rails / Unicorn / Nginx吗? 我在部署过程中是否引起了某种冲突? 我应该如何继续进行,而不会中断正在使用中的app_one

为什么不使用特定于应用程序的tmp目录,并将unicorn.pid放到那里,如“#{working_directory} /tmp/unicorn.pid”。 同样,对于任何特定于应用程序的文件,如套接字 如果您不想将其放在working_directory中,请使用shared_pa​​th。 将app1中的所有内容都保存在app1特定的位置,以及与app2特定的目录中的app2相关的所有内容。