10

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

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

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

我可以继续尝试新方法,但我真的必须开始这个项目,我很确定有些人已经想通了。

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

4

3 回答 3

2

我在 GitHub 上有一个公开的 repo:

https://github.com/FlipperPA/djangovagrant

README.md 中的说明:

Django / Python / MySQL

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

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

先决条件,所有平台:

Virtualbox https://www.virtualbox.org/wiki/Downloads Vagrant http://downloads.vagrantup.com/

先决条件,仅限 Windows:

git-bash ruby​​ rvm

运行起来相当容易:

vagrant up
vagrant ssh djangovm

**(注意:您现在在 Virtualbox VM 中作为超级用户 vagrant)

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/

于 2013-07-18T14:20:24.513 回答
1

我可以推荐这个存储库

您可以对其进行修改以支持 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) 并确保requirements.txt您的 git 存储库的根目录中有一个。运行vagrant up

Vagrant 将启动两台机器:

  • 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是您用于 bitbucket 的 ssh 私钥。~/.ssh/id_rsa根据您的配置方式,它可能会有所不同。

于 2015-04-01T22:46:11.433 回答
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
于 2011-11-16T16:37:48.810 回答