web-dev-qa-db-fra.com

Quel est le bon emplacement pour un service virtualenv maintenu?

Je vais installer et maintenir une application serveur basée sur Python 2.7 sur un serveur Ubuntu (12.04). Le modèle de maintenance consistera à créer virtualenv et à y installer les bibliothèques standard d’applications (à partir de PyPI) et les bibliothèques personnalisées (sur mesure), en les mettant à jour au besoin. Un dossier distinct contient "l'application", composée de fichiers de configuration et de fichiers Python spécifiques à l'application.

Autant que je sache, les seuls paquets dont j'ai besoin sont fournis par Ubuntu sont python et python-virtualenv. Je peux faire une installation personnalisée de pew pour gérer le venv - auquel cas je vais Sudo easy_install pew et accepter que, où que ce soit soit correct (où Pew ne figure pas dans le dépôt 12.04).

Je ne sais pas très bien que les applications doivent résider dans /opt ou /srv ou ailleurs, et qu'une application serveur peut résider dans un emplacement différent de celui d'une application utilisateur. Donne tout ça:

  • où devrait se situer le virtualenv?
  • où le dossier de l'application serveur doit-il être situé?
6
david.libremone

Pour les applications Django, Adam Bard recommande localisez votre virtualenv sur /opt/apps/<appname>-env et votre application proprement dite sur /opt/apps/<appname>-env/site. (Merci beaucoup à don.joey pour l'excellent lien.)

Légèrement sans rapport, j'ai également trouvé les [Anti-Patterns de déploiement Python] et Le ​​déploiement d'applications Python avec des packages natifs étaient des lectures utiles.

À partir de cela, mon propre examen du Norme de hiérarchie du système de fichiers et une inspection du dossier /opt sur mon ordinateur de bureau, sont accompagnés de:

  • /opt/virtualenv/<env_name> pour l'environnement virtuel
  • /opt/<vendor_name>/<app_name> pour le dossier de l'application serveur

Cela me permet de créer plusieurs virtualenvs et dossiers d’applications indépendants pour différentes applications, versions, etc. comme bon me semble.

1
david.libremone

L'emplacement de virtualenv est essentiellement sans importance. Vous pouvez le placer où vous voulez. Vous devez juste exécuter source some_venv/bin/activate et vous êtes prêt à partir.

L'emplacement traditionnel est ~/.virtualenvs.

J'utilise une configuration différente où j'ai un dossier ~/projects qui contient les différents virtualenvs et contient le code python pour différents projets . C'est agréable et facile parce que vous avez tout ensemble. Pour certains, cela peut sembler un peu encombré, parce que vous avez une corbeille, des dossiers locaux et plus de dossiers dans votre disque.

Je les gère en utilisant virtualenvwrapper qui est dans le dépôt. Je n'ai pas encore eu la chance de tester Pew.

Si virtualenvwrapper et virtualenv sont configurés correctement, le flux de travail est le suivant:

mkvirtualenv some_venv
workon some_venv
cdvirtualenv
deactivate
2
don.joey