`

使用Capistrano部署rails

 
阅读更多

使用Capistrano部署rails

 

gem

    gem 'capistrano'

    # Capistrano RVM integration

    gem 'rvm-capistrano'

 

本地服务器

rails服务器

svn服务器

 

通过本地脚本部署应用到rails服务器

1)本地安装capistrano

gem install capistrano 

 

2)检查安装是否有效

cap -V  #列出版本

 

3)开始工作

进入本地 rails工程根目录执行

 

capify .  

 这个命令会生成两个文件,一个是Capfile文件(启动脚本),在应用的根目录下,另一个是deploy.rb文件(配置文件),在应用的config目录下

 可以用cap -T 查看所有task, cap -e deploy 解释deploy任务的详情 。

 

4)修改config/deploy.rb文件

       配置参数:

      application:应用名。

  repository:版本管理系统的链接URL。

  web:web服务器名列表。

  app:应用服务器列表。

  db:数据库服务器列表。

  user:ssh用户名。

  deploy_to:应用部署路径。

  如果你的svn链接需要用户名和密码,可以通过svn_username和svn_password配置。

  除了setup和deploy,缺省支持的命令主要有:

  disable_web:生成maintenance.html,你的系统需要能够自检测这个文件。

  enable_web:删除maintenance.html。

  update_code:和版本管理器做代码同步。

  rollback_code:如果部署完发现有问题,可以用这个命令换回上一个。

  restart:重启,其实就是调用了reaper。

  migrate:在服务器端运行rake RAILS_ENV=#{rails_env} migrate。

  deploy:其实就是update_code+symlink+restart。

  deploy_with_migrations:update_code+migrate+symlink+restart。

  rollback: rollback_code + restart。

 

===================================================

示例: 

set :application, "myapp"     #项目名称

set :repository, "git@git.githup.com:myapp.git"     ##仓库地址

set :scm, "git"      ##git clone

set :scm_verbose, true

set :branch, "master"

set :deploy_to, "/var/www/#{application}" ## 发布机器的路径

set :user, "sunyw" ##以**用户发布

set :use_sudo, false ## 不使用sudo

set :domain, '192.168.1.115'

##如果你的svn链接需要用户名和密码,可以通过svn_username和svn_password配置

 

role :app, domain ##app 应用服务器的IP

role :web, domain ##web web服务机器IP

role :db,  domain, :primary => true ##DB数据库机器IP

 

# if you want to clean up old releases on each deploy uncomment this:

# after "deploy:restart", "deploy:cleanup"

 

# if you're still using the script/reaper helper you will need

# these http://github.com/rails/irs_process_scripts

 

# If you are using Passenger mod_rails uncomment this:

namespace :deploy do

   task :start do

 

   end

   task :stop do

 

   end

   #task :restart, :roles => :app, :except => { :no_release => true } do

   #  run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"

   #end

end

 

 

namespace :bundler do

  desc "Install for production"

  task :install, :roles => :app do

    run "cd #{deploy_to} && bundle install"

  end

 

end

after 'deploy:update_code', 'bundler:install'

 

===============================================

 

# RVM bootstrap
$:.unshift(File.expand_path("~/.rvm/lib"))
require 'rvm/capistrano'
set :rvm_ruby_string, 'ruby-1.9.2-p290@rails313'#这个值是你要用rvm的gemset。名字要和系统里有的要一样。
set :rvm_type, :user # Don't use system-wide RVM
#这个不能少,否则部署不了。

#下面的部署信息,应该都很清楚吧。
#some parameter setting
  set :host,server_name#set your server name
  set :port_number, server_port#set your server port
  set :rails_env, rails_env
  
  # main details
  set :application, application_name
  role :app, "#{host}"
  role :web, "#{host}"
  role :db,  "#{host}", :primary => true

  # server details
#  default_run_options[:pty] = true
  set :use_sudo, false
  set :user, user_name
  if user_pw.nil?
    ssh_options[:keys] = %w(./lib/dsa_ssh_key)
  else
    set :password, user_pw
  end
  set :deploy_to, "#{deploy}/#{application}"#set your application path
  
  
  # repo details use svn to manage code
  set :repository,  svn_repo
  set :scm, :subversion
  set :deploy_via, :export
  set :scm_username, 'username'
  set :scm_password, 'password'
  set :runner, nil
  
  # runtime dependencies
  depend :remote, :command, "monit"
  depend :local, :command, "svn"
  depend :remote, :gem, "bundler"

  # tasks
  namespace :deploy do
    task :start, :roles => :app do
      run "touch #{current_path}/tmp/restart.txt"
    end
  
    task :stop, :roles => :app do
      # Do nothing.
    end
  
    desc "Restart Application"
    task :restart, :roles => :app do
      run "touch #{current_path}/tmp/restart.txt"
    end
  end
  
  namespace :bundler do
    desc "Install for production"
    task :install, :roles => :app do
      run "cd #{release_path} && bundle install"
    end
  
  end
  after 'deploy:update_code', 'bundler:install'

 

 

开始部署

cap deploy:setup

初始化一些目录,在production服务器上。

 

cap deploy

可能出现的问题,根据提示安装就可以了。

 

数据迁移

cap deploy:migrate  

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    capistrano-3-rails-template, 使用 Capistrano 3部署 Rails 应用程序的模板.zip

    capistrano-3-rails-template, 使用 Capistrano 3部署 Rails 应用程序的模板 Capistrano 3 Rails 配置概述这是部署带有的Ruby on Rails 应用程序的示例配置,包括使用Unicorn和Sidekiq后台员工部署的零停机。...

    capistrano-rails-console:Capistrano插件,它添加了远程Rails控制台和dbconsole

    Capistrano是一个强大的自动化部署工具,常用于Ruby on Rails项目的部署。它允许开发者通过简单的命令行接口执行复杂的任务,如代码同步、服务器配置和数据库迁移等。`capistrano-rails-console`是针对Capistrano的...

    capistrano-workshop:Capistrano 研讨会的示例应用程序(Nginx + 乘客)

    使用 Capistrano 部署 Rails Capistrano 研讨会的示例应用程序Ubuntu 14.04 - Capistrano - Nginx + 乘客1. 创建 droplet(不要忘记 ssh 密钥) ssh-keygen -t rsa -C " lerolero@gmail.com "pbcopy < ~ /.ssh/...

    capistrano-cookbook:使用Capistrano 3部署Rails和Sinatra应用程序时减少样板任务

    Capistrano 3兼容任务的集合,使基于Rails和Sinatra的应用程序的部署更加容易。 安装 将此行添加到应用程序的Gemfile中: gem 'capistrano-cookbook', require: false, group: :development 然后执行: $ bundle ...

    deploy_test:了解如何使用Capistrano将Rails部署到Ubuntu

    您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明… 如果您不打算运行rake doc:app请随意使用其他标记语言。

    再次发一本部署rails的书

    《再次发一本部署rails的书》是一本专注于Rails应用部署实践的书籍,旨在帮助开发者们理解和掌握将Rails项目上线到生产环境的全过程。Rails是Ruby编程语言的一个热门Web开发框架,以其“约定优于配置”(Convention ...

    capistrano-postgresql:设置用于Capistrano Rails应用程序部署的Postgresql

    Capistrano PostgreSQL插件在部署Rails应用程序时抽象并加快了PostgreSQL常见管理任务。 以下是此插件为您的capistrano部署过程所做的特定操作: 在服务器上创建一个新的PostgreSQL数据库和数据库用户 在所有发行...

    moonshine, 简单的Rails 部署和配置管理 15分钟部署 Rails 2,3或者应用.zip

    moonshine, 简单的Rails 部署和配置管理 15分钟部署 Rails 2,3或者应用 MoonshineMoonshine的Rails 部署和配置管理正确完成。通过利用 Capistrano 和 puppet,Moonshine允许你在 15分钟内拥有一个工作应用服务器,...

    hapistrano:用于Haskell应用程序的部署工具,例如Capistrano for Rails

    hapistrano是一款专门为Haskell应用程序设计的部署工具,它的出现是为了提供类似Rails社区中Capistrano的功能。Capistrano在Ruby on Rails开发中扮演着重要角色,它简化了项目的部署流程,使得开发者能够通过命令行...

    rails 部署 nginx

    在部署Rails应用时,还需要考虑性能优化,比如启用HTTP缓存,调整Nginx的连接超时时间,配置Rails应用的线程池大小,以及使用如 unicorn 或 puma 这样的多进程或多线程服务器。 7. **部署工具**: 为了自动化部署...

    capistrano-asg:使用capistrano部署时自动创建新的AMI

    capistrano-asg的编写旨在简化Rails应用程序到AWS AutoScale组的部署。 capistrano-asg将: 将代码部署到连接到给定AutoScale组的每个正在运行的实例 部署后,从一个正在运行的实例中创建一个AMI 将带有新代码的...

    rails+grape+swagger+devise+capistrano 简单融合示例

    在本项目中,Capistrano被用来自动化部署Rails应用到服务器,大大提高了开发团队的效率。 总结来说,这个"rails+grape+swagger+devise+capistrano"的简单融合示例展示了一个完整的、功能齐全的API项目架构。Rails...

    使用Mina轻松部署Rails(而且确实非常快!)

    **标题解析:** "使用Mina轻松部署Rails(而且确实非常快!)" 这个标题指出,我们将探讨如何利用Mina工具高效且迅速地部署Ruby on Rails应用。Mina是一个轻量级、基于任务的部署工具,它允许开发者以SSH协议在远程...

    capistrano-mb:[未维护] Capistrano任务,用于从头开始将Rails部署到Ubuntu 16.04和18.04

    :warning: 该项目不再维护... Capistrano非常适合部署Rails应用程序,但是所有前提条件(如Nginx和PostgreSQL)呢? 您的VPS上是否配置了防火墙? 您是否安装了最新的操作系统安全更新? HTTPS工作正常吗? capistran

    capistrano-uberspace:使用Capistrano 3将您的Rails应用程序部署在uberspace上

    使用Capistrano 3将Rails应用程序部署到 。 支持许多数据库,ruby版本和ruby Web服务器。 注意:对于新的uberspace(在uberspace版本7平台上),似乎会出现一些错误。 修复这些问题的任何帮助均受到高度赞赏。 ...

    Rails项目源代码

    Rails使用ActiveRecord作为ORM,它使得Ruby类可以直接与数据库表进行交互。在这个项目中,`User`和`Image`模型可能会与数据库中的相应表关联,通过定义属性和关系,如`has_many :images`表示一个用户可以拥有多个...

    ruby5

    7. 部署与运维:如使用Capistrano部署Rails应用,Nginx和Passenger的配置。 Ruby社区活跃,拥有丰富的第三方库(Gems)和广泛的文档资源,如RubyDoc和Stack Overflow,为学习和解决问题提供了便利。通过Ruby5的学习...

    Capistrano:远程多服务器自动化工具-开源

    用Ruby编写的远程服务器自动化和部署工具。 Capistrano使用特定于在()服务器上... Capistrano使用SSH进行部署。 因此,您必须能够从部署系统到目标系统进行SSH(最好使用密钥和ssh-agent),Capistrano才能正常工作。

    Ruby-Capistrano基于RubyRake和SSH构建的部署自动化工具

    **Ruby-Capistrano:基于Ruby、Rake和SSH的部署自动化工具** Capistrano是一款强大的、开源的部署自动化工具,它主要由Ruby语言...对于开发团队来说,使用Capistrano可以极大地提高部署的效率和可靠性,降低运维成本。

Global site tag (gtag.js) - Google Analytics