2017-08-27 16 views
0

私は、nginxを使用してuWSGIでPythonフラスコアプリを提供しています。 Pythonコードはブラウザ(Firefox、Chrome)を実行するのにsubprocess.Popen()を呼び出しますが、uWSGIログにエラーが表示されます。 エラーはlinux(ubuntu)の標準コマンド、すなわちreadlink,whichcatなどに関連しています。uWSGI pythonサブプロセスchrome/firefoxが失敗しました

これはユーザーアクセスに関係すると思われますが、わかりません。 ユーザーとwww-dataグループを使用してuWSGIサービスが実行されます。

Pythonのコード

import subprocess 

@app.route('/api/check/version', methods=['POST']) 
def check_version(): 
    pid = subprocess.Popen(['/usr/bin/firefox', '--version'], stdout=subprocess.PIPE) 
    #pid = subprocess.Popen(['/usr/bin/google-chrome', '--version'], stdout=subprocess.PIPE) 
    data = pid.communicate() 
    return data 

if __name__ == "__main__": 
    check_version() 

ログイン

**in case of doing Popen for /usr/bin/firefox 
/usr/bin/firefox: 1: /usr/bin/firefox: which: not found 

**in case of doing Popen for /usr/bin/google-chrome 
/usr/bin/google-chrome-stable: line 8: readlink: command not found 
/usr/bin/google-chrome-stable: line 10: dirname: command not found 
/usr/bin/google-chrome-stable: line 46: exec: cat: not found 
/usr/bin/google-chrome-stable: line 45: exec: cat: not found 

uWSGIサービスコンフィグ uWSGI

[Unit] 
Description=uWSGI instance to serve myproject 
After=network.target 

[Service] 
User=myuser 
Group=www-data 
WorkingDirectory=/home/gbadmin/myproject 
Environment="PATH=/home/gbadmin/myproject/myprojectenv/bin" 
ExecStart=/home/gbadmin/myproject/myprojectenv/bin/uwsgi --ini myproject.ini 

[Install] 
WantedBy=multi-user.target 

答えて

0

あなたはずっと余りに制限値あなたのPATHを与えている:おそらくあなたの問題を解決しますパス変数にこれらを追加し、

Environment="PATH=/home/gbadmin/myproject/myprojectenv/bin" 

問題の行方不明のコマンドが/binまたは/usr/bin中に通常存在している

Environment="PATH=/home/gbadmin/myproject/myprojectenv/bin:/usr/bin:/bin" 
+0

迅速な返信をいただきありがとうございます。 – Hussain

1

私はansweriありませんよあなたの質問はありますが、私はあなたが直面している問題を解決していると思います。代わりに、使用しているメソッドの代わりにdpkg -s firefox | grep '^Version:'を使用することもできます。

+0

ありがとうございましたJuggernaut、バージョンは必要なアクションのサンプルです。より多くのコマンドがPopenを必要としますが、サンプルシナリオのみを提供しました。 – Hussain

関連する問題