phpVirtualBox – VirtualBox w przeglądarce

phpVirtualBox to napisany w języku PHP interfejs WWW, który umożliwia zarządzanie maszynami wirtualnymi z poziomu przeglądarki. Jest to bardzo miła alternatywa dla VirtualBox’a działającego w normalnych środowisku graficznym. Jego instalacja oraz przygotowanie do działania wraz z VirtualBox’em nie jest wcale trudne.

Instalacja VirtualBoxa

Cała konfigurację zaczniemy od instalacji najważniejszego pakietu, czyli VirtualBox’a. Ponieważ nasz testowy system to CentOS 5 użyjemy gotowej paczki dla niego, dostępnej na oficjalnej stronie w sekcji Downloads:

[root@vm tmp]# wget http://download.virtualbox.org/virtualbox/4.1.18/VirtualBox-4.1-4.1.18_78361_rhel5-1.x86_64.rpm
[root@vm tmp]# rpm -ihv VirtualBox-4.1-4.1.18_78361_rhel5-1.x86_64.rpm
error: Failed dependencies:
        libGL.so.1()(64bit) is needed by VirtualBox-4.1-4.1.18_78361_rhel5-1.x86_64
        libSDL-1.2.so.0()(64bit) is needed by VirtualBox-4.1-4.1.18_78361_rhel5-1.x86_64
        libasound.so.2()(64bit) is needed by VirtualBox-4.1-4.1.18_78361_rhel5-1.x86_64
        libXmu.so.6()(64bit) is needed by VirtualBox-4.1-4.1.18_78361_rhel5-1.x86_64
        libXt.so.6()(64bit) is needed by VirtualBox-4.1-4.1.18_78361_rhel5-1.x86_64

Brakuje nam kilku bibliotek, więc szybko je doinstalujemy:

[root@vm tmp]# yum install mesa-libGL SDL libXmu libXt
[root@vm tmp]# rpm -ihv VirtualBox-4.1-4.1.18_78361_rhel5-1.x86_64.rpm

Od razu dodamy Extension Pack:

root@vm tmp]# wget http://download.virtualbox.org/virtualbox/4.1.18/Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361.vbox-extpack
[root@vm tmp]# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361.vbox-extpack
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Successfully installed "Oracle VM VirtualBox Extension Pack".

Następnie musimy skompilować moduły jądra dla VirtualBox’a. Potrzebne nam do tego pakiety kernel-devel, kernel-headers oraz dkms

[root@vm tmp]# yum install kernel-devel kernel-headers dkms

Korzystając z gotowego skryptu, skompilujemy niezbędne moduły:

[root@vm tmp]# /etc/init.d/vboxdrv setup
Stopping VirtualBox kernel modules                         [  OK  ]
Uninstalling old VirtualBox DKMS kernel modulesError! There are no instances of module: vboxhost
4.1.18 located in the DKMS tree.
Error! There are no instances of module: vboxhost
4.1.18 located in the DKMS tree.
                                  [  OK  ]
Trying to register the VirtualBox kernel modules using DKMS[  OK  ]
Starting VirtualBox kernel modules                         [  OK  ]
[root@vm tmp]# lsmod  | grep vbox
vboxpci                49840  0
vboxnetadp             53008  0
vboxnetflt             53776  0
vboxdrv              1888116  3 vboxpci,vboxnetadp,vboxnetflt

Polecenie lsmod pokazuje, że moduły zostały załadowane poprawnie. Dodamy teraz nowego użytkownika dla VirtualBox'a:

[root@vm tmp]# useradd -s /bin/sh -d /home/vmuser -m vmuser
[root@vm tmp]# passwd vmuser
Changing password for user vmuser.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@vm tmp]# usermod -a -G vboxusers vmuser
[root@vm tmp]# groups vmuser
vmuser : vmuser vboxusers

Ważne jest aby użytkownik należał do grupy vboxusers.

Instalacja i konfiguracja phpVirtualBox

phpVirtualBox wymaga oczywiście serwera www z obsługą PHP. Dodamy je do systemu, ponownie korzystając z polecenia yum:

[root@vm tmp]# yum install php53 php53-soap httpd

Następnie ściągniemy paczkę zip z oficjalnej strony projektu i rozpakujemy do katalogu /var/www/html/phpvirtualbox:

[root@vm tmp]# cd /var/www/html
[root@vm tmp]# wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-7.zip
[root@vm html]# unzip phpvirtualbox-4.1-7.zip
Archive:  phpvirtualbox-4.1-7.zip
   creating: phpvirtualbox-4.1-7/
....
[root@vm html]# mv phpvirtualbox-4.1-7 phpvirtualbox
[root@vm html]# cd phpvirtualbox
[root@vm phpvirtualbox]# mv config.php-example config.php

W pliku config.php podajemy nazwe użytkownika oraz hasła, pod którym będzie uruchomiony VirtualBox:

[root@vm html]# cat config.php
...
/* Username / Password for system user that runs VirtualBox */
var $username = 'vmuser';
var $password = 'haslo';
/* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
var $location = 'http://127.0.0.1:18083/';
...

Musimy jeszcze stworzyć plik /etc/default/virtualbox. Jest to plik konfiguracyjny używany przez proces vboxweb-service:

[root@vm ~]# cat /etc/default/virtualbox
VBOXWEB_USER=vmuser
VBOXWEB_LOGFILE=/var/log/vbox.log

Plik logów należy stworzyć ręcznie, a prawa do zapisu musimy mieć użytkownik vmuser. W przeciwnym razie, nie uda się uruchomić procesu vboxweb-service:

[root@vm ~]# touch /var/log/vbox.log
[root@vm ~]# chown vmuser.vmuser /var/log/vbox.log

I startujemy:

[root@vm ~]# /etc/init.d/vboxweb-service start
[root@vm ~]# ss -anp | grep 18083
LISTEN     0      0                 127.0.0.1:18083                    *:*      users:(("vboxwebsrv",10158,11))
[root@vm ~]# cat /var/log/vbox.log
VirtualBox web service 4.1.18 r78361 linux.amd64 (Jun 15 2012 19:04:53) release log
00:00:00.001 main     Log opened 2012-07-04T11:51:01.360597000Z
00:00:00.001 main     OS Product: Linux
00:00:00.001 main     OS Release: 2.6.18-308.8.2.el5
00:00:00.001 main     OS Version: #1 SMP Tue Jun 12 09:58:12 EDT 2012
00:00:00.001 main     OS Service Pack: #1 SMP Tue Jun 12 09:58:12 EDT 2012
00:00:00.001 main     Executable: /usr/lib/virtualbox/vboxwebsrv
00:00:00.001 main     Process ID: 10557
00:00:00.001 main     Package type: LINUX_64BITS_RHEL_5

Usługa działa na naszym serwerze, nasłuchuje na porcie 18083 (interfejs lo). Teraz możemy zalogować się do panelu używając przeglądarki. Domyślny użytkownik i hasło to admin.

phpVirtualBox – zrzuty ekranu

Poniżej kilka zrzutów pokazujących panel w akcji.

phpVirtualBox - ekran logowania
Po zalogowaniu
Ustawienia maszyny wirtualnej
phpVirtualBox - zdalny dostęp do maszyny wirtualnej

  1. Fajnie opisane. Dzięki.

Zostaw komentarz


Podpowiedź - możesz użyć tych HTML tagów i atrybutów:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Obraz CAPTCHY

*