【问题标题】:How did you setup your Django dev environment?你是如何设置你的 Django 开发环境的?
【发布时间】:2011-12-30 12:02:03
【问题描述】:

我正在尝试使用启用了Vagrant 的 VM 设置本地 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 开发环境的呢?

【问题讨论】:

  • StackOverflow 上的问题应该是明确的答案。设置 Django 环境的方法有很多种,其中大部分归结为个人对给定应用程序的个性化需求的偏好。如果您想获得一些想法,Google 就是您的理想之选。
  • @Chris Pratt 感谢您的意见。
  • 这个问题已经被问过好几次了。见stackoverflow.com/questions/1626326/…stackoverflow.com/questions/88259/…

标签: django vagrant


【解决方案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

【讨论】:

  • 您是否有一个类似于生产数据库的单独开发数据库,​​或者您只是将您的 Django 开发代码指向生产数据库?感谢您对这个主题有所了解。
【解决方案2】:

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

https://github.com/FlipperPA/djangovagrant

README.md 中的说明:

Django / Python / MySQL

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

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

先决条件,所有平台:

虚拟盒子https://www.virtualbox.org/wiki/Downloads 流浪者http://downloads.vagrantup.com/

先决条件,仅限 Windows:

git-bash 红宝石 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/

【讨论】:

  • 考虑到djangobook首页的警告,为什么要推荐呢?
  • 嗨 pydanny,我已经更新了我的 GitHub 中的存储库,以指向 Tango With Django,以及您出色的 Two Scoops of Django 书籍以获取更高级的主题。感谢您的提醒。
  • @FlipperPA :如果我在我的客户机上更改任何.py 文件,它会检测更改并重新加载django server 吗?我正在尝试这个,它不会重新加载 django 服务器。
  • 如果您的项目在共享文件夹中,则应该这样做。这里有一个更新的版本:github.com/FlipperPA/django-python3-vagrant
  • 刚刚确认文件状态last modified 在我对客户机上的文件进行更改后在主机上得到更新。 Django 1.5 autoreload 似乎有些问题
【解决方案3】:

我可以推荐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 项目
  • 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 或其他内容,具体取决于您的配置方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    相关资源
    最近更新 更多