hhs*_*diq 7 google-app-engine yaml node.js nightmare electron
有一个着名的问题是噩梦和电子没有在无头的linux服务器上运行.官方电子文档建议使用xvfb来伪造显示器.他们建议将这个.yml文件用于travis.
addons:
apt:
packages:
- xvfb
install:
- export DISPLAY=':99.0'
- Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
题
如何将上面的代码app.yaml用于node.js的google appengine文件.我试图按原样使用它,但是glcoud会抛出一个addon无效命令的错误.差距官方文档没有任何类似的命令.
任何建议我们如何在node.js的谷歌appengine上运行噩梦和电子..?
ric*_*med 13
这个问题涉及两个部分:
第1部分)
你需要xvfb.
Xvfb(Virtual Framebuffer)只是一个程序,来自wiki:"是一个实现X11显示服务器协议的显示服务器.与其他显示服务器相比,Xvfb在内存中执行所有图形操作而不显示任何屏幕输出."
这是您在没有屏幕输出的情况下运行浏览器所需的.
首先,安装所有xvfb相关软件包以在linux上运行它.
apt-get install -y \
xvfb \
x11-xkb-utils \
xfonts-100dpi \
xfonts-75dpi \
xfonts-scalable \
xfonts-cyrillic \
x11-apps \
clang \
libdbus-1-dev \
libgtk2.0-dev \
libnotify-dev \
libgnome-keyring-dev \
libgconf2-dev \
libasound2-dev \
libcap-dev \
libcups2-dev \
libxtst-dev \
libxss1 \
libnss3-dev \
gcc-multilib \
g++-multilib
因此,安装xvfb后,您需要创建一个虚拟xvfb屏幕并导出一个名为DISPLAY的环境变量,指向它.Electron中的Chromium会自动寻找$ DISPLAY.
以上可以更容易地完成.这有两个选择:
用linux cli调用程序(如果恶梦脚本运行正常,则忽略xvfb警告):
xvfb-run -a node main.js.要么...
如果使用渲染相关功能,如截屏:xvfb-run -a --server-args="-screen 0 1280x1028x24 -ac +extension GLX +extension RANDR +render" node app.js.Google的xvfb选项可根据您的喜好进行调整.
以编程方式:使用xvfb npm包
从这一点开始,你应该能够在linux上运行噩梦.
第2部分)
app引擎上的Nodej通过灵活的环境运行.意思是,通过docker容器.
从GAE nodejs运行时:"如果您的应用程序需要额外的操作系统级依赖关系,您将需要使用基于此运行时的自定义运行时来安装相应的包."
Docker是一个完全独立的主题,但是为了使用app引擎执行上述操作,据我所知,您有两个选项:
无论哪种方式,基本上你需要做的是安装在dockerfile中定义它们的xvfb相关包,这应该可以解决问题.
祝好运!
重要笔记:
上面的apt-get软件包取决于linux发行版的可用性(上面的代码适用于ubuntu和debian).例如,使用指定的包集合,在本文发布时,它将与GAE的灵活环境一起使用,因为它基于debian jessie,并且不适用于linux alpine.
Chromium需要最小的dev/shm分配才能运行良好.例如,在heroku上它固定为5mb - 并且无法更改它.经过几次噩梦之后,铬会崩溃.因此,铬不适用于任何大小的任何heroku的dynos.在docker中它设置为64mb,因此根据脚本的复杂程度,您可以正常工作或需要调整它.在普通的linux安装中,dev/shm通常设置为总可用内存的一半.所以在512mb环境中,dev/shm将被设置为256mb,而梦魇很可能会正常运行.
| 归档时间: |
|
| 查看次数: |
1917 次 |
| 最近记录: |