本番サーバーでは Ubuntu 12.04 を実行しています。アプリケーションが定義済みの一貫した環境で実行されていることを確認するために、Pythonbrew を使用してカスタム Python をコンパイルします。API サーバーを実行するユーザーを作成しました。このユーザーには、Pythonbrew で作成された独自の Python 2.7.2 環境があり、pip を使用して必要なパッケージがインストールされています。
システムに uWSGI もインストールしました。API アプリケーションをラップし、mod_wsgi を介して Apache で使用できるようにします。問題は、uWSGI で正しい python バイナリを使用できないことです。現在の構成は次のようになります。
[uwsgi]
socket = 127.0.0.1:3031
processes = 4
chdir = /home/app/
pythonpath = /home/app
gid = 1002
uid = 1002
module = api
callable = APP
enable-threads = true
端末でこの構成を実行しようとすると、次のようになります。
uwsgi --ini app.ini
一部のモジュールのインポートに失敗します。このモジュールは、API ユーザーが使用している Pythonbrew 環境にのみインストールされます。問題は、uWSGI が /usr/bin でデフォルトの python バイナリを使用していることです。
1つの解決策は、APIユーザーの環境でpipを使用してインストールされた別のuWSGIを使用することですが、OSとの統合が優れているため、システムのuWSGIを使用したい.
別のものをインストールする以外に、どのPythonバイナリuWSGIを使用するかを指定する方法はありますか? uWSGI の別のインスタンスをインストールする必要がある場合、システムの起動時に起動する最善の方法は何ですか?
編集:おそらくpythonバイナリを使用していないことに気付きましたが、そのライブラリに裏打ちされているだけなので、wsgiのデフォルトのインストールとデフォルト以外のpythonを使用する方法はありません。しかし、カスタムビルドの uWSGI をシステムに統合する最良の方法は何かという疑問が残ります。