4

私はDjangoとPythonで構築された2つのサイトを持つサーバーを持っています.1つのサイトは古いバージョンのdjangoで構築された主要なサイトであり、もう1つは新しいリリースで構築されています.新しいリリースにアップグレードし、他の主要な側面サイトが壊れています。たとえば、python パスで別のバージョンを使用するようにサイトに指示することはできますか? 仮想ホストで?

私は助けを切望しています!

いくつかの詳細情報、それはLinuxおよびサーバーユーザーのmod pythonにあります。これが私がvitrualhostで試していることです

<Location "/">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE website.settings
        SetEnv PYTHON_EGG_CACHE /var/cache/pyeggcache
        SetEnv PYTHONPATH "sys.path + ['usr/lib/python2.6/site-packages/django2']"
        PythonDebug On
        PythonPath "['/var/www/website_live/src'] + ['/var/www/webiste_live/src/website'] + sys.path"
    </Location>

Web サイト名を「Web サイト」に置き換えました。私の別のバージョンの Django は /usr/lib/python2.6/site-packages/django2 にあります。

4

5 に答える 5

6

サーバー上に複数のサイトがある場合は、virtualenvなどの使用を検討する必要があります。

これを使用して、異なる仮想環境をセットアップし、サイト固有のパッケージなどをそこに配置できます。サイト パッケージ フォルダーを台無しにする必要はありません。また、使用するものの特定のバージョンを使用してこれらの環境をローカルに簡単にセットアップできるため、開発がはるかに簡単になります。

これは、他のアプリを使用するとすぐに非常に便利になります。これは、Pinax が非常に頻繁に使用するものです。パッケージとバージョンを処理する最も簡単な方法は、単に要件ファイルを作成することです。

于 2009-11-24T14:32:00.010 に答える
5

はい、できます。これについては、こちらで詳しくブログに書いています

于 2009-11-24T10:59:10.417 に答える
1

もちろんそうですが、少し寄り添う必要があります。これは主に、使用するサーバーによって異なります。

重要なポイントは$PYTHONPATHです。この変数は、Pythonが埋め込むモジュールを探す場所を格納します。使用する場合

import django.conf

$ PYTHONPATH内のすべてのディレクトリを実際に調べて、という名前のフォルダを検索しますdjango

したがって、重要なのは、リクエストの送信先に応じて$PYTHONPATHを操作することです。mod_pythonとApacheを使用する場合、次のようになります。

<VirtualHost *:80>
    DocumentRoot "/var/htdocs/old_django_project"
    ServerName old-django
    PythonPath "sys.path + ['/var/software/old_django']"
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/htdocs/new_django_project"
    ServerName new-django
    PythonPath "sys.path + ['/var/software/new_django']"
</VirtualHost>

次に、訪問http://old-django/すると、古いdjangoインスタンスと、同様に新しいdjangoが表示されます。

于 2009-11-24T10:57:04.640 に答える
0

私はこの種のものにウィグワムを使用しています。これは手間のかかるアプローチであり、Apahce、Python、Django などのそれぞれに個別のビルドがありますが、非常にうまく機能します。

于 2009-11-24T16:33:16.583 に答える
0

それは可能ですが、Django と Python の両方の異なるバージョンを使用した環境での私の経験では、特に複数の開発者がプロ​​ジェクトに取り組んでいる場合は、面倒になる傾向があります。各開発者は、Django の 2 つのバージョンを維持し、使用できる機能と使用できない機能を覚えておく必要があります。

于 2009-11-24T13:41:07.430 に答える