2011-11-16 108 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或不同的東西,具體取決於你如何配置它。