2011-11-16 96 views
8

我试图使用启用Vagrant的虚拟机来设置本地Django开发环境,但我不确定最好的方法是什么。你是如何设置你的Django开发环境的?

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

更不用说,在我的开发环境setting.py我不得不改变IP指向数据库的公共IP地址(从而戳穿安全漏洞),而我的生产settings.py正在使用本地IP,所以我最终使用了不同的settings.py文件。

我可以继续尝试新的方法,但我真的必须开始与该项目,我敢肯定有些人已经找到了这一点。

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

+0

有关StackOverflow的问题应该是明确的答复。有很多方法可以设置Django环境,其中大部分可以归结为个人对给定应用程序的个性化需求的偏好。如果你想得到一些想法,谷歌是这个地方。 –

+0

@Chris Pratt我很欣赏你的意见。 – avatar

+0

这个问题已经有好几次了。请参阅http://stackoverflow.com/questions/1626326/how-to-manage-local-vs-production-settings-in-django和http://stackoverflow.com/questions/88259/how-do-you-configure -django-for-simple-development-and-deployment –

回答

1

有,我已经看到了管理这几个Django的应用程序,但我总是喜欢在我的settings.py以下不同的configs的数量通常是最小的

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 
+0

您是否有一个与生产数据库类似的独立开发数据库,​​或者您只需将您的Django开发代码指向生产数据库?感谢您为这个问题提供一些信息。 – avatar

2

我有一个公共回购在GitHub上可以在这里找到:

https://github.com/FlipperPA/djangovagrant

说明从README.md:

Django的/ Python的/ M ySQL

这是一个用于Django开发的Vagrant项目。

这还不支持berkshelf或librarian;所有必要的回购都包含在“食谱”中。

先决条件,所有平台:

VirtualBox的https://www.virtualbox.org/wiki/Downloads 流浪http://downloads.vagrantup.com/

先决条件,只有Windows:

混帐的bash 红宝石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的两勺:http://twoscoopspress.org/

+0

考虑到djangobook首页上的警告,你为什么推荐它? – pydanny

+0

嗨pydanny,我已经更新了我的GitHub中的回购指向Tango与Django,以及您的出色的Django两勺的更多高级主题的书。感谢您的高举。 – FlipperPA

+0

@FlipperPA:如果我在客户机上的任何'.py'文件中进行更改,它是否会检测到更改并重新加载'django server'?我正在尝试这个,它不会重新加载django服务器。 –

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 [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),并同时确保您在根有requirements.txt你的git仓库。运行vagrant up

放浪将启动两台机器:

  • web1与Django项目
  • db1与PoestgreSQL数据库

如果您仍然有问题,以下内容添加到您的Vagrantfile

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

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

ssh-add ~/.ssh/bitbucket 

~/.ssh/bitbucket是您使用的到位桶SSH私钥。它可以是~/.ssh/id_rsa或不同的东西,具体取决于你如何配置它。