76 votes

Est virtualenv recommandé pour django serveur de production?

J'ai toujours été à l'aide de virtualenv pour tester mon application en localhost depuis que j'ai isolé de l'environnement et peut en toute sécurité, test de la nouvelle version de paquets.

Maintenant, Il vient le moment où je dois déployer mon application sur un serveur de production. Je me demande si je devrais aussi utiliser virtualenv pour le serveur de production ou juste normal de l'installation doit faire. Puisque c'est le serveur de production, je peux toujours utiliser la bonne version que j'ai testé dans le serveur de dev (sous virtuel-env)

48voto

Kurt Points 670

Je voudrais le faire de cette façon, si vous pensez que vous allez exécuter plus d'un projet sur le serveur web. Dès que vous avez deux projets, vous courez le risque d'une future mise à niveau de tout paquet python casser l'autre site.

15voto

lorien Points 404

Est virtualenv recommandé pour django serveur de production?

Oui, c'est votre projet dépend pas de certains aspects de l'environnement du système, et il vous permet également de rendre le processus de déploiement de plus en plus clair et configurable.

J'utilise le tissu, pip et virtualenv à déployer tous mes projets Django.

9voto

AaronO Points 381

Oui, je pense que vous devriez utiliser virtualenv à déployer en production. Cela rend les choses beaucoup plus facile et plus propre pour vous, surtout si vous prévoyez de déployer de multiples services, par exemple, django sites web ou d'autres python projets. Vous ne voulez pas que chacun d'eux à polluer l'global environnement python avec leurs paquets.

Je pense que virtualenv pour vous aider à gérer tous vos dépendances proprement.

Pour mettre à jour votre production env tout ce que vous devez faire est de:

pip -r name_of_your_requirements_file.txt

J'utilise virtualenvs dans la production, et vous pouvez les utiliser uWSGI pour servir les applications, avec Cherokee comme un serveur web.

Pour utiliser votre virtualenv en production, vous aurez besoin d'ajouter son chemin d'accès à votre PYTHONPATH.

Par exemple, si votre env est le chemin "/home/www/my_project/env/", le chemin serait:

/home/www/env/lib/python2.7/site-packages/

Vous pouvez faire cela de différentes façons, mais si vous êtes de la génération de votre FCGI ou uWSGI de l'interface par le biais de manage.py, il suffit d'ajouter le texte suivant à la très haut de votre manage.py (avant le reste):

import os
my_virtualenv_path = "/home/www/my_project/env/lib/python2.7/site-packages/"
# Add it to your PYTHONPATH
os.path.append(my_virtualenv_path)

Vous pouvez l'adapter à votre configuration, juste au cas où vous pouvez également faire de la suivante dans le shell:

export PYTHONPATH:$PYTHONPATH:/home/www/my_project/env/lib/python2.7/site-packages/

Vous devrez également ajouter le répertoire qui contient vos settings.py fichier pour le PYTHONPATH, de sorte que Django sera en mesure de le découvrir. Il vous suffit de procéder de façon similaire pour le faire.

3voto

Max Peterson Points 283

Dans la plupart des cas, je suis d'accord qu'il est préférable d'avoir un virtualenv, même si il ne semble pas que vous en avez besoin lors de la première configuration du serveur. Cela dit si vous êtes en utilisant un certain type de service de cloud et de le faire tourner les serveurs pour une tâche spécifique pour un court laps de temps, alors je ne vois pas l'intérêt de l'utilisation d'un virtualenv.

2voto

jdi Points 38029

Je pense que c'est une bonne indication que son entièrement pris en charge la production de la solution lors de l'uwsgi soutient directement avec le serveur virtuel drapeau: http://projects.unbit.it/uwsgi/wiki/VirtualHosting

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X