zoukankan      html  css  js  c++  java
  • Rails non browser app高级篇-capistrano/daemon部署

    上次谈了如何开发rails的non browser app,本文将谈谈如何部署这类APP的问题

    用于生产环境时,必须要考虑到如何将其部署和运行,最好的办法是让这个app作为daemon运行,并且可以通过capistrano自动运行。

    1、Capistrano的基本用法-这里就不介绍了

    2、让一个app能够daemon运行,首先在script下创建一个文件daemon,内容如下:

    #!/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部署到生产环境,并且在服务器上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、检验:在服务上运行ps -ef|grep test能够看到有test.rb进程

  • 相关阅读:
    错误日志记录代码
    将数组转换成datatable
    C#类头注释
    判断当前页面是否接收到了Get或者Post请求
    HttpRequestUtil类
    WeChatUtil类
    返回上一页
    更改同步异步
    限制只能输入数字
    判断浏览器及版本
  • 原文地址:https://www.cnblogs.com/mobileinternet/p/2573325.html
Copyright © 2011-2022 走看看