Ci sono due parti relativi a questa domanda:
- Esecuzione di cromo (quello di elettroni e, a loro volta, da incubo "usi") headlessly su Linux.
- Installa/Utilizza xvfb per eseguire chromium sul motore dell'app.
Parte 1)
devi Xvfb.
Xvfb (Virtual Framebuffer) è solo un programma che, da wiki: "è un server di visualizzazione che implementa il protocollo del server di visualizzazione X11. Contrariamente ad altri server di visualizzazione, Xvfb esegue tutte le operazioni grafiche in memoria senza mostrare alcun output di schermo. "
Quale è ciò che è necessario per eseguire un browser senza un'uscita schermo.
Prima di tutto, installa tutti i pacchetti relativi a xvfb per eseguirlo su 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
Quindi, con Xvfb installato è necessario creare uno schermo virtuale e Xvfb esportare una chiamata DISPLAY variabile di ambiente che punta ad esso. Chromium in Electron cercherà automaticamente $ DISPLAY.
Quanto sopra può essere fatto più facilmente. Qui ci sono due opzioni:
Da questo punto in poi si dovrebbe essere in grado di eseguire incubo su linux.
Parte 2)
Nodejs su App Engine è gestito attraverso l'ambiente flessibile. Significato, attraverso i contenitori docker.
Dal runtime di GAE nodejs: "Se l'applicazione richiede ulteriori dipendenze a livello di sistema operativo, per installare i pacchetti appropriati sarà necessario utilizzare un runtime personalizzato basato su questo runtime."
Docker è un intero argomento a parte, ma per fare quanto sopra con il motore di applicazione si hanno due opzioni per quanto ne so:
Extending the runtime
Usa GAE con un custom runtime da graffiare.
In entrambi i casi, in pratica quello che si avrebbe bisogno di fare è installare i pacchetti relativi Xvfb li definiscono nel dockerfile e che dovrebbe fare il trucco.
Buona fortuna!
Note importanti:
È possibile che questo apt-get pacchetti dipendono dalla disponibilità per quanto riguarda la distribuzione Linux (il codice precedente funziona su Ubuntu e Debian). Ad esempio, con il set di pacchetti specificato e al momento di questo post, funzionerà con l'ambiente flessibile di GAE poiché è basato su debian jessie e non funzionerà su linux alpha.
Chromium richiede un'assegnazione minima dev/shm per funzionare correttamente. Ad esempio, su heroku è fissato a 5mb e non c'è modo di cambiarlo. Chromium si bloccherà dopo alcune azioni da incubo. Quindi il cromo non funzionerà su qualsiasi dinamo di heroku di qualsiasi dimensione. In docker è impostato su 64 MB, quindi a seconda della complessità del tuo script andrà bene o sarà necessario regolarlo. Nelle installazioni linux semplici, dev/shm è normalmente impostato su metà della memoria disponibile totale. Quindi, in un ambiente 512mb, dev/shm sarà impostato su 256mb e l'incubo funzionerà molto probabilmente.
Vale la pena notare che NON è possibile modificare/dev/shm su appengine. –