You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu VPS生产环境Selenium报Chrome进程崩溃问题求助

Selenium+Flask生产环境Chrome崩溃报错修复方案

这个报错的核心诱因是开发环境和生产环境的运行上下文不一致,你已经加了常规的无头运行参数仍报错,按以下顺序排查修复即可:

    1. 修正Chrome二进制路径配置,排除路径错误
      首先执行命令确认Chrome真实安装路径,不要靠默认匹配:
    which google-chrome
    which google-chrome-stable
    

    Ubuntu环境下/usr/bin/google-chrome通常是指向google-chrome-stable的软链接,直接打开你代码中注释的二进制路径配置项,显式指定路径,同时注意修正你提到的路径笔误(错误路径/urs/bin/要改成正确的/usr/bin/):

    option.binary_location = "/usr/bin/google-chrome-stable"
    
    1. 删除冲突的启动参数,解决端口抢占问题
      你当前配置的--remote-debugging-port=9222是触发开发正常、生产报错的典型诱因:开发模式是单进程运行,不会出现端口冲突;但生产环境如果用多worker启动Flask,多个Chrome实例会同时抢占9222端口,直接导致Chrome启动失败被判定为崩溃。无桌面VPS环境跑Selenium不需要开启远程调试端口,直接删除这行参数即可。
    1. 修复运行用户权限问题
      开发模式下你是用自己登录的main用户手动执行脚本,拥有完整的目录读写权限;但生产环境如果用systemd、Gunicorn+Nginx托管应用,默认运行用户通常是www-data、nobody这类权限极低的系统用户,没有Chrome启动所需的临时目录、配置目录读写权限,会直接导致Chrome启动后秒退。
      按以下步骤修复:
    • 创建独立的Chrome运行临时目录并赋权:
      mkdir -p /tmp/chrome-runtime
      chmod 777 /tmp/chrome-runtime
      
    • 在Chrome启动参数中追加配置,强制使用该独立目录,避免默认目录权限不足:
      option.add_argument("--user-data-dir=/tmp/chrome-runtime")
      option.add_argument("--disk-cache-dir=/tmp/chrome-runtime")
      
    • 如果你用systemd配置服务自启,不要使用User=nobody这类无家目录的系统用户运行应用,直接换成你开发模式下跑通脚本的普通用户(比如你的main用户),从根源避免权限问题。
    1. 修正ChromeDriver路径权限问题
      你当前把ChromeDriver放在个人家目录下的/home/path/to/路径,如果生产环境运行用户没有该目录的执行权限,会出现ChromeDriver启动成功但无法拉起Chrome的问题。直接把ChromeDriver移到系统标准可执行目录并赋全局权限:
    sudo mv /home/path/to/chromedriver /usr/bin/
    sudo chmod +x /usr/bin/chromedriver
    

    同时把代码中Service的路径改成/usr/bin/chromedriver即可。

  • 验证方式
    改完配置后,不要直接挂到托管服务里跑,先切换到生产环境实际运行应用的用户,手动执行脚本验证:

    # 比如你生产环境用www-data用户跑Gunicorn,就执行下面命令
    sudo -u www-data python3 pyfile.py
    

    手动执行无报错后,再启动生产托管服务,就不会再出现Chrome崩溃的报错。


内容的提问来源于stack exchange,提问作者dev-null

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 08:21:53