Windows: VirtualBox & phpVirtualBox – Erste überarbeitete Fassung

Au backe, da habe ich gestern viel Zeit in den Sand gesetzt. Wollte seit längerem Mal wieder einen Windows-PC mit VirtualBox und phpVirtualBox bestücken und bin brav nach meiner Anleitung vorgegangen, aber Essig, ging nicht. Von daher nun eine überarbeitete Fassung meiner ursprünglichen Anleitung. Zum Glück ist nicht alles anders.

Das Problem

Die Anmeldung an phpVirtualBox funktioniert nicht. Ich habe alle mir bekannten und ergoogelten Lösungen getestet. Sei es einen Standard-Benutzer verwenden, vboxwebsrv.exe als Dienst, in der Eingabeaufforderung oder via Aufgabeplanung ausführen. Die Lokale Sicherheitsrichtlinie verbiegen. Nichts half.

Die Lösung

Als work-around Griff ich nun auf den IIS mit Standard-Authentifizierung zurück. Für mehr Sicherheit kann man zusätzlich SSL verwenden. Dieses beschreibe ich in den nachfolgenden Zeilen.

Apache mit htaccess sollte aber auch gehen. In diesem Artikel bleibe ich allerdings bei den Windows-Bordmitteln.

Anmerkung: Keine Ahnung, warum die alte Anleitung oder die neuere Version von phpVirtualBox Probleme macht. Meinen „work-around“ habe ich erfolgreich auf zwei Windows 7 Professional x64-Systemen getestet. Andere Systeme sollten (hoffentlich) auch funktionieren. Wie immer gilt: Your feedback is welcome!

VirtualBox installieren

VBoxManage setproperty vrdeauthlibrary default
VBoxManage setproperty websrvauthlibrary default
  • In einer Eingabeaufforderung folgenden Befehl ausführen:
mklink /d "C:\Windows\System32\config\systemprofile\.VirtualBox" "C:\Users\BENUTZERNAME\.VirtualBox"

Der Benutzername muss angepasst werden! Es muss der Benutzer(name) verwendet werden, der auch lokal VirtualBox verwendet. Dieser Schritt ist notwendig, damit phpVirtualBox auf die gleichen virtuellen Maschinen und Einstellungen zugreift.

  • RunAsSvc herunterladen und das Archiv nach „C:\Programme\RunAsSvc“ entpacken.
  • RunAsSvc.exe als Administrator (Rechtsklick „Als Administrator ausführen“) starten und die Angaben wie im Screenshot vornehmen. Anschließend auf OK klicken.

IIS installieren

phpVirtualBox benötigt einen Webserver. Im Grunde kann das (vermutlich) jeder PHP-fähige Webserver sein. Im Gegensatz zur ersten Anleitung, dort wurde XAMPP, also Apache, benutzt, verwende ich diesmal den IIS von Microsoft.

  • Um den IIS zu installieren in die Systemsteuerung wechseln und dort Programme und Funktionen aufrufen.
  • Auf Windows-Funktionen aktivieren oder deaktivieren klicken.
  • Im daraufhin erscheinenden Dialog Internetinformationsdienste aktivieren. Ferner muss unter „WWW-Dienste – Anwendungsentwicklungsfeatures“ CGI und unter „WWW-Dienste – Sicherheit“ Standardauthentifizierung aktiviert werden.

Anschliessend auf OK klicken. Nun wird der Webserver installiert, das kann einen Moment dauern.

PHP installieren

Am einfachsten lässt sich PHP mit dem Web Platform Installer in den IIS integrieren. Einfach herunterladen und ausführen.

Vorteil: Der PHP Manager for IIS ist gleich mit dabei. Den benötigen wir zwar in diesem Fall nicht, aber im Problemfall oder für weitere PHP-basierte Lösungen kann dieses Tool durchaus hilfreich sein.

phpVirtualBox installieren

  • phpVirtualBox herunterladen und nach „C:\htdocs\wwwroot\“ entpacken.

Anmerkung: Der Einfachheit halber verwende ich als Ordnername „vbox“. Also ich entpacke phpVirtualBox zum Ziel und benenne den Ordner um.

  • Die Datei „config.php-example“ in „config.php“ umbenennen (oder kopieren und umbenennen) und mit WordPad oder einem anderen Editor (Nicht Notepad!) öffnen.

