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
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