我正在尝试部署我的 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 的附加文件夹中。我如何编写路径以便没有当前目录?至少不在那里?