2011-11-26 6 views
10

Tôi đang học Ruby on Rails. Hiện tại, tôi chỉ chạy trang web của mình cục bộ với rails server trong OS X Terminal. Những thay đổi nào khi một trang Rails được chạy trên một hộp sản xuất?Chạy trang web Rails: phát triển vs sản xuất

  • Trang web vẫn bắt đầu bằng rails server?
  • Bất kỳ sự khác biệt nào về cách thiết lập db?

Note: Tôi đang chạy Rails 3.

+0

Có thể trùng lặp: http: // stackoverflow.com/questions/1949229/change-a-rails-app-to-production –

+1

@ Đen, với tôi, điều này không giống như một bản sao của câu hỏi bạn đã liên kết. – Andrew

+0

Bạn cần thêm tham số sản xuất 'máy chủ đường ray -e production ' – abhinav

Trả lời

16

Một đường ray ứng dụng có thể chạy trong sản xuất gọi rails server -e production, mặc dù 99% thời gian bạn sẽ được phục vụ trên một cái gì đó giống như hành khách hoặc mỏng thay vì của WEBrick, có nghĩa là có một lệnh khác để khởi động máy chủ. (thin start -e production chẳng hạn)

Đây là một câu hỏi phức tạp, nhưng nơi tốt nhất để bắt đầu tìm hiểu về sự khác biệt sẽ là xem các tệp environment.rb cụ thể. Khi đường ray khởi động, nó bắt đầu với tệp môi trường khớp với môi trường được gọi, nghĩa là nếu bạn bắt đầu nó phát triển, nó bắt đầu bằng cách tải tệp development.rb của bạn hoặc nếu bạn đang sản xuất, nó sẽ tải tệp production.rb. Sự khác biệt trong môi trường chủ yếu là kết quả của những khác biệt này trong các tệp cấu hình môi trường khác nhau.

Về cơ bản nếu ứng dụng Rails 3.1 ở chế độ sản xuất, thì theo mặc định nó sẽ không biên dịch nội dung khi đang di chuyển và rất nhiều bộ nhớ đệm sẽ không xảy ra trong quá trình phát triển. Ngoài ra, khi bạn nhận được thông báo lỗi, chúng sẽ được ghi lại nhưng không được hiển thị cho người dùng, thay vào đó, trang lỗi tĩnh từ thư mục công cộng của bạn sẽ được sử dụng.

Để có được cái nhìn sâu sắc hơn vào điều này, tôi sẽ khuyên bạn nên đọc các đường ray có liên quan dẫn:

Rails Khởi Hướng dẫn: http://guides.rubyonrails.org/initialization.html

Rails Fiewall: http://guides.rubyonrails.org/configuring.html

2

Có hai tình huống bạn có thể sử dụng từ "sản xuất" ở đây. Một trong số họ đang chạy máy chủ ở chế độ sản xuất. Bạn có thể thực hiện việc này cục bộ bằng cách,

RAILS_ENV=production ./script/server 

Cấu hình này được chọn từ config/environment/production.rb. Hãy thử so sánh tệp này với config/environment/development.rb. Chỉ có những khác biệt nhỏ như lớp đệm. Chế độ phát triển giúp dễ dàng hơn để nó sẽ phản hồi mọi thay đổi bạn thực hiện ngay lập tức. Thêm vào đó có hai cơ sở dữ liệu khác nhau (theo mặc định) sẽ được sử dụng cụ thể là yourproject_development và yourproject_production nếu bạn chọn chạy máy chủ của bạn ở một trong hai chế độ này.

Mặt khác, việc triển khai đường ray vào hộp sản xuất là điều gì đó khác biệt. Bạn sẽ cần phải chọn máy chủ của bạn một cách cẩn thận. Bạn có thể phải đối phó với một kịch bản triển khai có thể là capistrano. Bạn cũng có thể cần cân bằng tải như netgear. Cơ sở dữ liệu cũng có thể yêu cầu xem xét sâu sắc như mong đợi kích thước, phân cụm chính/phụ, v.v.,

Lưu ý: Tôi chưa bao giờ sử dụng Rails 3. Câu trả lời này thiên về 2.3.x.