#python #apache #selenium #ubuntu #flask
#python #apache #селен #ubuntu #flask
Вопрос:
Я ломаю голову, пытаясь заставить драйвер Selenium / Chromedriver работать над проектом Flask на Ubuntu server 20.04, Python3.8. Приложение отлично работает как в автономном режиме, так и в режиме отладки. Но когда я запускаю его за веб-сервером, Apache2 с модулем WSGI, он работает неправильно. сообщение, которое я приветствую, — «Chromedriver совершенно неожиданно».
Опять же, Chromedriver работает хорошо, путь указан правильно, и когда я запускаю его на debub на сервере или даже удаленно, он работает действительно отлично.
У меня заканчиваются варианты, если кто-нибудь может помочь, я буду очень признателен.
Вот как я открываю Chromedriver в своем коде:
options = Options()
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
options.add_argument("enable-automation")
options.add_argument("--disable-infobars")
options.add_argument("--disable-dev-shm-usage")
driver = webdriver.Chrome(executable_path="/usr/lib/chromium-browser/chromedriver", options=options)
Просматривая журнал из Apache, я получаю следующее сообщение
WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(chrome not reachable)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 4.15.0-66-generic x86_64)
Комментарии:
1.
Apache
обычно код выполняется от имени другого пользователя (часто пользователяwww
) с разными привилегиями, возможно, с разными настройками среды и с разнымиcurrent working directory
— все для вашей безопасности — потому что, если кто-то обнаружит ошибку в Apache, он может получить доступ к вашей учетной записи и получить ваш пароль или другую информацию.2. Если я запускаю одно и то же приложение в режиме отладки в той же папке /var/www/html, оно работает отлично, проблема заключается в том, что я запускаю его в интернете onde. Есть ли у вас какие-либо предложения или подсказки, как решить проблему с разрешением if?
3. как я уже сказал, проблема может быть не в коде, а в том, как apache / system его запускает. При запуске вы можете использовать
print()
илиlogging
, чтобы посмотреть, какие значения получит программа при запуске сApache
помощью . ie. checkos.getcwd()
,os.getenv
, и т.д. ПосколькуApache
вы можете запускать его с разными привилегиями, поэтому вам может потребоваться использовать полные пути, измените привилегии для папок, чтобы пользовательwww
мог получить доступ ко всем файлам / программам, которые вам нужны — commandchmod
в Linux.4. Я попытался изменить разрешения и все такое, но, похоже, ваше предложение не сработало. Есть еще какие-нибудь советы или предложения?