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:
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 serveurCela me permet de créer plusieurs virtualenvs et dossiers d’applications indépendants pour différentes applications, versions, etc. comme bon me semble.
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