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进程

  • 相关阅读:
    软件构造期末复习考点总结
    设计模式
    怎么写测试策略
    FreeRTOS任务创建、启动调度器、任务切换的过程分析——基于ARM-CotexM3
    Altium Designer 创建集成封装库(.IntLib文件)的方法
    Altium Designer多通道设计的原理与应用实例
    我的编程命名风格
    计算机网络学习笔记
    基于串口通信做my_printf时遇到的坑儿
    git常用命令
  • 原文地址:https://www.cnblogs.com/mobileinternet/p/2573325.html
Copyright © 2011-2022 走看看