我正在尝试部署我的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的附加文件夹中。如何编写路径以便没有当前目录?至少不在那里?
答案 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
按预期工作,同样适用于生产。