2011-09-02 33 views
11

có cách sạch sẽ, thanh lịch để triển khai trang Bảo trì trong ứng dụng Heroku không? Vì vậy, nếu một cái gì đó phá vỡ bạn có thể rất dễ dàng chuyển một chuyển đổi và trang bảo trì đi lên cho tất cả các yêu cầu? Tốt nhất là một cách không yêu cầu đẩy?Cách thông minh để triển khai trang Bảo trì trong ứng dụng Heroku là gì?

Ý tưởng? Cảm ơn

+0

http://stackoverflow.com/questions/2244263/capistrano-to-deploy-rails-application-how-to-handle-long-migrations có thảo luận và giải pháp cho apache tương tự. – leenasn

Trả lời

0

Điều này có thể dễ dàng thực hiện bằng cách thêm before_filter vào đầu chuỗi bộ lọc để kiểm tra điều kiện chế độ bảo trì và chuyển hướng đến trang bảo trì khi thích hợp.

13

CHÚ Ý Câu trả lời này giải quyết nginx hoặc Thiết lập giá, như được viết trước khi chỉnh sửa cho câu hỏi ban đầu đã làm rõ rằng đang tìm kiếm câu trả lời cụ thể cho Heroku. Câu trả lời được chấp nhận là tốt nhất cho các ứng dụng Heroku.


Khi bạn nói "trong ứng dụng của bạn" bạn có thực sự có nghĩa là trong ứng dụng của bạn?

Vì thường thì giải pháp là thả tệp bảo trì vào thư mục gốc web của bạn. Nếu tập tin được tìm thấy, nó được phục vụ với một số 503 Service Not Available ngay lập tức. Yêu cầu này thậm chí không bao giờ làm cho ứng dụng của bạn, có lẽ là "xuống để bảo trì".

Trong nginx, một cái gì đó như thế này:

location/{ 
     if (-f $document_root/maintenance.html) { 
      return 503; 
     } 

     # continued server directives 
    } 

    error_page 503 @maintenance; 
    location @maintenance { 
      rewrite ^(.*)$ /maintenance.html break; 
    } 

Nó sẽ không thực sự đòi hỏi một sự thúc đẩy cho mỗi gia nhập, nhưng có lẽ là một nhiệm vụ đơn giản cào hoặc một cái gì đó để thêm/gỡ bỏ các tập tin đó duy trì từ ứng dụng của bạn. Bạn có thể cũng có thể thay thế bất kỳ tên tệp cụ thể nào trong séc -f và chỉ cần touch một tệp tùy ý trống rỗng maintenance.whatever trong gốc web của bạn, sau đó sẽ trực tiếp nginx để phục vụ mainenance.html.

Nếu bạn không muốn (hoặc không thể) lộn xộn xung quanh với các cấu hình máy chủ, middleware rack rất đơn giản này không cơ bản được điều tương tự: https://github.com/ddollar/rack-maintenance

+0

Sử dụng một trong các giải pháp phần mềm trung gian Rack (chẳng hạn như một giải pháp được đề cập trong câu trả lời), có ai thành công trong việc giải quyết khi DB bị hỏng không? –

0

Câu trả lời ở trên đều phù hợp với kịch bản cơ bản.

Đối với phần thông minh của câu hỏi của bạn ở đây là một addon này sẽ giúp bạn có:

https://addons.heroku.com/trackman

1

Để thêm vào Emanuel của câu trả lời:

trackman giúp với các trang bảo trì của bạn từ dev để prod .

Bạn có thể

  • giàn giáo họ sử dụng bố trí trang web hiện tại của bạn (~ 0 html chỉnh sửa)
  • Liên kết tài sản hiện tại của bạn trong trang tĩnh của bạn
  • Nhìn vào bố cục trang trong môi trường dev của bạn

Nó sẽ triển khai mọi thứ tới S3 khi bạn đẩy tới Heroku và bạn thậm chí không cần thiết lập tài khoản trên S3.

Bạn cũng phải chạy

rake trackman:setup 

Vì vậy, điểm Heroku để trang S3 của bạn trong khi chế độ bảo trì.

http://www.trackman-addon.com

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