Rails non browser app高级篇-capistrano/daemon部署
上次談了如何開發(fā)rails的non browser app,本文將談?wù)勅绾尾渴疬@類APP的問題
用于生產(chǎn)環(huán)境時,必須要考慮到如何將其部署和運行,最好的辦法是讓這個app作為daemon運行,并且可以通過capistrano自動運行。
1、Capistrano的基本用法-這里就不介紹了
2、讓一個app能夠daemon運行,首先在script下創(chuàng)建一個文件daemon,內(nèi)容如下:
#!/usr/bin/env ruby
require File.expand_path("http://www.cnblogs.com/config/environment", __FILE__)
require 'daemons'
?
ENV["APP_ROOT"] ||= File.expand_path("#{File.dirname(__FILE__)}/..")
ENV["RAILS_ENV"] ||= "development"
ENV["RAILS_ENV_PATH"] ||= "#{ENV["APP_ROOT"]}/config/environment.rb"
?
script = "#{ENV["APP_ROOT"]}/#{ARGV[1]}"
?
pid_rep = "/tmp/myapp/pids"
begin
FileUtils.mkdir_p(pid_rep)
rescue
puts "pids stored in the diretory: "+pid_rep
end
Dir.chdir Rails.root
Daemons.run(script, dir_mode: :normal, dir: pid_rep)?
3、修改Gemfile,增加一行:
require 'daemons'
4、運行bundle install
5、測試腳本:utils/test.rb
loop
sleep 60
puts "I am awake after 1 minute"
end
6、運行(阻塞當前shell)
script/daemon run utils/test.rb
7、daemon運行
script/daemon start utils/test.rb
8、stop daemon
script/daemon stop utils/test.rb
?
9、通過capistrano部署到生產(chǎn)環(huán)境,并且在服務(wù)器上daemon運行,修改config/deploy.rb,加入:
desc "run utils in daemon"
daemon_script = current_path+'/script/daemon'
production_env = 'RAILS_ENV=production '
namespace :deploy do
? task :utils do
? ? run production_env+daemon_script+" stop utils/test.rb"
? ? run production_env+daemon_script+" start utils/test.rb"
? end
end
10、運行cap deploy:utils
11、檢驗:在服務(wù)上運行ps -ef|grep test能夠看到有test.rb進程
轉(zhuǎn)載于:https://www.cnblogs.com/mobileinternet/archive/2012/07/02/2573325.html
總結(jié)
以上是生活随笔為你收集整理的Rails non browser app高级篇-capistrano/daemon部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp网页设计流量统计代码
- 下一篇: 调用扫描仪的方案