環境を分離しており、パッケージの新しいリリースを安全にテストできるため、localhostでのアプリのテストには常にvirtualenvを使用しています。
これで、アプリを運用サーバーに展開する必要が生じました。運用サーバーにもvirtualenvを使用する必要があるのか、通常のインストールだけで使用するのか疑問に思っています。本番サーバーなので、開発サーバーでテストした正しいバージョンをいつでも使用できます(virtual-envの下)
ウェブサーバーで複数のプロジェクトを実行すると思われる場合は、そのようにします。 2つのプロジェクトがあるとすぐに、pythonパッケージが他のサイトを壊してしまう可能性があります。
VirtualenvはDjango本番サーバーに推奨されますか?
はい、プロジェクトがシステム環境の特定の側面に依存しないようにし、展開プロセスをより明確で構成可能にします。
ファブリック、pip、virtualenvを使用して、すべてのDjangoプロジェクトをデプロイします。
はい、virtualenvを使用して実稼働環境にデプロイする必要があると思います。特に複数のサービスの展開を計画している場合は、物事がはるかに簡単でわかりやすくなります。 DjangoベースのWebサイトまたは他のpythonプロジェクト。各プロジェクトがグローバル環境を汚染することは望ましくありません。python環境彼らのパッケージで。
Virtualenvは、すべての依存関係をきれいに管理するのに役立つと思います。
本番環境を更新するには、次を実行するだけです。
pip -r name_of_your_requirements_file.txt
私は本番環境でvirtualenvsを使用しています。また、uWSGIを使用して、CherokeeをWebサーバーとしてアプリケーションを提供できます。
本番環境でvirtualenvを使用するには、そのパスをPYTHONPATHに追加する必要があります。
たとえば、envのパスが「/ home/www/my_project/env /」の場合、追加するパスは次のようになります。
/home/www/env/lib/python2.7/site-packages/
これはさまざまな方法で設定できますが、manage.pyを使用してFCGIまたはuWSGIインターフェイスを生成する場合は、manage.pyの最上部に次のコードを追加します(残りの前に)。
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)
シェルで次のこともできるように、セットアップにこれを適合させることができます。
export PYTHONPATH:$PYTHONPATH:/home/www/my_project/env/lib/python2.7/site-packages/
また、settings.pyファイルを含むディレクトリをPYTHONPATHに追加する必要があるため、Djangoはそれを検出できます。同様の方法で続行します。
ほとんどの場合、最初にサーバーをセットアップするときに必要と思われない場合でも、virtualenvを使用するのが最善であることに同意します。つまり、ある種のクラウドサービスを使用し、特定のタスクのために短時間サーバーをスピンアップする場合、virtualenvを使用する意味はわかりません。
Uwsgiがvhostフラグで直接サポートしている場合、完全にサポートされている本番ソリューションであることを示す良い兆候だと思います: http://projects.unbit.it/uwsgi/wiki/VirtualHosting
開発と実稼働の両方の展開にDockerコンテナーを使用することは現在非常に人気があるため、この傾向に従うことを検討している場合、virtualenvはもう必要ありません。