Deployment

從 Vagrant Ubuntu/trusty32 部署 mina 失敗

  • January 29, 2015

我是新來的鐵路。整個上午都在嘗試調試這個奇怪的問題。我正在嘗試使用 mina 將我的 rails 應用程序部署到登台伺服器。我的伺服器是執行 Vagrant VM 的 Ubuntu/trusty32 14.04。我要部署的伺服器是 CentOS 6.6 版。這是來自 config/deploy.rb 的部署任務:

task :deploy => :environment do
 deploy do
   invoke :'git:clone'
   invoke :'deploy:link_shared_paths'
   invoke :'bundle:install'
   invoke :'rails:db_migrate'
   invoke :'rails:assets_precompile'
   to :launch do
     queue  "cd #{deploy_to}/#{current_path} && RAILS_ENV=#{rails_env} bundle exec puma -t #{puma_threads} -e #{rails_env} -d -b unix://#{deploy_to}/shared#{socket_file} --pidfile #{deploy_to}/shared#{pid_file}"
     queue "sudo echo -1000 > /proc/`cat #{deploy_to}/shared#{pid_file}`/oom_score_adj"                  
   end
 end
end

這是我得到的錯誤。

彪馬以單一模式啟動

  • 版本 2.11.0 (ruby 2.0.0-p598),代號:Intrepid Squirrel
  • 最小執行緒:0,最大執行緒:5
  • 環境:舞台
  • 惡魔化…

cat:/var/www/staging/shared/tmp/pids/puma.pid:沒有這樣的文件或目錄

cat:/var/www/staging/shared/tmp/pids/puma.pid:沒有這樣的文件或目錄

bash:第 176 行:/proc//oom_score_adj:沒有這樣的文件或目錄

!錯誤:部署失敗。

奇怪的是,如果我刪除queue "sudo echo -1000 > /proc/cat #{deploy_to}/shared#{pid_file}/oom_score_adj"創建 pid 和套接字文件的行。我在想這條線是在 puma 完成守護程序和創建 pid 文件之前執行的。但話又說回來,同樣的腳本在另一台伺服器上也能正常工作。

在兩行之間放置一個隨機睡眠似乎可以解決問題:

queue! "cd #{deploy_to}/#{current_path} && RAILS_ENV=#{rails_env} bundle exec puma -t #{puma_threads} -e #{rails_env} -d -b unix://#{deploy_to}/shared#{socket_file} --pidfile #{deploy_to}/shared#{pid_file}"
queue! "sleep 10"
queue! "sudo echo -1000 > /proc/`cat #{deploy_to}/shared#{pid_file}`/oom_score_adj"

但對更好的解決方案持開放態度:)

引用自:https://serverfault.com/questions/663349