Estou tentando fazer com que o WebGL funcione no meu servidor Amazon EC2 (migrando de um Mac Mini ligado ao escritório, que tem muitos problemas).
Trabalhei alguns dias para fazer isso funcionar, mas vou tentar começar de onde comecei.
Primeiro, instalei a seguinte AMI Ubuntu Server 12.04 LTS (HVM) - ami-8c8675fb
com o tipo de instância cg1.4xlarge
. Eu escolhi esse tipo de instância, então ele vem com um Cirrus Logic GD 5446
para execuções gráficas.
Claro que a instalação primária é sem cabeça, então eu tive que construir este servidor a partir do zero, o que eu fiz em primeiro lugar é.
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
Depois disso, instalei um servidor LAMP (o usual) e atualizei o kernel para 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
.
Eu também registrei o PPA de editores xorg no link .
Após a reinicialização tive que conectar uma tela ao meu servidor, optei por fazer isso com o vnc4server.
Então, é o usual e meu xstartup é assim:
#!/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 &
Depois de iniciar meu servidor VNC e conectá-lo, eu verifiquei meu glfxinfo, então DISPLAY=:1 glxinfo
(Display: 1 é o VNC)
O primeiro resultado foi:
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
Eu consertei este instalando o pacote nvidia-current
. Eu já sabia que para o WebGL rodar, eu precisava pelo menos da versão 1.3 do GLX. Então eu dei glxinfo
outro swing e isso deu a seguinte saída:
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 você pode ver a versão GLX não é suficiente para executar o WebGL, eu tentei todos os guias sobre isso. Nenhum deles parece elevar a versão GLX. Provavelmente você está perguntando por que o WebGL funcionava bem em um servidor Mac Mini, que funcionava perfeitamente para criar um bom vídeo 3D. Não olhando para editar o código, apenas olhando para obtê-lo na nuvem. Também tentei o servidor windows, mas corri em muitos problemas com ffmpeg
, então isso também não é uma opção. Agora pensando em obter um servidor em nuvem do Mac OS, mas ainda imaginando o que está errado aqui.
Então, minha pergunta: é possível fazer isso no meu servidor Amazon EC2? E se sim, como?
P.S. Quando eu executo o navegador chromium na linha de comando, esse é o meu erro:
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.