关于vagrant:你是如何设置Django开发环境的?

How did you setup your Django dev environement?

我正在尝试使用启用了vagrant的vms来设置本地django-dev环境,但我不确定最好的方法是什么。

我为生产服务器上的django文件做了一个git clone,并安装了生产服务器在本地虚拟机上拥有的所有模块。我想避免在本地虚拟机上安装数据库,但在会话中遇到了一些问题。本地机器使用SESSION_COOKIE_DOMAIN='localhost',生产使用SESSION_COOKIE_DOMAIN='.mydomain.com',造成一些混乱。

更不用说,在dev环境中的setting.py上,我必须更改ips以指向数据库的公共IP地址(从而在安全性上戳出一个漏洞),而production settings.py使用本地ips,所以我最终使用了不同的settings.py文件。

我可以继续尝试新的方法,但我真的必须开始这个项目,我很肯定有些人已经知道了这一点。

那么,您是如何设置您的django dev环境的呢?


我有一个关于GitHub的公开回购协议可在这里获得:

https://github.com/flirpa/djangovagrant

readme.md中的说明:

django/python/mysql版本

这是Django开发的一个流动项目。

这还不支持BerkShelf或图书管理员;所有必要的回购都包含在"食谱"中。

先决条件,所有平台:

virtualbox https://www.virtualbox.org/wiki/downloads瓦格纳特http://downloads.vagrantup.com/

先决条件,仅限Windows:

吉特巴什红宝石RVM

运行起来相当容易:

1
2
vagrant up
vagrant ssh djangovm

**(注意:您现在在virtualbox vm中是超级用户vagrant)

1
sudo apt-get install python-pip

**(注意:pip是一个python包管理器)

1
2
sudo apt-get install python-mysqldb
sudo pip install django

启动Django项目:

1
2
3
django-admin.py startproject django_project
cd django_project
python manage.py runserver [::]:8000

虚拟机配置为使用端口转发。如果一切正常,您应该能够通过运行此URL的虚拟机的计算机上的浏览器访问正在运行的服务器:

1
http://localhost:8001/

新的Django?下一步?我强烈推荐:http://www.tangowithdjango.com/有关更高级的主题,请查看两大勺django:http://twoscooppress.org/


我见过一些django应用程序可以管理这些应用程序,但我总是喜欢在我的设置中使用以下内容。py,因为不同配置的数量通常是最小的。

1
2
3
4
5
6
7
8
9
SITE_TYPE = environ.get( 'SITE_TYPE', 'DEV' )

if SITE_TYPE == 'LIVE':
    DEBUG = False
    DEFAULT_HOST = ''
else:
    DEBUG = True
    DEFAULT_HOST = '50.56.82.194'
    EMAIL_HOST = DEFAULT_HOST


我可以推荐这个存储库。

您可以修改它以支持Django项目。

Vagrantfile更新:

1
2
3
4
5
6
7
8
9
10
  config.vm.define"web1", primary: true do |web1_config|
    web1_config.ssh.forward_agent = true

    # Create a private network, which allows host-only access to the machine
    web1_config.vm.network"private_network", ip:"192.168.11.10"
    web1_config.vm.hostname ="web1.#{domain}"

    web1_config.vm.provision"shell", path:"provisioners/shell/python.setup.sh"
    web1_config.vm.provision"shell", path:"provisioners/shell/application.setup.sh"
  end

然后添加一个包含以下内容的provisioners/shell/application.setup.sh文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

local_user=vagrant

if [ ! -n"$(grep"^bitbucket.org" /home/$local_user/.ssh/known_hosts)" ]; then
    ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts 2>/dev/null;
fi

if [[ ! -d"/home/$local_user/app" ]]; then
    git clone [email protected]:czerasz/sample-django-app.git /home/$local_user/app

    chown -R $local_user:$local_user /home/$local_user/app

    su - $local_user -c"source /usr/local/bin/virtualenvwrapper.sh && mkvirtualenv sample-django-app-env && workon sample-django-app-env && pip install -r /home/$local_user/app/requirements.txt"
fi

更改存储库地址([email protected]:czerasz/sample-django-app.git并确保在Git存储库的根目录中有一个requirements.txt。运行vagrant up

Vagrant将启动两台机器:

  • django项目的web1
  • 带PoestgreSQL数据库的db1

如果您仍有问题,请将以下内容添加到您的Vagrantfile中:

1
web1_config.ssh.private_key_path = [ '~/.vagrant.d/insecure_private_key', '~/.ssh/bitbucket' ]

并在主机(运行vagrant的机器)上执行此命令:

1
ssh-add ~/.ssh/bitbucket

~/.ssh/bitbucket是用于bitback的ssh私钥。它可以是~/.ssh/id_rsa或其他不同的东西,具体取决于您如何配置它。