2011-11-16 19 views
8

Sto provando a configurare un ambiente Django dev locale utilizzando le VM abilitate con Vagrant ma non sono sicuro di quale sia il modo migliore per farlo.Come hai configurato il tuo ambiente di sviluppo Django?

Ho effettuato uno git clone per i file Django dal server di produzione e ho installato tutti i moduli che il server di produzione ha sulla mia VM locale. Volevo evitare l'installazione di un database sulla mia VM locale, ma ho incontrato alcuni problemi con le sessioni. La macchina locale utilizza SESSION_COOKIE_DOMAIN='localhost' e la produzione utilizza SESSION_COOKIE_DOMAIN='.mydomain.com' in modo da creare confusione.

Per non parlare del fatto che su setting.py sul mio ambiente dev ho dovuto modificare gli IP per puntare sull'indirizzo IP pubblico del database (facendo così un buco sulla sicurezza) mentre il mio settings.py di produzione sta usando il IP locali quindi ho finito per utilizzare diversi file settings.py.

Posso continuare a sperimentare nuovi metodi, ma devo davvero andare avanti con il progetto e sono abbastanza sicuro che alcune persone lo abbiano già capito.

Quindi, come hai impostato il tuo ambiente di sviluppo Django?

+0

Le domande su StackOverflow devono essere risolte in modo definitivo. Esistono dozzine di modi per impostare un ambiente Django e la maggior parte si riduce alle preferenze personali dei bisogni personalizzati della specifica applicazione. Se vuoi avere qualche idea, Google è il posto giusto. –

+0

@Chris Pratt Apprezzo il tuo contributo. – avatar

+0

Questa domanda è stata già chiesta più volte. Vedi http://stackoverflow.com/questions/1626326/how-to-manage-local-vs-production-settings-in-django e http://stackoverflow.com/questions/88259/how-do-you-configure -django-for-simple-development-and-deployment –

risposta

1

ci sono alcune applicazioni Django che ho visto per gestire questo, ma io preferisco sempre il seguente nella mia settings.py come il numero di differenti configurazioni di solito sono minimi

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

Avete un database dev separato simile al DB di produzione o semplicemente puntate il vostro codice Django dev al DB di produzione? Grazie per mettere un po 'di luce sull'argomento. – avatar

2

ho un repo pubblica su GitHub disponibile qui:

https://github.com/FlipperPA/djangovagrant

Istruzioni dalla README.md:

Django/Python/M ySQL

Questo è un progetto Vagrant per lo sviluppo di Django.

Questo non supporta ancora berkshelf o bibliotecario; tutti i repository necessari sono inclusi in "libri di cucina".

Prerequisiti, tutte le piattaforme:

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

Prerequisiti, solo Windows:

git-bash rubino rvm

Abbastanza facile da farlo funzionare:

vagrant up 
vagrant ssh djangovm 

** (Nota: Si è ora in VirtualBox VM come superutente vagabondo)

sudo apt-get install python-pip 

** (Nota: PIP è un pacchetto Python direttore)

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

Avvio di un progetto Django:

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

La VM è configurata per utilizzare il port forwarding.Se tutto è andato bene, si dovrebbe essere in grado di accedere al server che esegue attraverso il browser sul computer che esegue la macchina virtuale a questo indirizzo:

http://localhost:8001/ 

Nuovo a Django? Prossimi passi? Mi raccomando: http://www.tangowithdjango.com/ Per gli argomenti più avanzati, prova anche due palline di Django: http://twoscoopspress.org/

+0

Considerando l'avviso sulla prima pagina di djangobook, perché lo raccomandi? – pydanny

+0

Ciao pydanny, ho aggiornato il repository nel mio GitHub per indicare Tango With Django e il tuo eccellente libro Two Scoops of Django per argomenti più avanzati. Grazie per il testa a testa. – FlipperPA

+0

@FlipperPA: Rileverà le modifiche e ricaricherà 'django server' se apporto modifiche in qualsiasi file' .py' sul mio computer ospite? Sto provando questo e non ricarica il server django. –

0

posso consigliare this repository.

È possibile modificarlo per supportare i progetti Django.

Vagrantfile aggiornamenti:

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 

quindi aggiungere un file di provisioners/shell/application.setup.sh con il seguente contenuto:

#!/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 

Modificare l'indirizzo repository ([email protected]:czerasz/sample-django-app.git) e fare anche in modo di avere un requirements.txt nella radice del tuo repository git. Esegui vagrant up.

Vagrant inizierà due macchine:

  • web1 con il progetto Django
  • db1 con un database PoestgreSQL

Se avete ancora problemi di aggiungere quanto segue al vostro Vagrantfile:

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

ed eseguire questo comando sul vostro ospite (la macchina in cui si esegue vagrant):

ssh-add ~/.ssh/bitbucket 

Il ~/.ssh/bitbucket è la chiave privata SSH che si utilizza per bitbucket. Può essere ~/.ssh/id_rsa o qualcosa di diverso a seconda di come lo hai configurato.

Problemi correlati