Ich habe virtualenv immer zum Testen meiner App in localhost verwendet, da ich eine isolierte Umgebung habe und neue Versionen von Paketen sicher testen kann.
Jetzt ist es an der Zeit, dass ich meine App auf einem Produktionsserver bereitstellen muss. Ich frage mich, ob ich virtualenv auch für den Produktionsserver verwenden soll oder nur eine normale Installation. Da es sich um einen Produktionsserver handelt, kann ich immer die richtige Version verwenden, die ich auf dem Entwicklungsserver getestet habe (unter virtual-env).
python
django
deployment
w00d
quelle
quelle
Antworten:
Ich würde es so machen, wenn Sie jemals denken, dass Sie mehr als ein Projekt auf dem Webserver ausführen werden. Sobald Sie zwei Projekte haben, laufen Sie Gefahr, dass ein zukünftiges Upgrade eines Python-Pakets die andere Site beschädigt.
quelle
Ja, Ihr Projekt hängt nicht von bestimmten Aspekten der Systemumgebung ab, und Sie können den Bereitstellungsprozess klarer und konfigurierbarer gestalten.
Ich verwende Fabric, Pip und Virtualenv, um alle meine Django-Projekte bereitzustellen.
quelle
Ja, ich denke, Sie sollten virtualenv verwenden, um es in der Produktion bereitzustellen. Dies macht die Dinge für Sie viel einfacher und sauberer, insbesondere wenn Sie mehrere Dienste bereitstellen möchten, z. B. Django-basierte Websites oder andere Python-Projekte. Sie möchten nicht, dass jeder von ihnen die globale Python-Umgebung mit seinen Paketen verschmutzt.
Ich denke, virtualenv wird Ihnen helfen, alle Ihre Abhängigkeiten sauber zu verwalten.
Um Ihre Produktionsumgebung zu aktualisieren, müssen Sie lediglich Folgendes tun:
Ich verwende virtuelle Umgebungen in der Produktion, und Sie können uWSGI verwenden, um die Anwendungen mit Cherokee als Webserver bereitzustellen.
Um Ihre virtuelle Umgebung in der Produktion zu verwenden, müssen Sie ihren Pfad zu Ihrem PYTHONPATH hinzufügen.
Wenn Ihre Umgebung beispielsweise den Pfad "/ home / www / my_project / env /" hat, lautet der hinzuzufügende Pfad:
/home/www/env/lib/python2.7/site-packages/
Sie können dies auf viele verschiedene Arten einrichten. Wenn Sie jedoch Ihre FCGI- oder uWSGI-Schnittstelle über manage.py generieren, fügen Sie einfach ganz oben in Ihrer manage.py Folgendes hinzu (vor dem Rest):
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)
Sie können dies an Ihr Setup anpassen, für den Fall, dass Sie in der Shell auch Folgendes tun können:
export PYTHONPATH:$PYTHONPATH:/home/www/my_project/env/lib/python2.7/site-packages/
Sie müssen auch das Verzeichnis, das Ihre Datei settings.py enthält, zum PYTHONPATH hinzufügen, damit Django es erkennen kann. Gehen Sie dazu einfach ähnlich vor.
quelle
In den meisten Fällen würde ich zustimmen, dass es am besten ist, eine virtuelle Umgebung zu haben, auch wenn es nicht so aussieht, als ob Sie sie benötigen, wenn Sie den Server zum ersten Mal einrichten. Das heißt, wenn Sie eine Art Cloud-Dienst verwenden und Server für eine bestimmte Aufgabe für eine kurze Zeit hochfahren, sehe ich keinen Sinn darin, eine virtuelle Umgebung zu verwenden.
quelle
Ich denke, es ist ein guter Hinweis darauf, dass es eine vollständig unterstützte Produktionslösung ist, wenn uwsgi sie direkt mit dem vhost-Flag unterstützt: http://projects.unbit.it/uwsgi/wiki/VirtualHosting
quelle
Die Verwendung von Docker-Containern sowohl für die Entwicklung als auch für die Bereitstellung in der Produktion ist mittlerweile sehr beliebt. Wenn Sie also überlegen, diesem Trend zu folgen, benötigen Sie keine virtuelle Umgebung mehr.
quelle