PhpVirtualBox

提供: ArchWiki
移動先: 案内検索

phpVirtualBoxPHP で書かれた VirtualBox のユーザーインターフェイスのオープンソースな AJAX 実装です。近代的なウェブインターフェイスとして、リモートの VirtualBox インスタンスにアクセス・コントロールすることができます。コードは (開発が停止した) vboxweb プロジェクトをベースにしています。phpVirtualBox はヘッドレス環境の VirtualBox を管理できるように作られ、VirtualBox GUI をウェブインターフェイスで実現しています。

インストール

仮想マシンを遠隔操作するには2つのコンポーネントが必要です: 仮想マシンと同一の OS で動作する VirtualBox ウェブサービスと、PHP で書かれた、PHP が使用できるウェブサーバーに依存するウェブインターフェイスです。インターフェイスの通信で使用される SOAP プロトコルは暗号化されないため、ユーザー名とパスワードを平文でネットワーク上に送信したくない場合は同一のマシンにインストールすることが推奨されます。

VirtualBox ウェブサービス

ウェブコンソールを使うには、virtualbox-ext-oracleAUR パッケージをインストールする必要があります。

VirtualBox ウェブインターフェイス (phpvirtualbox)

phpvirtualbox パッケージをインストールしてください。また、php に対応しているウェブサーバーを選択します (Apache が適当でしょう)。

設定

以下の設定をするには先にウェブサーバーと PHP をセットアップしておく必要があります (ルートディレクトリは /srv/http とします)。

ウェブサービス

仮想マシンの設定で、リモートデスクトップのアクセスを有効にして他の仮想マシンとは異なるポートを指定してください。

マシンにリモートからアクセスするには、毎回以下のようなコマンドを実行する必要があります:

vboxwebsrv -b --logfile path to log file --pidfile /run/vbox/vboxwebsrv.pid --host 127.0.0.1

上記のコマンドはサービスを実行するのに使いたいユーザーで実行してください (/etc/host.conflocalhost の関連付けを有効にしている場合は --host オプションは外してもかまいません)。

ノート: ユーザーは vboxusers グループに属していなければなりません。

virtualbox は community に入っており、systemd で扱うための vboxweb.service が含まれています。

root 以外のユーザーから vboxweb を起動したい場合:

1. vboxusers グループにユーザーを作成・追加してください (例: vbox)。

2. /usr/lib/systemd/system/vboxweb.service/etc/systemd/system/vboxweb_mod.service にコピーしてカスタム vboxweb_mod.service ファイルを作成。

3. 以下のように /etc/systemd/system/vboxweb_mod.service を編集:

 [Unit]
 Description=VirtualBox Web Service
 After=network.target

 [Service]
 Type=forking
 PIDFile=/run/vboxweb/vboxweb.pid
 ExecStart=/usr/bin/vboxwebsrv --pidfile /run/vboxweb/vboxweb.pid  --background
 User=vbox
 Group=vboxusers

 [Install]
 WantedBy=multi-user.target

4. vboxweb_mod.service の一時ファイルルールを作成:

# echo "d /run/vboxweb 0755 vbox vboxusers" > /etc/tmpfiles.d/vboxweb_mod.conf

5. vboxweb_mod.service の最初の起動のために /run/vboxweb ディレクトリを手動で作成:

# mkdir /run/vboxweb
# chown vbox:vboxusers /run/vboxweb
# chmod 755 /run/vboxweb

もしくはシステムを再起動すると自動的に作成されます。

6. vboxweb_mod.service起動有効化

ウェブインターフェイス

/etc/php/php.ini を編集して、以下の行をアンコメントしてください:

extension=soap.so

サンプル設定ファイルの /usr/share/webapps/phpvirtualbox/config.php-example を適切に編集してください (ファイルにはコメントが豊富に付けられています)。ファイルを /etc/webapps/phpvirtualbox/config.php にコピーして、/usr/share/webapps/phpvirtualbox/config.php のシンボリックリンクを作成してください。

それから /etc/php/php.ini を編集して open_basedir の末尾に以下のように設定パスの /etc/webapps/ を追加してください:

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/

ウェブサーバーとして Apache を使用する場合、/etc/webapps/phpvirtualbox/apache.example.conf/etc/httpd/conf/extra/phpvirtualbox.conf にコピーして使うこともできます。Apache 2.4 を使用する場合、ACL の構文が変更になった ため、ファイルの以下の部分を:

Order allow,deny
Allow from all

以下のように変更する必要があります:

Require all granted

それから、/etc/httpd/conf/httpd.conf に以下の行を追加してください:

Include conf/extra/phpvirtualbox.conf

/etc/webapps/phpvirtualbox/.htaccess を編集して以下の行を削除してください:

deny from all

設定後、ウェブサーバーを再起動してください (Apache であれば httpd.service再起動)。

実行

設定に問題がなければ http://YourVboxWebInterfaceHost/phpvirtualbox を開いてログイン画面が表示されることを確認してください。初期ユーザー名・パスワードは "admin" です。ログインしたらウェブインターフェイスから変更することができます (File -> change password)。config.php でウェブインターフェイスの $noAuth=true を設定した場合、すぐに phpvirtualbox のウェブインターフェイスが表示されます。

デバッグ

ログインができない場合、あるいは virtualbox を 3.2.x から 4.0.x にアップグレードした場合、以下のコマンドを実行して virtualbox の設定ファイルの websrvauthlibrary を更新して VRDPAuth.so から VBOXAuth.so に変更する必要があります:

VBoxManage setproperty vrdeauthlibrary default
VBoxManage setproperty websrvauthlibrary default 

上記のコマンドを実行してもインターフェイスにログインできないときは、以下のコマンドで webauth を無効化してみてください:

VBoxManage setproperty websrvauthlibrary null

そしてウェブサーバーの /etc/webapps/phpvirtualbox/config.php で $noAuth=true を設定してユーザー名とパスワードを空文字にしてください。ログイン画面をスキップしてすぐにウェブインターフェイスが表示されます。

参照