我正在尝试使用capistrano部署我的rails应用程序,但是我在运行迁移时遇到了一些问题。在我的开发环境中,我只使用sqlite作为我的数据库,但在我的生产服务器上我使用MySQL。
问题是我希望迁移从我的服务器而不是本地计算机运行,因为我无法从远程位置连接到我的数据库。
我的服务器设置: 一个运行ngnix,passenger,mysql和git存储库的debian盒。
最简单的方法是什么?
更新
这是我的部署脚本:(我用example.com替换了我的实际域名)
set :application, "example.com" set :domain, "example.com" set :scm, :git set :repository, "git@example.com:project.git" set :use_sudo, false set :deploy_to, "/var/www/example.com" role :web, domain role :app, domain role :db, "localhost", :primary => true after "deploy", "deploy:migrate"
当我运行cap deploy时,一切正常,直到它尝试运行迁移。 这是我得到的错误:
** [deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2)) connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2)))
这就是我需要从服务器而不是从本地计算机运行迁移的原因。
有什么想法吗?
答案 0 :(得分:41)
尝试添加
after "deploy", "deploy:migrate"
config / deploy.rb 文件中的。这将在您成功部署项目后在您的服务器上运行迁移。
答案 1 :(得分:7)
您是否已将部署用户添加为服务器上的mysql用户?我认为localhost是服务器本身而不是本地机器。
您还没有在部署脚本中定义用户:
set :user, "deploy_user_name"
role :web, domain
role :app, domain
role :db, domain, :primary => true