使用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是一个强大的自动化部署工具,常用于Ruby on Rails项目的部署。它允许开发者通过简单的命令行接口执行复杂的任务,如代码同步、服务器配置和数据库迁移等。`capistrano-rails-console`是针对Capistrano的...
使用 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 ...
您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明… 如果您不打算运行rake doc:app请随意使用其他标记语言。
《再次发一本部署rails的书》是一本专注于Rails应用部署实践的书籍,旨在帮助开发者们理解和掌握将Rails项目上线到生产环境的全过程。Rails是Ruby编程语言的一个热门Web开发框架,以其“约定优于配置”(Convention ...
Capistrano PostgreSQL插件在部署Rails应用程序时抽象并加快了PostgreSQL常见管理任务。 以下是此插件为您的capistrano部署过程所做的特定操作: 在服务器上创建一个新的PostgreSQL数据库和数据库用户 在所有发行...
moonshine, 简单的Rails 部署和配置管理 15分钟部署 Rails 2,3或者应用 MoonshineMoonshine的Rails 部署和配置管理正确完成。通过利用 Capistrano 和 puppet,Moonshine允许你在 15分钟内拥有一个工作应用服务器,...
hapistrano是一款专门为Haskell应用程序设计的部署工具,它的出现是为了提供类似Rails社区中Capistrano的功能。Capistrano在Ruby on Rails开发中扮演着重要角色,它简化了项目的部署流程,使得开发者能够通过命令行...
在部署Rails应用时,还需要考虑性能优化,比如启用HTTP缓存,调整Nginx的连接超时时间,配置Rails应用的线程池大小,以及使用如 unicorn 或 puma 这样的多进程或多线程服务器。 7. **部署工具**: 为了自动化部署...
capistrano-asg的编写旨在简化Rails应用程序到AWS AutoScale组的部署。 capistrano-asg将: 将代码部署到连接到给定AutoScale组的每个正在运行的实例 部署后,从一个正在运行的实例中创建一个AMI 将带有新代码的...
在本项目中,Capistrano被用来自动化部署Rails应用到服务器,大大提高了开发团队的效率。 总结来说,这个"rails+grape+swagger+devise+capistrano"的简单融合示例展示了一个完整的、功能齐全的API项目架构。Rails...
**标题解析:** "使用Mina轻松部署Rails(而且确实非常快!)" 这个标题指出,我们将探讨如何利用Mina工具高效且迅速地部署Ruby on Rails应用。Mina是一个轻量级、基于任务的部署工具,它允许开发者以SSH协议在远程...
:warning: 该项目不再维护... Capistrano非常适合部署Rails应用程序,但是所有前提条件(如Nginx和PostgreSQL)呢? 您的VPS上是否配置了防火墙? 您是否安装了最新的操作系统安全更新? HTTPS工作正常吗? capistran
使用Capistrano 3将Rails应用程序部署到 。 支持许多数据库,ruby版本和ruby Web服务器。 注意:对于新的uberspace(在uberspace版本7平台上),似乎会出现一些错误。 修复这些问题的任何帮助均受到高度赞赏。 ...
Rails使用ActiveRecord作为ORM,它使得Ruby类可以直接与数据库表进行交互。在这个项目中,`User`和`Image`模型可能会与数据库中的相应表关联,通过定义属性和关系,如`has_many :images`表示一个用户可以拥有多个...
7. 部署与运维:如使用Capistrano部署Rails应用,Nginx和Passenger的配置。 Ruby社区活跃,拥有丰富的第三方库(Gems)和广泛的文档资源,如RubyDoc和Stack Overflow,为学习和解决问题提供了便利。通过Ruby5的学习...
用Ruby编写的远程服务器自动化和部署工具。 Capistrano使用特定于在()服务器上... Capistrano使用SSH进行部署。 因此,您必须能够从部署系统到目标系统进行SSH(最好使用密钥和ssh-agent),Capistrano才能正常工作。
**Ruby-Capistrano:基于Ruby、Rake和SSH的部署自动化工具** Capistrano是一款强大的、开源的部署自动化工具,它主要由Ruby语言...对于开发团队来说,使用Capistrano可以极大地提高部署的效率和可靠性,降低运维成本。