Deployment
從 Vagrant Ubuntu/trusty32 部署 mina 失敗
我是新來的鐵路。整個上午都在嘗試調試這個奇怪的問題。我正在嘗試使用 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"
但對更好的解決方案持開放態度:)