使用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 应用程序的模板 Capistrano 3 Rails 配置概述这是部署带有的Ruby on Rails 应用程序的示例配置,包括使用Unicorn和Sidekiq后台员工部署的零停机。...
使用 Capistrano 部署 Rails Capistrano 研讨会的示例应用程序Ubuntu 14.04 - Capistrano - Nginx + 乘客1. 创建 droplet(不要忘记 ssh 密钥) ssh-keygen -t rsa -C " lerolero@gmail.com "pbcopy < ~ /.ssh/...
Capistrano 3兼容任务的集合,使基于Rails和Sinatra的应用程序的部署更加容易。 安装 将此行添加到应用程序的Gemfile中: gem 'capistrano-cookbook', require: false, group: :development 然后执行: $ bundle ...
hapistrano:用于Haskell应用程序的部署工具,例如Capistrano for Rails
您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明… 如果您不打算运行rake doc:app请随意使用其他标记语言。
rails语言api项目 使用grape和swagger的简单api项目 使用devise做简易的用户登录需求,使用capistrano部署
Capistrano PostgreSQL插件在部署Rails应用程序时抽象并加快了PostgreSQL常见管理任务。 以下是此插件为您的capistrano部署过程所做的特定操作: 在服务器上创建一个新的PostgreSQL数据库和数据库用户 在所有发行...
moonshine, 简单的Rails 部署和配置管理 15分钟部署 Rails 2,3或者应用 MoonshineMoonshine的Rails 部署和配置管理正确完成。通过利用 Capistrano 和 puppet,Moonshine允许你在 15分钟内拥有一个工作应用服务器,...
capistrano-asg的编写旨在简化Rails应用程序到AWS AutoScale组的部署。 capistrano-asg将: 将代码部署到连接到给定AutoScale组的每个正在运行的实例 部署后,从一个正在运行的实例中创建一个AMI 将带有新代码的...
:warning: 该项目不再维护... Capistrano非常适合部署Rails应用程序,但是所有前提条件(如Nginx和PostgreSQL)呢? 您的VPS上是否配置了防火墙? 您是否安装了最新的操作系统安全更新? HTTPS工作正常吗? capistran
使用Capistrano 3将Rails应用程序部署到 。 支持许多数据库,ruby版本和ruby Web服务器。 注意:对于新的uberspace(在uberspace版本7平台上),似乎会出现一些错误。 修复这些问题的任何帮助均受到高度赞赏。 ...
用Ruby编写的远程服务器自动化和部署工具。 Capistrano使用特定于在()服务器上... Capistrano使用SSH进行部署。 因此,您必须能够从部署系统到目标系统进行SSH(最好使用密钥和ssh-agent),Capistrano才能正常工作。
capistrano-nginx-unicorn, 从 Capistrano 创建和管理nginx unicorn配置 Capistrano-Nginx-Unicorn用于配置和管理nginx unicorn的Capistrano 任务 Rails 应用程序的零停机部署的组合。将 Capistrano 任务提供给:...
Session管理、用户登录和认证系统,XML和ActiveResource,后台处理和ActionMaile,测试和specs(包括RSpec on Rails和Selenium),安装、管理、编写插件,Rails的生产部署、配置和Capistrano等内容。 《Rails之道》...
Ruby on Rails + Capistrano 示例此示例演示了如何使用 Capistrano 将 Ruby on Rails 应用程序设置为持续集成和部署到 DigitalOcean。 有关更详细的文档,请参阅 Shippable 的持续部署部分: : 此示例是为 Shippable...
高度可配置的 Rails 使用通用的 gem 依赖管理、capistrano 和 Web 服务器设置进行部署。 概述 这个模块的目标是提供一个全面的 Rails 部署秘诀,它可以使用高级选项覆盖广泛的用例,而不是简单地向调用者公开所有...
Capistrano火箭聊天。Capistrano rocket.chat webhook宝石。安装将此行添加到您的应用程序的Gemfile中: gem 'capistrano-rocket-chat' 然后执行: $ bundle或将其自己安装为: $ gem install capistrano-rocket-...
使用Capistrano扮演将初始代码部署到UCLA库Samvera / Hyrax系统的角色 要求 该角色负责处理从git存储库到Rails应用程序服务器的首次部署hyrax项目代码。 请注意以下假设: Rails应用程序服务器将Red Hat ...
尽管Capistrano本身是用Ruby编写的,但可以轻松地用于部署任何语言或框架的项目,无论是Rails,Java还是PHP。 安装完成后,Capistrano为您提供了一个cap工具,可从命令行轻松地执行部署。 $ cd my-capistrano-...
Capistrano v3 的一项任务,它向您部署的 rails 应用程序添加一个简单的 html 页面以显示部署的详细信息。 应用 分支/标签 部署时间 部署者 scm 修订 发布时间戳 安装 将此行添加到应用程序的 Gemfile 中: gem '...