2016-11-20 6 views
1

セレンスクリプトを実行するフラスコアプリケーションを作成しました。フラスコ内ではうまく動作しますが、wsgiを使用してapacheに転送すると、apache.logからこのエラーが発生します。テンプレートはロードされますが、セレンスクリプトは実行されません。関連するerror.log行と設定ファイルを添付します。どんな助けでも大歓迎です!Apacheでwsgi seleniumスクリプトを実行しようとすると、 "geckodriver.log"のアクセス許可が拒否されました

[Sun Nov 20 00:37:28.995529 2016] [wsgi:error] [pid 7492:tid 1954542640] File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/service.py", line 45, in __init__ 
[Sun Nov 20 00:37:28.995545 2016] [wsgi:error] [pid 7492:tid 1954542640]  log_file = open(log_path, "a+") 
[Sun Nov 20 00:37:28.995560 2016] [wsgi:error] [pid 7492:tid 1954542640] IOError: [Errno 13] Permission denied: 'geckodriver.log' 

webroombooker.config

<VirtualHost *:80> 
      ServerName localhost 

      WSGIScriptAlias//home/pi/Website/webroombooker.wsgi 

      <Directory /home/pi/Website/> 
        Require all granted 
      </Directory> 

      ErrorLog ${APACHE_LOG_DIR}/error.log 
      LogLevel warn 
      CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

000-default.config

<Directory /home/pi/Website/> 
      Require all granted 
</Directory> 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

webroombooker.wsgi

#!/usr/bin/python 

import sys 
import logging 

logging.basicConfig(stream=sys.stderr) 

sys.path.insert(0,"/home/pi/Website") 

from webroombooker import app as application 

は、高度にありがとうございます!私はこれでかなり新しいです!

+1

Apacheは異なるユーザーとして、異なる環境で、異なる権限で実行されます。ほとんどの場合、ユーザは 'www-data'ユーザとして実行されるので、このユーザはあなたのファイルにアクセスする必要があります。 – furas

+0

ファイルと質問にchmod 777を使用しましたが、同じ結果が –

+0

で、フォルダ(とその親フォルダ)でどのモードを使用していますか? – furas

答えて

0

Apache/mod_wsgiでのWSGIアプリケーションプロセスの現在の作業ディレクトリは、通常、ルートディレクトリになります。そのディレクトリはrootユーザーが所有しています。絶対パスではなく相対パス名をログファイルに使用しようとしているので、ルートディレクトリにルートディレクトリを作成しようとします。rootユーザーが所有しているため、実行できません。参照:

伐採のためのApache/mod_wsgiの下で実行されているとき、あなたはstderrにログインするアプリケーションを設定したほうが良いです。そうすれば、Apacheのエラーログに記録され、ログファイルをどこに書き込めるか心配する必要はありません。

+0

ありがとう!問題は、セレンがデフォルトでこのファイルに記録されることです。私はこれを止める方法はないと思う。 –

+0

コードでFirefoxドライバを作成しますか?そうであれば、 '' browser = webdriver.Firefox(log_path = None) ''を渡してみるか、Apacheが実行できる場所に絶対ログファイルパスを渡してください。 http://blog.michaelyin.info/2015/05/18/how-to-disable-ghostdriver-log-when-using-selenium/に記載されている他のドライバについても同様のことを参照してください.Seleniumのコードを見ると、Firefoxドライバは、ブログ投稿に記載されているドライブに異なるパラメータ名を使用します。 –

+0

私はそれを作成しませんでした。自動的に作成されます。 log_path =誰もうまくいきませんでした。しかし、ありがとう! –

関連する問題