解決策を探しています。/etc/profile で定義された変数を apache に渡すことができません。
これが私が設定しようとしているものです:
WGSI インターフェイスを介して Apache/Passenger (modrails) を介してデプロイする django アプリケーションがあります。
私の settings.py では、この python コマンドを使用しています: ENVIRONMENT = os.getenv('ENV', 'PROD') したがって、ENVIRONMENT 変数が定義されていない場合、デフォルトで本番環境の設定になります。
これは、接続する DB を管理し、デバッグ ツールを有効にするのに役立ちます。
/etc/profile から環境変数を取得できないのは、DEV サーバーにいるときです。
Ubuntu 10.04サーバー上にあります
だからここに私が行ったいくつかのテストがあります:
1) /etc/profile に入れる -> ENV='DEV' export ENV
2) /etc/profile.d/environment.sh の下 -> #!/bin/sh ENV='DEV' export ENV
3)仮想ホスト構成ファイルで-> PassEnv ENV
4)まだ仮想ホスト構成ファイルにあります-> SetEnv ENV DEV
5) このファイル viron['ENV'] = 'DEV' を強制する場合、passenger_wgsi.py を使用してアプリケーションを登録する必要があります。
ENVIRONMENT = os.getenv('ENV', 'PROD')
os.environ['ENV'] = ENVIRONMENT
なぜ、またはどうすればこれを修正できますか? ありがとう!
@ジョシュ
返信いただきありがとうございます。しかし、まだいくつか質問があります。
Passenger では、仮想ホスト ファイルに設定する必要があったのは、python/django アプリ内の public フォルダーの場所だけでした。したがって、私の仮想ホスト ファイルは次のようになります。
DocumentRoot path_to_my_public_folder # /home/user/workspace/myapp/public
次に、myapp フォルダー内には、passenger_wsgi.py があります。
あなたが言ったようにほとんど定義しません:
import sys, os
sys.path.append(os.getcwd())
os.environ['DJANGO_SETTINGS_MODULE'] = "myapp.settings"
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
これらの設定の後、アプリケーションが実行されました。したがって、使用した wsgi ファイルを指定する必要があるとあなたが言っているときは、あなたの指示が欠けている可能性があります。私は、passenger_wsgi.py を直接見つけて、現時点で実行しているように見えるものをデフォルトでロードします。
もう 1 つ知っておくべきことは、私たちのプロジェクトは SVN リポジトリにあり、このファイルを多くのユーザー用にセットアップして、異なる設定がないようにしたいということです。
しかし、明日テストするのは、共通情報を含む 1 つのベース wsgi ファイルを作成し、コンピューターのホスト名に基づいて、dev_wsgi.py や prod_wsgi.py などから他の設定をインポートするというアイデアです。
この名前を python で取得し、その名前に基づいて、使用する必要のある変数を設定できるはずです。
アイデアをありがとう、それは大歓迎です。