特定のウェブページをスクレイピングする仕組みをDjango+pyvirtualdisplay+seleniumで製作中です。
動作確認環境は、同じMac内に以下の2つがあります。
python manage.py runserver
で起動させるDjangoの開発サーバを使っての動作確認(http://127.0.0.1:8000/)- Apache+mod_wsgiで動作確認(http://localhost/)
このそれぞれの環境において、pyvirtualdisplay+seleniumでスクレイピングを行う処理を実行すると、1に方は問題なく動作するのに、2の方だけ以下のエラーとなってしまいます。
EasyProcessCheckInstalledError at /xxxxxxxxxxx cmd=['Xvfb', '-help'] OSError=[Errno 2] No such file or directory: 'Xvfb': 'Xvfb' Program install error!
MacにはXQuartzをインストール済みで、XQuartzを起動してxtermが表示された状態にして処理を実行しています。(処理を実行すると、1の方はFirefoxのウィンドウが起動してスクレイピング対象のウェブページが表示され、その後、Firefoxが終了する様子が見て取れます)
Macのターミナルで「which Xvfb」を実施しても、以下のように表示されるので、Xvfbは問題なくインストールされているものと考えています。
$ which Xvfb /opt/X11/bin/Xvfb
Django開発サーバではXvfbが正しく認識され、Apache+mod_wsgiではXvfbが認識されていないのではないかと思っています。
Apache+mod_wsgiで動作させる場合、Xvfbのパスを認識させる設定などが必要なのでしょうか??
Apache+mod_wsgiとXvfbとのそれぞれの実行ユーザーに関する何らかの設定が必要なのでしょうか??
いろいろとググってみましたが同じような問題にフォーカスした情報が見つけられず万策尽きたため、ここで質問させていただきました。
MacのApache+mod_wsgiでXvfbを動作させて、上記のDjangoエラーメッセージを解消する方法やヒント、切り分け方法など、ご指南いただけると大変助かります。
どうぞよろしくお願い致します。m(_ _)m
該当のソースコード
python
1from pyvirtualdisplay import Display 2from selenium import webdriver 3from selenium.webdriver.firefox.options import Options 4 5#仮想ディスプレイの設定 6display = Display(visible=0, size=(800, 600)) 7display.start() 8 9#webdriverの設定 10geckodriver_path = "/usr/local/bin/geckodriver" 11options = Options() 12options.set_headless(Options.headless) 13 14#selenium webdriverの起動 15driver = webdriver.Firefox(executable_path=geckodriver_path, log_path=settings.WEB_DRIVER_LOG_PATH, options=options)
mod_wsgi
# path # /etc/apache2/other/wsgi.conf LoadModule wsgi_module /Users/hogehoge/code/pyenv/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-darwin.so WSGIScriptAlias / /Users/hogehoge/code/pyenv/my_project/my_project/wsgi.py WSGIPythonPath /Users/hogehoge/code/pyenv/lib/python3.6/site-packages <Directory /Users/hogehoge/code/pyenv/my_project/my_project> Require all granted </Directory>
各種バージョン
- MacOS : 10.14.6
- Python : 3.6.5
- Django : 2.1
- Apache : 2.4.34
- mod_wsgi : 4.6.8
- XQuartz : 2.7.11
- X :
Xorg -version
の実行結果↓
X.Org X Server 1.18.4 Release Date: 2016-07-19 X Protocol Version 11, Revision 0 Build Operating System: Darwin 14.0 x86_64 Current Operating System: Darwin hayashikenichinoMacBook-Pro.local 18.7.0 Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64 Build Date: 25 October 2016 10:12:52PM Current version of pixman: 0.34.0 Before reporting problems, check http://wiki.x.org to make sure that you have the latest version.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。