私の全体的な目標は、root アクセス権を持たないサーバーで django を実行することです。メインの apache サーバーに mod_fcgid をインストールするように管理者を説得しましたが、基本的にルート側からできることはそれだけです。
多くの苦労の後、私の現在のセットアップは、virtualenv を作成し、django、flup、および MySQLdb-python を virtualenv にインストールし、.htaccess ファイルが fastcgid を使用する Web アクセス可能なディレクトリに「mysite.fcgi」スクリプトを作成することです。 fcgi ファイル。これはすべて機能し、ブラウザを使用してmysite.fcgiをロードすると、djangoプロジェクトに正常に到達します.djangoエラーページが表示されるため、これを知っています(数え切れないほどの「スクリプトヘッダーの早期終了」500ページではなく)すべてのパスを把握しようとしている間)。
したがって、私が取得しているdjangoエラーページには次のように書かれています:
ImproperlyConfigured at /
Error loading MySQLdb module: libmysqlclient.so.18: cannot open shared object file: No such file or directory
ただし、実行する前に bash シェルに次の行を追加する限り、「python manage.py runserver」を実行できるため、基本的にすべてが機能することがわかっています。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/alternate_versions/mysql-5.5.11/lib
したがって、これを .htaccess ファイルに追加しようとしました:
SetEnv LD_LIBRARY_PATH /opt/alternate_versions/mysql-5.5.11/lib
しかし、それは私のdjangoエラーメッセージには影響しません(djangoデバッグ画面の下部に正しく設定された環境変数を表示する以外は)。なぜこれが機能しないのかわかりません。
これにより、MySQLdb-python パッケージに戻ります。ソースをダウンロードし、virtualenv 内から「python setup.py build」と「python setup.py install」を実行してビルドしました。ただし、これはおそらく重要な問題です。システムのデフォルトではない mysql インストールを使用する必要があります。 デフォルトのインストールには、ソースも mysql_config コマンドもありません。代替インストールはより新しく、mysql-python に必要な source/devel バージョンがあります。そのため、MySQLdb-python の site.cfg ファイルで、mysql_config 変数を別の mysql インストールを指すように指定する必要がありました。
mysql_config = /opt/alternate_versions/mysql-5.5.11-src/scripts/mysql_config
--libs オプションを使用して mysql_config を実行すると、(正しくは?) libmysqlclient.so.18 ファイルが存在するディレクトリを指しています。
-L/var/alternate_versions/mysql-5.5.11/lib -lmysqlclient -lpthread -lz -lm -lrt -ldl
前進するためのアイデア:
MySQLdb ライブラリを構築する別の方法はありますか? site.cfg ファイルでさまざまなオプション (static=True、embedded=True) を試しましたが、これも機能しません。それらが何をしているのかよくわからないので、これらのオプションのすべての組み合わせを試したわけではありません。
MySQLdb ライブラリへのパスを手動で追加できますか? 変更方法がわからない卵ファイルにあると思います。
MySQLdb が root としてインストールされている場合、違いはありますか? 管理者に試してもらう前に、このオプションに自信を持ちたいと思います。代わりの mysql インストールが必要になるという問題がまだ残っています。
Apache の LD_LIBRARY_PATH を指定する別の方法はありますか?
提案をありがとう。