使用Vagrant在本地运行Heroku Cedar

Eri*_*rik 14 ruby python heroku vagrant veewee

我想在使用Vagrant尽可能接近Heroku的Cedar堆栈的环境中开发我的Django Heroku应用程序.

到目前为止,我发现构建模拟环境的最佳解决方案是Eric Holmes的优秀https://github.com/ejholmes/vagrant-heroku.但是,这个流浪盒目前使用python 2.6.x而不是我的应用程序使用的Python 2.7.4和Heroku默认使用.

我找到的另一个资源是Heroku的https://github.com/heroku/stack-images.我还没有尝试过,但似乎提供了一种在本地创建雪松堆栈的方法.它以Python 2.7.2结束.

哪一个(或其他)是最好的方式? 我有一个现在可以使用的开发环境 - 它使用Heroku使用的所有相同软件(PostgreSQL,Python 2.7.4等) - 但我想模拟Heroku环境的其他一些方面(内存)可用,磁盘空间,多机架构等).

我倾向于使用Eric Holmes的盒子并根据https://askubuntu.com/questions/101591/how-do-i-install-python-2-7-2-on-ubuntu添加Python 2.7.4 .我会为Eric的工作提供补丁,但我不是Rubyist/veewee ......

更新1: 另一种可能的资源: https: //github.com/torchbox/vagrant-django-base.

更新2: 我决定通过改编上述来源和其他来推动我自己.这些是我目前使用的文件(Vagrantfile和vagrant_data/install.sh)并取得了一些成功: https://gist.github.com/ErikEvenson/5801503.这让我在Ubuntu 12.04 512MB盒子上使用Python 2.7.3和PostgresSQL 9.2.4.

我想用第二个盒子拆分数据库服务器,并使用Python 2.7.4在Ubuntu 10.04上获取应用服务器.

更新3:我的设置已经发展.这是我目前的流浪汉配置: https: //gist.github.com/ErikEvenson/9763878.

更新4:本周我对我的设置进行了多次更新.最新消息是 https://gist.github.com/ErikEvenson/9763878.值得注意的是

  • 使用NFS而不是虚拟框文件夹同步 - 巨大的性能提升.
  • 避免当前virtualbox版本中的guest虚拟机添加错误.
  • 使用新推出的Vagrant Cloud作为版本化基本框.

更新5:这里有几个更新 - 主要是软件版本.最新消息是 https://gist.github.com/ErikEvenson/9763878.值得注意的是

  • 使用Vagrant 1.6.3
  • 使用PostgreSQL 9.3.3
  • 使用python 2.7.7并从源代码安装它.python 2.7.3保留为系统python.
  • 锁定所有依赖项版本 - 尤其是通过apt-get和npm安装的版本.
  • 使用hashicorp/precise64作为基本框.

要使用的文件结构如下:

- Project directory
-- vagrant_data
--- db
---- install.sh
---- memcached.conf
---- pg_hba.conf
---- postgresql.conf
---- redis.conf
--- web
---- install.sh
-- Vagrantfile
Run Code Online (Sandbox Code Playgroud)

更新6:由于VirtualBox 4.3.14修复了一些错误,因此开启了vagrant-vbguest.