Pré-requis (linux): une machine avec apache, php.

La machine est celle que j'ai "rafistolé" il y a quelques temps... avec les paquets qui vont bien. Elle est en debian-5.0.4

etch28:~# uname -a
Linux etch28 2.6.27.53 #1 Wed Sep 8 19:19:31 CEST 2010 i686 GNU/Linux

etch28:~# dpkg -l apache* php* | grep '^ii'
ii  apache2                              2.2.9-10+lenny8                Apache HTTP Server metapackage
ii  apache2-mpm-prefork                  2.2.9-10+lenny8                Apache HTTP Server - traditional non-threade
ii  apache2-utils                        2.2.9-10+lenny8                utility programs for webservers
ii  apache2.2-common                     2.2.9-10+lenny8                Apache HTTP Server common files
ii  php-http-request                     1.4.2-1                        provides an easy way to perform HTTP request
ii  php-mail                             1.1.14-1+lenny1                PHP PEAR module for sending email
ii  php-mail-mime                        1.5.2-0.1                      PHP PEAR module for creating MIME messages
ii  php-mail-mimedecode                  1.5.0-3                        PHP PEAR module to decode MIME messages
ii  php-net-dime                         0.3-3                          class that implements DIME encoding
ii  php-net-smtp                         1.3.1-1                        PHP PEAR module implementing SMTP protocol
ii  php-net-socket                       1.0.8-2                        PHP PEAR Network Socket Interface module
ii  php-net-url                          1.0.15-2                       easy parsing of Urls
ii  php-pear                             5.2.14-0.dotdeb.0              PEAR - PHP Extension and Application Reposit
ii  php-soap                             0.11.0-2                       a SOAP Client/Server class for PHP
ii  php5                                 5.2.14-0.dotdeb.0              server-side, HTML-embedded scripting languag
ii  php5-cli                             5.2.14-0.dotdeb.0              command-line interpreter for the php5 script
ii  php5-common                          5.2.14-0.dotdeb.0              Common files for packages built from the php
ii  php5-gd                              5.2.14-0.dotdeb.0              GD module for php5
ii  php5-mcrypt                          5.2.14-0.dotdeb.0              MCrypt module for php5
ii  php5-xmlrpc                          5.2.14-0.dotdeb.0              XML-RPC module for php5

etch28:~# cat /etc/apt/sources.list | egrep -v '^$|^#'
deb http://ftp2.fr.debian.org/debian/ lenny main
deb-src http://ftp2.fr.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
deb http://www.backports.org/debian/ lenny-backports main
deb http://packages.dotdeb.org lenny all


Je précise que je n'ai même pas eu à toucher aux fichiers de config apache et php.


L'installation se déroule en quelques minutes . On récupére le paquet à cette adresse: http://code.google.com/p/phpvirtualbox/downloads/list

Je le dézippe ensuite dans le répertoire /var/www du serveur web:

etch28:/var/www# unzip phpvirtualbox-0.5.zip

Je crée un lien symbolique pour ne pas avoir à retaper une url à rallonge:

etch28:/var/www# ln -s phpvirtualbox-0.5 phpvb

et je modifie le fichier config.php comme suit:

etch28:/var/www/phpvb# cat config.php |egrep -v '^$|\/\*| \*|\*\/|^#|^\/\/'
<?php
class phpVBoxConfig {
var $username = 'pme';
var $password = 'monmotdepasse';
var $location = 'http://127.0.0.1:18083/';
var $language = 'en_us';
var $rdpHost = '192.168.0.4';
Allow to prompt deletion harddisk files on removal from Virtual Media Manager.
If this is not set, files are always kept. If this is set, you will be PROMPTED
to decide whether or not you would like to delete the harddisk file(s) when you
remove a harddisk from virtual media manager. You may still choose not to delete
the file when prompted.
var $deleteOnRemove = true;
var $browserRestrictFiles = '.iso,.vdi,.vmdk,.img,.bin,.vhd,.hdd,.ovf,.ova';
var $nicMax = 4;
var $enableAccelerationConfig = true;
var $vmListSort = 'function(a,b) {
    if(a.state == "Running" && b.state != "Running") return -1;
    if(b.state == "Running" && a.state != "Running") return 1;
    return strnatcasecmp(a.name,b.name);
}';
var $cacheExpireMultiplier = 1;
var $cacheSettings = array(
        'getGuestOSTypes' => 86400,
        'getSystemProperties' => 86400,
        'getInternalNetworks' => 86400,
        'getMediums' => 600,
        'getVMs' => 2,
        '__getMachine' => 7200,
        '__getNetworkAdapters' => 7200,
        '__getStorageControllers' => 7200,
        '__getSharedFolders' => 7200,
        '__getUSBController' => 7200,
);
}


VirtualBox et le serveur web s'exécutant sur la même machine j'ai laissé la valeur:
var $location = 'http://127.0.0.1:18083/';

Un petit coup d'oeil sur le réseau:

etch28:/var/www/phpvb# netstat -tpan
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp        0      0 0.0.0.0:18083           0.0.0.0:*               LISTEN      5569/vboxwebsrv
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      2303/X         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      961/sshd       
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1228/exim4     
tcp        0      0 0.0.0.0:3389            0.0.0.0:*               LISTEN      16505/VBoxHeadless
tcp        0      0 127.0.0.1:40604         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 127.0.0.1:40605         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 127.0.0.1:40609         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 127.0.0.1:40606         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 127.0.0.1:40607         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 192.168.0.4:43652       192.168.0.23:22         ESTABLISHED 5578/ssh       
tcp        0      0 127.0.0.1:40602         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 127.0.0.1:40601         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 127.0.0.1:40603         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 127.0.0.1:40608         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 127.0.0.1:40600         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 127.0.0.1:40610         127.0.0.1:18083         TIME_WAIT   -              
tcp        0      0 192.168.0.4:22          192.168.0.22:44773      ESTABLISHED 16940/4        
tcp        0      0 192.168.0.4:42879       192.168.0.4:80          ESTABLISHED 5266/firefox-bin
tcp6       0      0 :::139                  :::*                    LISTEN      1245/smbd      
tcp6       0      0 :::80                   :::*                    LISTEN      5197/apache2   
tcp6       0      0 :::6001                 :::*                    LISTEN      2303/X         
tcp6       0      0 :::21                   :::*                    LISTEN      4737/proftpd: (acce
tcp6       0      0 :::22                   :::*                    LISTEN      961/sshd       
tcp6       0      0 :::445                  :::*                    LISTEN      1245/smbd      
tcp6       0      0 192.168.0.4:80          192.168.0.4:42879       ESTABLISHED 16445/apache2  
tcp6       0      0 192.168.0.4:80          192.168.0.22:58928      ESTABLISHED 13127/apache2  




Il est tout à fait possible d'exécuter phpvirtualbox sur une autre machine mais dans ce cas il faudra préciser l'adresse de l'hôte virtualbox en lieu et place de 127.0.0.1.


La suite en images.


Conclusion: temps de mise en oeuvre: 15mn. temps de téléchargement: < 1mn.
Comparé à vmware-server.... ya pas photo d'autant que le compteur à version est resté (et restera ???) bloqué à 2.0.2 chez vmware depuis pllus d'un an.

Reste quelques petits bugs dans la gestion RDP sans gravité. L'intérêt majeur, à mon sens, est de disposer d'une interface web qui permet de s'affranchir des lignes de commandes (pour ceux qui n'aiment pas hein !!! :)