2010-06-17 28 views
13

Tôi đang cố triển khai ứng dụng đường ray của mình bằng capistrano, nhưng tôi đang gặp một số sự cố khi chạy di chuyển của mình. Trong môi trường phát triển của tôi, tôi chỉ sử dụng sqlite làm cơ sở dữ liệu của mình, nhưng trên máy chủ sản xuất của tôi, tôi sử dụng MySQL.Chạy di chuyển trên máy chủ khi triển khai với capistrano

Vấn đề là tôi muốn di chuyển chạy từ máy chủ của tôi và không phải máy cục bộ của tôi, vì tôi không thể kết nối với cơ sở dữ liệu của mình từ một vị trí từ xa.

Thiết lập máy chủ của tôi: Hộp debian chạy ngnix, hành khách, mysql và kho lưu trữ git.

Cách dễ nhất để thực hiện việc này là gì?

update:

Dưới đây là kịch bản của tôi triển khai: (i thay thế miền thực của tôi với example.com)

set :application, "example.com" 
set :domain, "example.com"   

set :scm, :git  
set :repository, "[email protected]: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" 

Khi tôi chạy nắp triển khai, mọi thứ đang làm việc tốt cho đến khi nó cố gắng để chạy di chuyển. Đây là lỗi tôi nhận được:

 
** [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))) 

Đây là lý do tại sao tôi cần chạy di chuyển từ máy chủ chứ không phải từ máy cục bộ của mình.

Bất kỳ ý tưởng nào?

Trả lời

6

Bạn đã thêm người dùng triển khai của mình làm người dùng mysql trên máy chủ chưa? Tôi nghĩ rằng localhost là máy chủ đề cập đến chính nó không phải máy địa phương của bạn.

Ngoài ra bạn chưa xác định người dùng của bạn trong kịch bản triển khai của bạn:

set :user, "deploy_user_name" 

role :web, domain 
role :app, domain 
role :db, domain, :primary => true 
+0

Vâng, tên người dùng triển khai giống với tên người dùng cục bộ của tôi. Ngoài ra, khi tôi đăng nhập và chạy di chuyển thông qua ssh nó hoạt động tốt. – Pandafox

+0

Hmm. Trên thực tế, lỗi bạn đã đăng nằm trên update_code. Tôi có thể kiểm tra, ứng dụng của bạn thực sự được gọi là example.com, bạn đã triển khai cap: setup và cap deploy: kiểm tra từ máy cục bộ của bạn? example.com chỉ là một cái gì đó bạn đặt cho sự riêng tư ở đây tôi mang nó? – mark

+0

Heh, vâng, tôi đã thay thế miền thực của mình bằng example.com để bảo mật. Mã được triển khai đến máy chủ của tôi tốt, chỉ là capistrano cố gắng chạy di chuyển trên máy cục bộ của tôi chứ không phải trên máy chủ :) – Pandafox

41

Cố gắng thêm

after "deploy", "deploy:migrate" 

trong config/deploy.rb tập tin của bạn. Điều này sẽ chạy một di chuyển trên máy chủ của bạn sau khi triển khai thành công dự án của bạn.

+0

Trong deploy.rb của tôi, tôi có bundle_install nhiệm vụ, vì vậy tôi sử dụng 'sau: bundle_install, "triển khai: di chuyển" ' –

+1

Đã làm cho tôi. Đảm bảo rằng cam kết của bạn được đẩy đến đúng nhánh của kho lưu trữ để nó có hiệu lực. – scarver2

+1

@ denis.peplin Capistrano không làm các gói cho bạn anyways? Tôi đã gỡ cài đặt một gem qua SSH và nó được cài đặt lại tự động. – Besi

Các vấn đề liên quan