Flask Селен Ubuntu Apache

#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. check os.getcwd() , os.getenv , и т.д. Поскольку Apache вы можете запускать его с разными привилегиями, поэтому вам может потребоваться использовать полные пути, измените привилегии для папок, чтобы пользователь www мог получить доступ ко всем файлам / программам, которые вам нужны — command chmod в Linux.

4. Я попытался изменить разрешения и все такое, но, похоже, ваше предложение не сработало. Есть еще какие-нибудь советы или предложения?