Usiłuję zmusić WebGL do pracy na moim serwerze Amazon EC2 (migracja z biurowego Maca Mini, który ma wiele czkawek).
Pracowałem kilka dni, aby uruchomić to, ale postaram się zacząć od początku.
Najpierw zainstalowałem następujący AMI Ubuntu Server 12.04 LTS (HVM) - ami-8c8675fb
z typem instancji cg1.4xlarge
. Wybrałem ten typ instancji, więc jest on wyposażony w Cirrus Logic GD 5446
graficzne wykonanie.
Oczywiście podstawowa instalacja jest bezgłowa, więc musiałem zbudować ten serwer od zera, co najpierw zrobiłem.
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
Następnie zainstalowałem serwer LAMP (zwykle) i zaktualizowałem jądro do 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
.
Zarejestrowałem również PPA Edgery PPA na https://launchpad.net/~xorg-edgers/+archive/ppa .
Po ponownym uruchomieniu musiałem podłączyć ekran do mojego serwera, postanowiłem to zrobić za pomocą vnc4server.
Więc to jest normalne i mój xstartup wygląda następująco:
#!/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 &
Po uruchomieniu serwera VNC i podłączeniu go sprawdziłem glfxinfo, więc DISPLAY=:1 glxinfo
(Wyświetlacz: 1 to VNC)
Pierwsze wyjście to:
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
Naprawiłem ten, instalując nvidia-current
pakiet. Wiedziałem już, że WebGL może działać, potrzebowałem przynajmniej wersji GLX 1.3. Dałem więc glxinfo
kolejną huśtawkę, która dała następujący wynik:
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
Jak widać wersja GLX nie wystarcza do uruchomienia WebGL, wypróbowałem wszystkie przewodniki na ten temat. Żaden z nich nie wydaje się podnosić wersji GLX. Prawdopodobnie pytasz, dlaczego WebGL, no cóż, miałem to uruchomione na serwerze Mac Mini, który działał idealnie, aby stworzyć ładne wideo 3D. Nie chcę edytować kodu, tylko chcę go umieścić w chmurze. Wypróbowałem również serwer Windows, ale działał z wieloma problemami, ffmpeg
więc nie jest to również opcja. Teraz zastanawiam się nad uzyskaniem serwera w chmurze Mac OS, ale wciąż zastanawiam się, co się tutaj dzieje.
Więc moje pytanie: czy w ogóle można to zrobić na moim serwerze Amazon EC2? A jeśli tak, to w jaki sposób?
PS Kiedy uruchamiam przeglądarkę chromową z wiersza poleceń, to jest mój błąd:
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.