私は、Apache を実行している Ubuntu 16.04 サーバーでホストされている Flask アプリに取り組んでいます。このアプリは、Google Earth Engine (GEE) を利用しています。
デフォルトでは、GEE はトークンを に格納し、そこからトークンをロード~/.config/earthengine/credentials
します。これは GEE を呼び出すときに問題を引き起こすことはありませんがpython -c
、GEE は Flask 内からトークンにアクセスできないため、実行に失敗します。
つまり、私の Flask アプリ内で呼び出されると、GEE は例外を発生させます。この例外を apacheerror_log
で追跡しましたが、これが問題の原因であると考えています。
[wsgi:error] tokens = json.load(open(oauth.get_credentials_path())
[wsgi:error] FileNotFoundError: [Errno 2] No such file or directory:
'var/www/.config/earthengine/credentials'
デフォルトの認証情報ファイルのパスearthengine/oauth.py
を'. /.config/earthengine/credentials'
. その後も GEE を呼び出すことはできましたがpython -c
、Flask ではうまくいきませんでした。
私は、Flask アプリのコンテキスト内で GEE を使用するための特定の種類のフォルダーを作成し、それを指すことを検討しましearthengine/oauth.py
た。しかし、私はそうすることに非常に警戒しています。
現時点では、これが Flask の問題なのか、Ubuntu の問題なのか、WSGI の問題なのか、それともまったく別の問題なのかわかりません。
一般的に言えば、解決策に近づくのに役立つと思われる 2 つの質問があります。(1) oauth スクリプトが Ubuntu で ~/.config にアクセスできるようにするにはどうすればよいですか? (2) ホーム ディレクトリとして Apache を適切にポイントするにはどうすればよいですか。つまり、どの .conf ファイルを変更してこの問題を解決する必要がありますか?
編集:いくつかの mod-wsgi の問題を読んで、これが何かに関係している可能性があると思いますWSGIPassAuthorization
。もしそうなら、私は正確に何をすべきですか?
更新:ここで提案されているようにファイルのアクセス許可を変更し、oauth.py が指すファイルを に変更しました'/root/.config/earthengine/credentials'
。良いニュース: ファイルへのアクセスに関するエラーが発生しなくなりました。悪いニュース: 明らかに悪い更新トークンが原因でエラーが発生しています。この種のことが時計の問題である可能性があることを確認しましたが、私の時計は問題ないようです。
Local time: Sun 2019-05-26 17:11:12 UTC
Universal time: Sun 2019-05-26 17:11:12 UTC
RTC time: Sun 2019-05-26 17:11:12
Time zone: Etc/UTC (UTC, +0000)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
(私が見ると、時計もきれいに見えntpd -c lpeer output
ます。)
この観点からearthengine authenticate
、資格情報ファイルのトークン値が変更されないことに気付くかもしれません。これは私のローカルでの Earthengine の使用を妨げているようには見えませんが、Flask 内での使用は依然として問題です。
更新:これは、Google サービス アカウントを使用せずに呼び出しを試みた結果であると考えています。