Flask+Gunicorn+ChromeDriver正常模式可用,守护进程模式报错找不到Chrome
解决Gunicorn守护进程模式下找不到Google Chrome的问题
问题根源
你的systemd服务文件中,Environment字段仅设置了项目的bin目录作为PATH,覆盖了系统默认的环境变量路径。而Google Chrome位于/usr/bin下,守护进程运行时无法在指定的PATH中找到Chrome可执行文件,从而触发报错。
解决方法
方法1:修改systemd服务的PATH环境变量
编辑你的systemd服务文件,将/usr/bin追加到PATH配置中:
[Service] User=www-data Group=www-data WorkingDirectory=/var/www/myproject Environment="PATH=/var/www/myproject/bin:/usr/bin" # 添加:/usr/bin ExecStart=/var/www/myproject/venv/bin/gunicorn --timeout 1000 -b :5000 wsgi:app
执行以下命令重新加载systemd配置并重启服务:
sudo systemctl daemon-reload sudo systemctl restart your-service-name # 替换为你的实际服务名称
方法2:在ChromeOptions中直接指定Chrome二进制路径
在初始化ChromeDriver的代码里,直接指定Chrome的可执行文件路径,跳过PATH查找逻辑:
options = webdriver.ChromeOptions() options.add_argument('--no-sandbox') options.add_argument("--headless") options.add_argument('--disable-dev-shm-usage') options.binary_location = "/usr/bin/google-chrome" # 新增该行指定Chrome路径 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
验证
重启服务后,触发使用ChromeDriver的功能,检查系统日志是否仍存在google-chrome: not found的报错信息。
内容的提问来源于stack exchange,提问作者elixir
相关产品推荐
相关产品推荐

