2016-03-02 22 views
6

Tôi có một máy chủ chạy một số trang web Django khác nhau, chạy các phiên bản khác nhau của Django. Hôm qua, Django issued security updates for 1.8 and 1.9. Điều này có nghĩa rằng, để giữ mọi thứ an toàn, tôi phải truy cập vào từng trang web và cập nhật phiên bản của Django mà nó đang chạy.Cài đặt Django tập trung với VirtualEnv

Vì Django thực hiện công việc rất tốt với phiên bản (tức là thay đổi đột ngột giữa các phiên bản nhỏ, như 1.8-1.9, nhưng không phải giữa các phiên bản, như 1.9.2-1.9.4), có vẻ như tôi có thể có cài đặt Django trung tâm cho mỗi phiên bản nhỏ, 1.7, 1.8, 1.9, v.v.

Có cách nào để VirtualEnv nhắm mục tiêu cài đặt cụ thể để tôi có thể chạy tất cả các trang web đang chạy Django 1.8 điểm và tương tự cho 1,9?

Trả lời

2

Một giải pháp là sử dụng add2virtualenv từ virtualenvwrapper.

đơn giản, tạo ra một số virtualenvs cho các phiên bản django chia sẻ (tất nhiên, một virtualenv cho phiên bản chính một django) và trên mỗi virtualenvs gọi lệnh:

add2virtualenv /path/to/shared/virtualenv/lib/python3.4/site-packages 

thay thế đường dẫn đến virtualenv chia sẻ (và phiên bản python nếu cần thiết) với cái mà bạn muốn sử dụng.

add2virtualenv có hiệu lực vĩnh viễn, vì vậy không cần phải gọi lại sau khi kích hoạt virtualenvwrapper.

+0

Chức năng có sẵn bên ngoài virtualenvwrapper không? Như trong, nó có thể được thực hiện với những gì virtualenv làm cho có sẵn? – tghw

+0

Có, nó có thể được thực hiện, virtualenvwrapper chỉ đơn giản là tạo tập tin '_virtualenv_path_extensions.pth' bên trong thư mục' site-packages' của virtualenv của bạn, đó là thêm các thư mục được chỉ định vào 'sys.path'. Bằng cách phân tích cách nó được thực hiện chính xác trong virtualenvwrapper, bạn chắc chắn sẽ có thể tạo lại nó. Nhưng việc sử dụng virtualenvwrapper sẽ dễ dàng hơn. – GwynBleidD

+0

Làm việc như một say mê, cảm ơn! – tghw

1

Một cách tiếp cận mà bạn có thể nhận là liên kết tượng trưng django từ thư mục trang web-gói. Điều đó có vẻ như tất cả các loại sơ sài, mặc dù.

Đối với bản thân mình? Tôi chỉ cần cài đặt SaltStack, vì bạn có thể manage virtualenvs with it

+0

Tôi đã thử giải pháp liên kết tượng trưng một lần và đó là một ý tưởng tồi vì bạn cần tìm kiếm các phụ thuộc khác theo cách thủ công. Những gì làm việc cho tôi là virtualenvwrapper, trong đó có một số tính năng mà virtualenv thiếu. Trong kịch bản này, tôi có thể có hai virtualenvs (Django 1.8, Django 1.9, với dependecies được quản lý bởi virutalenv) và tạo virtualenv mới cho mỗi dự án và liên kết đến một trong hai Django 1.8 hoặc Django 1.9 virtualenv, khi cần thiết. Cụ thể nhìn vào lệnh add2virtualenv: http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html#add2virtualenv –

+0

@DRubio Sẽ không lấy phụ thuộc nếu bạn cố gắng cài đặt lại verson cụ thể? –

+0

@WayneWerner Nếu bạn liên kết tượng trưng với Django, thì bạn sẽ cần phải đồng bộ hóa tất cả các phụ thuộc của Django. Pip sẽ không có cách nào để biết rằng không phải tất cả các liên kết đều được tạo ra. – tghw

-2

Đây không phải là điều đơn giản là requirements.txt là gì? Bạn có thể chỉ định phiên bản của Django là "> = 1.8, < 1.9", sau đó bạn biết rằng việc nâng cấp sẽ luôn cài đặt bản phát hành bản sửa lỗi 1.8 mới nhất, nhưng không bao giờ 1.9.

+0

Đó không phải là câu hỏi được đặt ra. Ngay bây giờ, tôi có các trang web X để đi làm một pip install -U "django> = 1.8, <1.9" trên. Câu hỏi đặt ra là hỏi làm thế nào để làm cho một tập trung Django 1.8 cài đặt mà tất cả các trang web X sử dụng. – tghw

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