2011-11-16 3 views
8

J'essaie de configurer un environnement de développement Django local en utilisant des machines virtuelles activées avec Vagrant mais je ne suis pas sûr de la meilleure façon de procéder.Comment avez-vous configuré votre environnement de développement Django?

J'ai fait un git clone pour les fichiers Django du serveur de production et j'ai installé tous les modules que le serveur de production a sur ma machine virtuelle locale. Je voulais éviter d'installer une base de données sur ma machine virtuelle locale, mais j'ai rencontré des problèmes avec les sessions. La machine locale utilise SESSION_COOKIE_DOMAIN='localhost' et la production utilise SESSION_COOKIE_DOMAIN='.mydomain.com', ce qui crée une certaine confusion. Sans oublier que sur le setting.py de mon environnement de développement, j'ai dû changer d'adresse IP pour pointer vers l'adresse IP publique de la base de données (ce qui a créé un trou sur la sécurité) pendant que mon production settings.py utilise le IPs locaux donc j'ai fini par utiliser différents fichiers settings.py.

Je peux continuer à expérimenter de nouvelles méthodes, mais je dois vraiment aller de l'avant avec le projet et je suis sûr que certaines personnes ont déjà compris cela.

Alors, comment avez-vous configuré votre environnement de développement Django?

+0

Les questions sur StackOverflow devraient être définitivement responsables. Il existe des dizaines de façons de configurer un environnement Django et la plupart d'entre elles se résument à la préférence personnelle des besoins individualisés de l'application donnée. Si vous voulez avoir quelques idées, Google est l'endroit pour cela. –

+0

@Chris Pratt J'apprécie votre contribution. – avatar

+0

Cette question a déjà été posée plusieurs fois. Voir http://stackoverflow.com/questions/1626326/how-to-manage-local-vs-production-settings-in-django et http://stackoverflow.com/questions/88259/how-do-you-configure -django-for-simple-development-and-deployment –

Répondre

1

il y a quelques applications django que je l'ai vu pour gérer cela, mais je préfère toujours ce qui suit dans mon settings.py que le nombre de différentes configs sont généralement minimes

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

Avez-vous une base de données de développement séparée qui est similaire à la base de données de production ou vous pointez simplement votre code de développement Django vers la base de données de production? Merci d'avoir éclairé le sujet. – avatar

2

je une prise en pension publique sur GitHub ici:

https://github.com/FlipperPA/djangovagrant

Instructions du README.md:

Django/Python/M ySQL

Ceci est un projet vagabond pour le développement de Django.

Ceci ne supporte pas encore berkshelf ou bibliothécaire; tous les repos nécessaires sont inclus dans les livres de recettes.

Pré-requis, toutes les plateformes:

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

Pré-requis, Windows uniquement:

git-bash rubis RVM

Assez facile à le faire fonctionner:

vagrant up 
vagrant ssh djangovm 

** (Remarque: Vous êtes maintenant dans la machine virtuelle VirtualBox errante super-utilisateur)

sudo apt-get install python-pip 

** (Remarque: PIP est un gestionnaire de paquets Python)

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

Démarrage d'un projet Django:

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

La machine virtuelle est configurée pour utiliser la redirection de port.Si tout se passe bien, vous devriez être en mesure d'accéder au serveur en cours d'exécution via le navigateur de votre ordinateur exécutant la machine virtuelle à l'adresse suivante:

http://localhost:8001/ 

Nouveau à Django? Prochaines étapes? Je recommande fortement: http://www.tangowithdjango.com/ Pour des sujets plus avancés, consultez deux pelletées de Django: http://twoscoopspress.org/

+0

Considérant l'avertissement sur la première page de djangobook, pourquoi le recommandez-vous? – pydanny

+0

Salut pydanny, j'ai mis à jour le repo dans mon GitHub pour pointer vers Tango avec Django, et vers ton excellent livre Two Scoops of Django pour des sujets plus avancés. Merci pour l'information. – FlipperPA

+0

@FlipperPA: Va-t-il détecter les changements et recharger 'django server' si je change des fichiers' .py' sur ma machine? J'essaye ceci et il ne recharge pas le serveur de Django. –

0

Je peux recommander this repository.

Vous pouvez le modifier pour prendre en charge les projets Django.

Vagrantfile mises à jour:

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 

ajouter ensuite un fichier provisioners/shell/application.setup.sh avec le contenu suivant:

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

Changer l'adresse du référentiel ([email protected]:czerasz/sample-django-app.git) et assurez-vous que vous avez un requirements.txt à la racine de votre dépôt git. Exécutez vagrant up.

Vagrant commencera deux machines:

  • web1 avec votre projet django
  • db1 avec une base de données PoestgreSQL

Si vous avez encore des questions ajoutez ce qui suit à votre Vagrantfile:

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

Et exécuter cette commande sur votre hôte (la machine sur laquelle vous exécutez vagrant):

ssh-add ~/.ssh/bitbucket 

Le ~/.ssh/bitbucket est la clé privée ssh que vous utilisez pour bitbucket. Il peut être ~/.ssh/id_rsa ou quelque chose de différent selon la façon dont vous l'avez configuré.

Questions connexes