2013-06-15 29 views
14

Tôi muốn phát triển ứng dụng Django Heroku của tôi trong một môi trường gần với ngăn xếp Cedar của Heroku càng tốt bằng Vagrant.Chạy Heroku Cedar cục bộ bằng cách sử dụng Vagrant

Giải pháp tốt nhất tôi đã tìm thấy cho đến nay để xây dựng môi trường giả lập là xuất sắc https://github.com/ejholmes/vagrant-heroku của Eric Holmes. Tuy nhiên, hộp âm thanh này hiện đang sử dụng python 2.6.x thay vì Python 2.7.4 ứng dụng của tôi sử dụng và Heroku mặc định.

Tài nguyên khác mà tôi đã tìm thấy là số https://github.com/heroku/stack-images của Heroku. Tôi chưa thử điều này, nhưng nó dường như cung cấp một cách để tạo ra một ngăn xếp tuyết tùng cục bộ. Nó kết thúc bằng Python 2.7.2.

Cách nào trong số này (hoặc thứ gì đó khác) là cách tốt nhất để đi? Tôi có một môi trường phát triển hoạt động ngay bây giờ - và nó sử dụng tất cả phần mềm tương tự mà Heroku sử dụng (PostgreSQL, Python 2.7.4, v.v.) - nhưng tôi muốn mô phỏng một số khía cạnh khác của môi trường Heroku (bộ nhớ có sẵn, dung lượng đĩa, kiến ​​trúc nhiều máy, vv).

Tôi đang hướng tới sử dụng hộp của Eric Holmes và thêm Python 2.7.4 cho mỗi https://askubuntu.com/questions/101591/how-do-i-install-python-2-7-2-on-ubuntu. Tôi muốn đưa ra một bản vá để công việc của Eric, nhưng tôi không Rubyist/veewee ...

Cập nhật 1: Một nguồn tài nguyên có thể: https://github.com/torchbox/vagrant-django-base.

Cập nhật 2: Tôi đã quyết định tự cuộn bằng cách điều chỉnh từ các nguồn ở trên và các nguồn khác. Đây là những tập tin (Vagrantfile và vagrant_data/install.sh) mà tôi hiện đang sử dụng với một số thành công: https://gist.github.com/ErikEvenson/5801503. Điều này đưa tôi đến Python 2.7.3 và PostgresSQL 9.2.4 trên một hộp Ubuntu 12.04 512MB.

Tôi muốn tách máy chủ cơ sở dữ liệu với hộp thứ hai và tải máy chủ ứng dụng trên Ubuntu 10.04 bằng Python 2.7.4.

Cập nhật 3: Thiết lập của tôi đã phát triển. Đây là cấu hình âm thanh hiện tại của tôi: https://gist.github.com/ErikEvenson/9763878.

Cập nhật 4: Tôi đã thực hiện một số cập nhật cho thiết lập của mình trong tuần này. Mới nhất là https://gist.github.com/ErikEvenson/9763878. Lưu ý:

  • Sử dụng NFS thay vì đồng bộ hóa hộp thư ảo - cải thiện hiệu suất rất lớn.
  • Tránh lỗi bổ sung của khách trong phiên bản hộp thư hiện tại.
  • Sử dụng Đám mây âm đạo mới có sẵn cho hộp cơ sở được phiên bản.

Cập nhật 5: Một số cập nhật ở đây - chủ yếu là các phiên bản phần mềm. Mới nhất là https://gist.github.com/ErikEvenson/9763878. Cần chú ý:

  • Sử dụng Vagrant 1.6.3
  • Sử dụng PostgreSQL 9.3.3
  • Sử dụng python 2.7.7 và cài đặt nó từ nguồn.python 2.7.3 được giữ lại như hệ thống python.
  • Khóa tất cả các phiên bản phụ thuộc - đặc biệt là các phiên bản được cài đặt qua apt-get và npm.
  • Sử dụng hashicorp/exact64 làm hộp cơ sở.

Cấu trúc tập tin để sử dụng là một cái gì đó như thế này:

- Project directory 
-- vagrant_data 
--- db 
---- install.sh 
---- memcached.conf 
---- pg_hba.conf 
---- postgresql.conf 
---- redis.conf 
--- web 
---- install.sh 
-- Vagrantfile 

Cập nhật 6: Hóa lang thang-vbguest trên kể từ VirtualBox 4.3.14 sửa chữa một số lỗi.

+2

Cảm ơn vì điều này, tôi cũng đã tìm kiếm một giải pháp .... thử bạn ngay bây giờ! – Brandon

Trả lời

2

Bạn có thể thử Dokku có hỗ trợ Heroku buildpacks