部署應用程序的NodeJS我開發基於的NodeJS,PM2項目,Capistrano的3與PM2和Capistrano的
與停機時間的問題,而面對與Capistrano的部署節點的應用程序。
deploy.rb:
set :linked_dirs, ['node_modules', 'logs']
set :linked_files, ['ecosystem.json']
set :npm_flags, '--silent --no-spin'
before 'deploy:updated', 'assets:upload'
after 'deploy:updated', 'assets:webpack'
after 'deploy:publishing', 'pm2:restart'
資產:上傳 - 建立JS和CSS文件,並上傳到CDN。構建使用Webpack執行,因此它創建webpack-assets.json。
資產:webpack - 將webpack-assets.json上傳到prod服務器。的WebPack-assets.json由節點使用來獲得精確的資產名稱,因爲它包含哈希:
task :webpack do
run_locally do
roles(:web).each do |host|
execute :rsync, '-rvzu', "themes-assets.json", "#{host.user}@#{host.hostname}:#{fetch(:release_path)}"
execute :rsync, '-rvzu', "webpack-assets.json", "#{host.user}@#{host.hostname}:#{fetch(:release_path)}"
end
end
end
PM2:重啓 - 應該執行零時間重裝。但事實上,我正在倒計時1秒。如果我獨立執行此任務,則不會停機。
def restart_app
within current_path do
execute :pm2, :startOrRestart, fetch(:deploy_to) + '/shared/ecosystem.json'
end
end
PM2日誌顯示以下錯誤
Process with pid 123169 still not killed, retrying...
本教程可能會幫助您:http://pm2.keymetrics.io/docs/tutorials/capistrano-like-deployments – Unitech