【问题标题】:Rails Capistrano deploy_to pathRails Capistrano deploy_to 路径
【发布时间】:2013-08-13 16:30:18
【问题描述】:

我正在尝试部署我的 rails 应用程序,直到现在 hostet 在 Heroku,现在在 DigitalOcean 使用 Capistrano。我创建了一个“1-Click-Rails-Application”,它创建了一个空白的 Rails 应用程序,所以当我在我的网络浏览器中打开远程服务器时,会显示典型的 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 repo 的额外成本,并直接从我的计算机推送它。问题是,在

cap production deploy:cold

它做了很多并且没有任何错误地运行,似乎没有上传任何东西。至少我在服务器上找不到任何“我的”文件。好吧,我真的很高兴我能走到这一步,但不明白为什么我的配置不起作用。我希望有人能帮帮忙。这是配置目录中的 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/ 目录中找到了“我的”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 的附加文件夹中。我如何编写路径以便没有当前目录?至少没有?

【问题讨论】:

    标签: ruby-on-rails deployment capistrano vpn


    【解决方案1】:
    set :deploy_to, "home/rails/"
    

    正确的做法是:

    set :deploy_to, "/home/rails/"
    

    对于var 路径:

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

    【讨论】:

    • 另外,在运行此命令 'cap production deploy:cold' 时,检查进程是否有任何错误。
    • for 'var' path 是什么意思/我在哪里写这个? 'cap production deploy:cold' 没有任何错误。
    • 在 deploy.rb 中设置 :deploy_to, "/var/www/#{application}"
    • 但这不是“覆盖”之前的 :deploy_to 路径吗?编辑:哦,对不起,我想我误解了你的答案。我必须使用两者中的哪一个?
    • 你能来Skype吗??
    【解决方案2】:

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

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

    宝石文件:

    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 }
    

    config/deploy.rb

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

    config/deploy/staging.rb

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

    config/deploy/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
    

    按预期工作,与生产相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多