私は、Pythonのweb.pyフレームワークでバックエンドが実装されている小さなWebダッシュボードプロジェクトに取り組んでいます。
ダッシュボードにはあらゆる種類のウィジェットがあり、そのうちの1つにはweb.pyを使用してバックエンドが実装されています。問題は、指定されたアプリケーションエントリポイントの1つだけが一度に機能しているように見えることです。ダッシュボードとウィジェットのapache構成の両方が同じファイルに配置されます。apache2 / conf.d /にある元の構成ファイル(実際にはしばらくの間機能していました)は次のようになります。
WSGIPythonPath /var/www/ProjectDASHBOARD/api
WSGIScriptAlias /ProjectDASHBOARD/api /var/www/ProjectDASHBOARD/api/api.py/
AddType text/html .py
<Directory /var/www/ProjectDASHBOARD/api/>
Order deny,allow
Allow from all
</Directory>
# Stuff for graphingwidget
WSGIPythonPath /var/www/ProjectDASHBOARD/widgets/graphingwidget/api
WSGIScriptAlias /ProjectDASHBOARD/widgets/graphingwidget/api /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/api.py/
AddType text/html .py
<Directory /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/>
Order deny,allow
Allow from all
</Directory>
これだけでは機能しません。両方のapi.pyファイルに必要な次のコードもあり、適切なパスを確認し、見つからない場合は追加します(ウィジェットのファイルからの抜粋)。
import web
import json
import sys
path = '/var/www/ProjectDASHBOARD/widgets/graphingwidget/api'
if path not in sys.path:
sys.path.append(path)
ダッシュボードについても同様のチェックが行われます。
これらはすべて実際に1週間機能しましたが、最初からインストールしようとすると突然機能しなくなり、何が問題なのかがさらに混乱しました。WebページからAPIにアクセスしようとしたときに受信したエラーは、HTTPエラー500内部サーバーエラーです。次に、apache構成ファイルにいくつかの変更を加えた後、APIの1つが機能し始めました。
WSGIPythonPath /var/www/ProjectDASHBOARD/widgets/graphingwidget/api
WSGIPythonPath /var/www/ProjectDASHBOARD/api
WSGIScriptAlias /ProjectDASHBOARD/api /var/www/ProjectDASHBOARD/api/api.py/
WSGIScriptAlias /ProjectDASHBOARD/widgets/graphingwidget/api /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/api.py/
AddType text/html .py
<Directory /var/www/ProjectDASHBOARD/api/>
Order deny,allow
Allow from all
</Directory>
# Stuff for graphingwidget
AddType text/html .py
<Directory /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/>
Order deny,allow
Allow from all
</Directory>
基本的には、パスをファイルの先頭に移動し、順序を少し入れ替えると、突然、APIの1つが再び機能し始めます。順序を少し変更すると、他のAPIが機能し、他のAPIにブレーキがかかります。パスの正しい順序は覚えていませんが、ポイントは、以前は正常に機能していましたが、新しい同一の仮想マシンにインストールすると機能しなくなり、パスの順序に応じてAPIの1つだけが機能するということです。 。
当初、構成は異なるファイルにありましたが、そのようには機能しませんでした。「ターゲットWSGIスクリプトの「パス」をPythonモジュールとしてロードできません。」などのあらゆる種類のエラーがあり、同じファイルに移動したときにのみ機能し始めました。
ここで、パスの1つが他のパスによって上書きされている、またはこの間ずっと構成全体が根本的に間違っていて、運が良ければ(1週間、問題なく...)機能していると考えています。
何が悪いのかについての手がかりはありますか?