2012-08-05 43 views
8

Tôi dự định lưu trữ một số cài đặt ứng dụng trong các biến môi trường, chẳng hạn như MYSQL_URL = mysql: // ... Tôi sử dụng supervisord để quản lý quy trình đăng ký. Làm thế nào để tải các biến môi trường trước khi tiến trình con được bắt đầu? Đặc biệt là khi các cài đặt này được thay đổi, tôi hy vọng khởi động lại tiến trình con sẽ tải các cài đặt mới.Tải biến môi trường trước khi thực hiện

Ngoài ra tôi tự hỏi nơi lưu trữ các biến môi trường này. Một tập tin mà tôi có thể "xuất khẩu $ (cat filename)"? Hoặc một số cách tốt hơn. Tôi tò mò về cách Heroku quản lý các biến môi trường của nó.

Trả lời

19

Bạn có thể thiết lập các biến môi trường cho mỗi quá trình trong cấu hình supervisord trong [program:x] phần, chúng sẽ được chuyển sang quá trình này khi nó bắt đầu:

[program:yourprocess] 
# ... other settings 
environment = 
    MYSQL_URL=mysql://, 
    OTHER_VAR="some other value" 

Lưu ý rằng bạn cần phải sử dụng một dấu phẩy giữa mỗi biến. Tôi cũng đã sử dụng các dòng mới trong ví dụ trên, chúng là tùy chọn. Nếu bạn có không gian trong các giá trị môi trường của bạn, bạn cần phải kèm theo giá trị trong dấu ngoặc kép.

Bạn cũng có thể đặt biến môi trường cho tất cả các quy trình trong phần [supervisord], sử dụng cùng một định dạng.

Cuối cùng nhưng không kém phần quan trọng, bất kỳ biến môi trường nào được đặt khi bắt đầu giám sát được truyền cho các quy trình được quản lý bởi người giám sát. Xem chi tiết documentation section on environment variables.

Do lưu ý rằng nếu bạn thay đổi biến môi trường cấu hình trong tập tin cấu hình, bạn sẽ cần để ra hiệu cho supervisord để tải lại cấu hình và khởi động lại trình con cho họ để nhận những thay đổi này:

supervisorctl update 
supervisorctl restart yourprocess 

Nếu Tuy nhiên bạn thay đổi biến môi trường bên ngoài của supervisord, bạn sẽ cần phải đóng cửa supervisord tất cả cùng nhau để chọn những lên:

supervisorctl shutdown 
supervisord 
+3

đánh bại mục đích nếu bạn cũng lưu trữ tập tin cấu hình giám sát của bạn trong kiểm soát phiên bản – Dustin

+1

@Dustin là r ight. Có cách nào để giái quyết vấn đề này không? Có lẽ một số loại bao gồm tập tin? – surjikal

+0

@surjikal: tạo tệp cấu hình bằng công cụ như trình xây dựng. –

0

Theo the docs các "supervisord.conf chứa một phần tên [supervisord trong đó thiết lập toàn cầu" như environmont biến có thể được thiết lập. (Trên trang được liên kết, tìm kiếm từ "môi trường").

Biến môi trường cũng có thể là set an a per-program basis.

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