Rails Capistrano deploy_to路径

时间:2013-08-13 16:30:19

标签: ruby-on-rails deployment capistrano vpn

我正在尝试部署我的rails应用程序,直到现在在Heroku,现在使用Capistrano在DigitalOcean的hostet。我创建了一个“1-Click-Rails-Application”,它创建了一个空白的rails应用程序,所以当我在webbrowser中打开远程服务器时,会显示典型的rails欢迎屏幕(index.html)。当我ssh到远程目录时,rails应用程序的路径是:

/home/rails/
rails目录中的

是典型的rails文件夹,比如控制器等。所以我认为正确的deploy_to路径应该是:

set :deploy_to, "/home/rails/"

我已经看到了很多不同的目录建议,我真的无法弄清楚什么是正确的。我有

set :deploy_to, "var/www/#{application}"

同样,似乎也没有用。

我很高兴我设法将本地应用程序上传到新的vpn服务器而没有任何错误。我想避免使用git repo来节省私人git仓库的额外成本,并直接从我的计算机上推送它。

之后的问题是
cap production deploy:cold

做了很多并且没有任何错误地运行,似乎没有上传任何东西。至少我在服务器上找不到任何“我的”文件。好吧,我很高兴我能做到这一点,但不明白为什么我的配置不起作用。我希望有人能帮帮忙。这是我在config目录下的deploy.rb。 (我正在使用rvm。)

require 'capistrano/ext/multistage'
require "bundler/capistrano"
require "rvm/capistrano"

set :application, "myApp"
set :user, "root"
set :port, 22
set :deploy_to, "home/rails/"
set :repository, "."
set :scm, :none 
set :deploy_via, :copy
set :checkout, :export
set :use_sudo, false
#set :rvm_ruby_string, "ruby-2.0.0p195@#{application}"
set :rvm_type, :user
set :rvm_type, :system
server "xx.xxx.xx.xx", :app, :web, :db, :primary => true

after "deploy", "deploy:migrate"

我正在使用Rails 3.2.13和Ruby 2.0.0。非常感谢!

更新 我最初遵循railscast capistrano部署教程来了解这个问题。因此,我在config文件夹中创建了deploy文件夹,其中包含production.rb和staging.rb。

长话短说,我在服务器上的var / www / xx.xxx.xx.xx / current /目录中找到了“my”rails应用程序。路径在production.rb中指定,如下所示:

server "xx.xxx.xx.xx", :app, :web, :db, :primary => true
set :deploy_to, "/var/www/xx.xxx.xx.xx"

我现在可以将上面的路径更改为/ home / rails,但实际的rails应用程序位于名为current的附加文件夹中。如何编写路径以便没有当前目录?至少不在那里?

2 个答案:

答案 0 :(得分:3)

set :deploy_to, "home/rails/"

正确的方法是:

set :deploy_to, "/home/rails/"

var路径:

set :deploy_to, "/var/www/#{application}"

答案 1 :(得分:1)

我使用最新版本的Capistrano:3.2.1和3.1.0 也许这是修补补丁?

以下是我的文件的相关部分:

的Gemfile:

group :development do
  gem 'capistrano-rails'
end

Capfile:

require 'capistrano/setup'
# Includes default deployment tasks
require 'capistrano/deploy'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }

配置/ deploy.rb

set :deploy_to, '/var/www/wrong_stage_folder'
# make sure this value is ignored.

配置/部署/ staging.rb

set :deploy_to, '/var/www/appname_stage'

配置/部署/ production.rb

set :deploy_to, '/var/www/appname_prod'

运行检查:cap staging deploy:check --trace

INFO [2618043b] Running /usr/bin/env mkdir -pv /var/www/appname_stage/shared /var/www/appname_stage/releases on example.server.com

按预期工作,同样适用于生产。