Da der IIS für die Authentifizierung verwendet wird, ist der Benutzername und das Passwort innerhalb der „config.php“ egal. Wichtig ist die Zeile

// Disable authentication
#var $noAuth = true;

Dort muss die # entfernt und die Datei gespeichert werden. Dadurch wird die phpVirtualBox-eigene Authentifizierung deaktiviert.

Tipp: Um später Probleme mit der deutschen Tastatur in der Console von phpVirtualBox bzw. einer virtuellen Maschien zu vermeiden, die Zeile

# Console tab keyboard layout. Currently Oracle's RDP client only supports EN and DE.
 var $consoleKeyboardLayout = 'EN';

von EN auf DE ändern.

Damit der IIS die Authentifizierung durchführt, wie folgt vorgehen:

  • Den IIS-Manager öffnen („Systemsteuerung – Verwaltung – Internetinformationsdienste (IIS)-Manager“, alternativ kann man auch die Computerverwaltung verwenden).
  • Zu „Sites – Default Web Site – vbox“ wechseln.
  • Authentifizierung anklicken.
  • Anonyme Authentifizierung deaktivieren und Standardauthentfizierung aktivieren.

SSL-Verschlüsselung einrichten (optional)

Mittlerweile ist es sehr einfach, den IIS mit einem selbstsignierten SSL-Zertifikat auszustatten und zu verwenden.

  • Im IIS-Manager auf Serverzertifikate klicken.
  • Im Aktionen-Bereich auf „Selbstsigniertes Zertifikat erstellen“ klicken.
  • Einen Anzeigenamen (dieser Name steht nicht im Zertifikat) eingeben.
  • Mit der rechten Maustaste auf „Default Web Site“ klicken und „Bindungen bearbeiten…“ auswählen.
  • Eine neue Bindung des Typ „https“ und dem zuvor erstellten Zertifikat hinzufügen.

Ggf. die http-Bindung, da unverschlüsselt, entfernen oder auf IP-Adresse 127.0.0.1 konfigurieren. Alternativ kann man das auch über die Windows-Firewall steuern, d.h. die Regel „WWW-Dienste (Eingehender HTTP-Datenverkehr)“ deaktivieren oder umkonfigurieren.

Abschliessend muss noch die Windows-Firewall-Regel „WWW-Dienste (Eingehender HTTPS-Datenverkehr)“ aktiviert werden, dami https-Verbindungen zugelassen werden.

phpVirtualBox verwenden

Wenn man nun mit einem Browser die Adresse

http(s)://COMPUTERNAME-ODER-IP/vbox

aufruft, erscheint zunächst die Abfrage nach Benutzername und Kennwort. Das sollten gültige Windows-Benutzer-Anmeldedaten sein und zwar von dem Benutzer, der VirtualBox auch lokal verwendet.

Ist die Anmeldung erfolgreich, erscheint die phpVirtualBox-Oberfläche.

Infos und Troubleshooting

Die virtuellen Maschinen werden im System-Kontext ausgeführt. Im Gegensatz zu anderen (bei mir nicht [mehr] funktionierenden) Lösungen, werden die virtuellen Maschinen im Benutzer-Kontext ausgeführt.

Die vboxwebsrv.exe läuft bei meiner Lösung als Dienst. Für’s Troubleshooting interessant ist, das wenn man den Dienst beendet, ein von vboxwebsrv.exe zweiter gestarteter Prozess namens vboxsvc.exe nicht beendet wird. Diesen Prozess kann man im Task-Manager beenden.

Ich musste das bei meinem ersten Test nur einmal tun, da ich vergessen hatte das Extension Pack zu installieren und in Folge dann unter phpVirtualBox der Tab pro virtueller Maschine für die Fernsteuerung nicht angezeigt wurde. Scheinbar liest der vboxsvc.exe-Prozess die Konfiguration nur bei seinem Start aus. Nach dem Abschuss von vboxsvc.exe und dem Neustart des vboxwebsrv-Dienstes hat dann alles funktioniert.

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.