2010-04-13 35 views
37

Tôi có một ứng dụng đường ray mà tôi cần triển khai cho 3 máy chủ - machine1.com, machine2.com và machine3.com. Tôi muốn có thể triển khai nó cho tất cả các máy cùng một lúc và mỗi máy riêng lẻ. Ai đó có thể giúp tôi với một tập tin cấu hình Capistrano/công thức nấu ăn? Tất cả nó có nên được deploy.rb hay tôi nên giải mã nó trong machine1.rb, v.v.Triển khai ứng dụng Rails cho nhiều máy chủ bằng Capistrano - Thực tiễn tốt nhất

Tôi nghĩ mình đã đi đúng hướng để nhận được Capistrano để lấy các đối số dòng lệnh, nhưng nó bị nghẹn khi tôi thử thiết lập vai trò trong không gian tên. Tôi sẽ chuyển qua 'hosts = 1,2,3' làm đối số và đặt vai trò: app/web/db thành "machine # {host} .com" sau khi chia nhỏ lệnh và đi vào từng máy chủ lưu trữ | {} ...

Dù sao, ngoài việc tạo 4 tệp deploy.rb khác nhau và đổi tên tệp trước khi chạy giới hạn: triển khai mỗi lần, tôi bị bối rối. Tôi muốn có thể thực hiện những việc sau:

cap deploy:machine1:latest_version_from_svn 
cap deploy:all_machines:latest:version_from_svn 

Chỉ cần không biết tất cả có nên triển khai hay không. Rb chia nhỏ với không gian tên hoặc nếu nó được chia thành nhiều * triển khai **. tập tin rb.

Trả lời

67

Tất cả sẽ xuất hiện trong một tệp. Dưới đây là ví dụ:

set :application, "my-app" 
set :repository, "[email protected]:my-app.git" 
set :keep_releases, 5 
set :deploy_via, :remote_cache 
set :git_enable_submodules, true 
set :scm, :git 
set :user, 'your-user-here' 

set :deploy_to, "/var/www/staging.mydomain.com" 
set :branch, 'staging' 
set :rails_env, 'staging' 

role :web, "machine1.mydomain.com", "machine2.mydomain.com", "machine3.mydomain.com" 
role :app, "machine1.mydomain.com", "machine2.mydomain.com", "machine3.mydomain.com" 
role :db, "db.mydomain.com" 
# ... 

Bạn sẽ thấy chỉ có một máy chủ db được chỉ định. Đây là máy di chuyển sẽ được chạy. Nếu bạn chỉ có một cơ sở dữ liệu (99,9% cơ hội của câu trả lời cho câu hỏi đó là CÓ), thì hãy đảm bảo chỉ cung cấp một câu hỏi.

+1

Rất hữu ích, cảm ơn;] – jkndrkn

+3

hey @Louise, hãy đặt câu trả lời này làm câu trả lời mặc định? – jackyalcine

+1

Bạn sẽ triển khai như thế nào với machine1.mydomain.com (như được nêu trong câu hỏi) –

2

Tôi phải sử dụng cú pháp hơi khác một chút.

role :app, %w{s01.foobaz.com s02.foobaz.com}, user: 'deployer' 
role :web, %w{s01.foobaz.com s02.foobaz.com}, user: 'deployer' 
Các vấn đề liên quan