Các giải pháp sau đây nhằm chỉ những người dùng Linux, và đã được thử nghiệm làm việc dưới Ubuntu Server 12.04.1
Để chạy WSGI dưới chế độ daemon, bạn cần phải xác định WSGIProcessGroup
và WSGIDaemonProcess
chỉ thị trong tập tin cấu hình Apache của bạn Ví dụ
WSGIProcessGroup my_wsgi_process
WSGIDaemonProcess my_wsgi_process threads=15
Thông tin chi tiết có sẵn trong http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives
Một thêm tiền thưởng là sự ổn định thêm nếu bạn đang chạy nhiều trang web WSGI dưới sam e máy chủ, có khả năng với chỉ thị VirtualHost. Nếu không sử dụng quy trình daemon, tôi đã tìm thấy hai trang web Django xung đột với nhau và chuyển lên 500 Lỗi Máy chủ Nội bộ theo cách khác.
Tại thời điểm này, máy chủ của bạn là trong thực tế đã theo dõi trang web WSGI của bạn cho những thay đổi, mặc dù nó chỉ theo dõi các tập tin mà bạn chỉ định sử dụng WSGIScriptAlias
, như
WSGIScriptAlias//var/www/my_django_site/my_django_site/wsgi.py
Điều này có nghĩa rằng bạn có thể buộc quá trình daemon WSGI để tải lại bằng cách thay đổi tập lệnh WSGI. Tất nhiên, bạn không phải thay đổi nội dung của nó, nhưng thay vào đó,
$ touch /var/www/my_django_site/my_django_site/wsgi.py
sẽ thực hiện thủ thuật.
Bằng cách sử dụng phương pháp trên, bạn có thể tự động tải lại trang web WSGI trong môi trường sản xuất mà không cần khởi động lại/tải lại toàn bộ máy chủ Apache hoặc sửa đổi kịch bản WSGI của bạn để thực hiện giám sát thay đổi mã sản xuất không an toàn.
Điều này đặc biệt hữu ích khi bạn đã triển khai tự động tập lệnh và không muốn khởi động lại máy chủ Apache khi triển khai.
Trong phát triển, bạn có thể sử dụng một hệ thống tập tin thay đổi watcher để gọi touch wsgi.py
mỗi khi một module dưới thay đổi trang web của bạn, ví dụ, pywatch
Tôi đã đọc rằng .. không phải là hữu ích mặc dù: ( – Ian
Ian, điều này là vì bạn đang ở trên Windows hoặc sử dụng mod_wsgi ở chế độ nhúng? Bởi vì nếu không trang đó có một số mã để khởi động lại tự động và nó hoạt động hoàn hảo. –
Không, đây là trên linux. Việc tải lại tự động chỉ áp dụng cho tập lệnh được truy cập, không áp dụng cho các mô-đun mà tập lệnh sau đó gọi. – Ian