你是如何设置Django开发环境的?

时间:2011-11-16 14:35:56

标签: django vagrant

我正在尝试使用启用了Vagrant的虚拟机来设置本地Django开发环境,但我不确定最好的方法是什么。

我从生产服务器为Django文件做了git clone,并安装了生产服务器在本地VM上的所有模块。我想避免在我的本地VM上安装数据库,但遇到了会话的一些问题。本地计算机正在使用SESSION_COOKIE_DOMAIN='localhost',并且正在使用SESSION_COOKIE_DOMAIN='.mydomain.com',因此会产生一些混淆。

更不用说在我的开发环境中的setting.py上我不得不将IP更改为指向数据库的公共IP地址(因此在安全性上戳了一个洞),而我的生产settings.py正在使用本地IP所以我最终使用了不同的settings.py文件。

我可以继续尝试新的方法,但我真的必须开始使用这个项目,而且我很确定有些人已经弄明白了。

那么你是如何设置Django开发环境的呢?

3 个答案:

答案 0 :(得分:2)

我在GitHub上有一个公共回购:

https://github.com/FlipperPA/djangovagrant

README.md的说明:

Django / Python / MySQL

这是Django开发的Vagrant项目。

这还不支持berkshelf或图书管理员;所有必要的回购都包含在'cookbooks'中。

先决条件,所有平台:

Virtualbox https://www.virtualbox.org/wiki/Downloads 流浪者http://downloads.vagrantup.com/

先决条件,仅限Windows:

GIT-的bash ruby rvm

相当容易让它运行:

vagrant up
vagrant ssh djangovm

**(注意:您现在位于Virtualbox VM中作为超级用户流浪者)

sudo apt-get install python-pip

**(注意:PIP是一个Python包管理器)

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

启动Django项目:

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

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

http://localhost:8001/

Django的新手?下一步?我强烈推荐:http://www.tangowithdjango.com/ 有关更多高级主题,请查看Django的两个Scoops:http://twoscoopspress.org/

答案 1 :(得分:1)

我看到有一些django应用程序可以管理这个但我总是更喜欢以下我的settings.py,因为不同配置的数量通常很少

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

答案 2 :(得分:0)

我可以推荐this repository

您可以对其进行修改以支持Django项目。

Vagrantfile更新:

  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文件,其中包含以下内容:

#!/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 git@bitbucket.org: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

更改存储库地址(git@bitbucket.org:czerasz/sample-django-app.git)并确保您的git存储库根目录中有requirements.txt。运行vagrant up

Vagrant将启动两台机器:

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

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

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

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

ssh-add ~/.ssh/bitbucket

~/.ssh/bitbucket是您用于bitbucket的ssh私钥。根据您的配置,它可以是~/.ssh/id_rsa或不同的东西。