Estoy tratando de hacer que WebGL funcione en mi servidor Amazon EC2 (migrar desde una Mac Mini con destino a la oficina, que tiene muchos problemas).
Trabajé algunos días para que esto funcionara, pero intentaré comenzar desde donde comencé.
Primero instalé la siguiente AMI Ubuntu Server 12.04 LTS (HVM) - ami-8c8675fb
con tipo de instancia cg1.4xlarge
. Elegí ese tipo de instancia para que venga con Cirrus Logic GD 5446
las ejecuciones gráficas.
Por supuesto, la instalación principal no tiene cabeza, así que tuve que construir este servidor desde cero, lo que hice primero fue.
sudo apt-get install ubuntu-desktop
sudo apt-get install gdm
sudo /etc/init.d/gdm start
sudo dpkg-reconfigure xserver-xorg
sudo apt-get install gnome-core
Después de eso instalé un servidor LAMP (el habitual) y actualicé el kernel a Linux ip-172-31-29-168 3.8.0-37-generic #53~precise1-Ubuntu SMP Wed Feb 19 21:37:54 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
.
También registré el PPA de xorg edgers en https://launchpad.net/~xorg-edgers/+archive/ppa .
Después de reiniciar tuve que conectar una pantalla a mi servidor, elegí hacer esto con vnc4server.
Así que eso es lo habitual y mi xstartup se ve así:
#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
gnome-session --session=gnome-classic &
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
Después de iniciar mi servidor VNC y conectarlo, revisé mi glfxinfo, por lo que DISPLAY=:1 glxinfo
(Pantalla: 1 es el VNC)
El primer resultado fue:
name of display: :1
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
Error: couldn't find RGB GLX visual or fbconfig
Error: couldn't find RGB GLX visual or fbconfig
Arreglé este instalando el nvidia-current
paquete. Ya sabía que para ejecutar WebGL, necesitaba GLX versión 1.3 al menos. Entonces di glxinfo
otro golpe y eso dio el siguiente resultado:
ubuntu@ip-172-31-29-168:~$ DISPLAY=:1 glxinfo | grep version
Xlib: extension "NV-GLX" missing on display ":1".
Xlib: extension "NV-GLX" missing on display ":1".
server glx version string: 1.2
client glx version string: 1.4
GLX version: 1.2
OpenGL core profile version string: 1.3 Mesa 4.0.4
OpenGL version string: 1.3 Mesa 4.0.4
Como puede ver, la versión GLX no es suficiente para ejecutar WebGL, probé todas las guías sobre esto. Ninguno de ellos parece elevar la versión GLX. Probablemente se pregunte, ¿por qué WebGL? Bueno, tenía esto ejecutándose en un servidor Mac Mini, que funcionó perfectamente para crear un buen video en 3D. No busco editar el código, solo busco subirlo a la nube. También probé el servidor de Windows, pero encontré muchos problemas ffmpeg
allí, por lo que tampoco es una opción. Ahora estoy pensando en obtener un servidor en la nube de Mac OS, pero aún me pregunto qué está pasando aquí.
Entonces mi pregunta: ¿es posible hacer esto en mi servidor Amazon EC2? Y si es así, ¿cómo?
PD: cuando ejecuto chromium-browser desde la línea de comandos, este es mi error:
ubuntu@ip-172-31-29-168:~/.vnc$ DISPLAY=:1 chromium-browser --enable-webgl
[12243:12243:0307/155523:ERROR:gl_surface_glx.cc(413)] GLX 1.3 or later is required.
[12243:12243:0307/155523:ERROR:gl_surface_x11.cc(58)] GLSurfaceGLX::InitializeOneOff failed.