【问题标题】:Is it possible to run xvfb on Heroku?可以在 Heroku 上运行 xvfb 吗?
【发布时间】:2018-05-21 01:15:07
【问题描述】:

我想在 Heroku 上运行 xvfb。在我的 Mac 上,我使用 dmg 安装它。有人知道如何在 Heroku 上解决这个问题吗?

我遇到了这些 buildpacks (http://github.com/douglasjsellers/heroku-xvfb-buildpack) - 但按照说明似乎并没有解决问题,因为 xvfb 仍未正确安装。另外,我尝试安装 xvfbwrapper (https://pypi.python.org/pypi/xvfbwrapper/0.1.0),但它仍然无法在 Heroku 上运行(对于可能是菜鸟的问题表示歉意)。

这是我在 Heroku 的日志中遇到的错误:

2015-02-24T02:09:16.035298+00:00 app[web.6]: cmd=['Xvfb', '-help']
2015-02-24T02:09:16.035564+00:00 app[web.6]: Program install error! 
2015-02-24T02:09:16.035302+00:00 app[web.6]: OSError=[Errno 2] No such file or directory

代码如下:

temp = tempfile.mkstemp(suffix='.html')
html = os.fdopen(temp[0], "r+")
html.write(cv)
html.seek(0, 0)

display = Display(visible=0, size=(800, 600))
display.start()

# Open the file on Selenium to load the JavaScript
driver = webdriver.Firefox()
driver.get("file://" + temp[1])

【问题讨论】:

  • 我也卡住了。昨天我很容易让它在亚马逊上运行,但它在 heroku 上就是不动。

标签: heroku xvfb


【解决方案1】:

我在研究如何为 Cedar-14 更新 Xvfb 时发现了这个问题,我设法让 #2 工作。方法如下:

  1. 我使用 buildpack-apt 安装x11-xkb-utils xvfb x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic libxfont1 xvfb

  2. 运行 apt buildpack 后,您需要对 Xvfb 进行一些修补以使一切顺利进行。为此,我使用了我自己的run-bash buildpack,但所有让您在 Heroku 编译期间运行 bash 脚本的东西都可以工作。这是我用来修补 Xvfb 和索引字体的脚本:https://gist.github.com/fxtentacle/960cdb96ece01add8686

  3. 现在您可以使用heroku run bashXAUTHORITY=/tmp/xvfb-run.2NG0xl/Xauthority Xvfb ":99" -screen 0 1280x1024x24 -nolisten tcp 检查Xvfb 是否正常工作。

【讨论】:

    【解决方案2】:

    是的,这是可能的,但很复杂。我遵循了 fxtentacle 所做的一些事情(在他们的回答中),但这可能更简单。这些说明提供了最小的 Xvfb 设置;它仍然会打印出一堆警告。

    使用heroku-buildpack-apt 安装xvfblibnotify4 debian 软件包。然后使用此 buildpack 修复 /usr/bin/xkbcomp 问题: https://github.com/captain401/heroku-buildpack-xvfb

    然后您可以使用xvfb-run $PROGRAM 来运行您的应用程序。

    【讨论】:

    • 使用上面的指令我可以运行 xvfb-run。不幸的是,电子失败了:error while loading shared libraries: libnotify.so.4: cannot open shared object file: No such file or directory。通过bash 手动运行它没有给出任何错误。 libnotify4 已安装 -- 在/app/.apt 下。我想知道为什么节点进程没有拿起LD_LIBRARY_PATH env var。
    • 啊,这在上个月的某个时候发生了变化——你是否通过 Heroku-buildpack-apt 的 Aptfile 安装了 libnotify4?我还必须添加它(除了 xvfb)。您可以通过运行heroku run bash 来检查您的LD_LIBRARY_PATH 以获取shell。
    • 是的,我是通过 Aptfile 安装的。在 bash 上使用 xvfb-run 调用电子没有给我任何问题。但是,通过 nodejs 进程执行此操作对我来说从来没有用过:(。我什至尝试从 Heroku 配置中设置 LD_LIBRARY_PATH,但运气不好——又是 libnotify4 问题。
    • Electron 还有其他问题 - 这已在最近的版本中得到修复:bugs.chromium.org/p/chromium/issues/detail?id=522853
    【解决方案3】:

    我也在想同样的事情。好像你已经找到了this guy's issue。提到的所有 buildpack 都已有 1 年以上的历史,不再工作了。

    两个看似可行的选项:

    1. 编译在 Heroku 当前操作系统和架构上运行的独立 xvfb 二进制文件 https://github.com/kenshin23/xvfb-portable-binary,并在更新时重建。

    2. 将 apt 包管理器中的所有依赖项安装到 ~/.apt 之类的位置,然后从那里运行,如最新的 buildpack-apt。对我来说,这个选项随着sh: 1: /usr/bin/xkbcomp: not found 而死。 Xvfb 正在查看 /,而 apt 将命令安装到 ~/.apt/usr/bin/xkbcomp。还没弄清楚如何告诉 Xvfb 查看~/.apt/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 2011-10-18
      • 2014-02-22
      • 1970-01-01
      • 2012-08-02
      相关资源
      最近更新 更多