アーキテクチャをスマートに。

株式会社ネオジニア代表。ITアーキテクトとしてのお仕事や考えていることなどをたまに綴っています。(記事の内容は個人の見解に基づくものであり、所属組織を代表するものではありません)

phpVirtualBox を入れてみた(その2)

phpVirtualBoxのインストール

この辺を参考にしました。

無事に VirtualBox がインストールできたところで本題です。
phpVirtualBoxのプロジェクトサイトからソースをダウンロードします。
使用するVirtualBoxのバージョンによって、ダウンロードするものが変わりますので注意。

VirtualBox phpVirtualBox
3.2.x 0.5
4.0.x 4.0-x
4.1.x 4.1-x
4.2.x 4.2-x

という対応になっているようです。
ダウンロードしたら unzip して README.txt を読みましょう。以下、抜粋。

INSTALLATION:

Rename config.php-example to config.php and edit as needed.

Default login is username: admin password: admin

Please see the wiki located at http://code.google.com/p/phpvirtualbox/ for
detailed installation and configuration instructions.

要するに、

というわけで wiki を見ながらインストールしていきます。
まずVirtualBox側で考慮すべきことが書かれていて、

  • Linuxでは vboxweb-service を稼働させる必要がありますよ、
  • その設定ファイルは /etc/default/virtualbox であり、
  • 最低でも VBOXWEB_USER の設定は必須である。
  • 設定ファイルが存在しなければ作れ。

とのこと。(ここでは要点だけ転記してます。他のプラットフォームの場合は、上記 wiki に記載があるので読めばわかると思います)

vboxweb-service を専用のユーザを作ってサービスを動かすため、新たに"vbox"というユーザを作って、設定ファイルに書きます。

$ sudo adduser vbox

で /etc/default/virtualbox の末尾に以下を追記。(ファイルがなかったので新規作成しました。)

VBOXWEB_USER=vbox

でサービスを起動。

$ sudo /etc/init.d/vboxweb-service start
$ ps aux | grep vboxweb
vbox     28397  0.0  0.0 476592  6164 ?        Sl   15:20   0:00 /usr/lib/virtualbox/vboxwebsrv --background
lobin    28423  0.0  0.0  10356   924 pts/1    S+   15:21   0:00 grep --color=auto vboxweb
$

ちゃんとvboxユーザで動いてますね。
止めるときは /etc/init.d/vboxweb-service stop です。
さらに OS起動時にサービスを立ち上げるため、chkconfig しておきました。

$ chkconfig vboxweb-service on

次にPHPとWebサーバが必要で、http://code.google.com/p/phpvirtualbox/wiki/WebServerAndPHPInstall に各プラットフォームごとのやり方が書いてありました。
Linuxでの例として apache2 と libapache2-mod-php5 とあったのでこの構成を採用。

$ sudo apt-get install apache2 libapache2-mod-php5

この辺は PHP が動く環境がすでにあればそれで良いようです。

Webサーバが動く環境ができたら、そこに phpVirtualBox のコードをデプロイします。ただコピーするだけです。アクセスしやすいよう、phpbvox という名前にしました。

$ sudo cp -r ~/phpvirtualbox-4.2-4 /var/www/phpvbox

設定ファイルを作ります。サンプルファイルをリネームして、エディタで開きます。

$ sudo mv config.php-example config.php
$ sudo vi !$

変更が必要なのは $usename と $password くらいだと思います。$language を 'ja' に設定すると日本語になるようです。

/* Username / Password for system user that runs VirtualBox */
var $username = 'vbox';
var $password = '********';

/* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
var $location = 'http://127.0.0.1:18083/';

/* Default language. See languages folder for more language options.
 * Can also be changed in File -> Preferences -> Language in
 * phpVirtualBox.
 */
var $language = 'ja';

/* Set the standard VRDE Port Number / Range, e.g. 1010-1020 or 1027 */
var $vrdeports = '9000-9100';

ではいよいよブラウザから http://<サーバのIPアドレス>/phpvbox/ にアクセスします。
admin / admin でログインできます。

なかなか簡単でイイ感じですねぇ。右クリックも使えるし、ほとんどデスクトップアプリケーションと変わらない使用感です。

コンソール接続できない

仮想マシンの設定で「リモートディスプレイ」を有効化した場合、Remminaなど別のRDPクライアントからだとちゃんと接続できるのですが、
phpVirtualBox の画面からコンソールに接続しようとすると、null:9000 とかってなっててコンソールが表示されませんでした。

null の部分を サーバのIPアドレス(例えば 192.168.1.201)に打ち変えてやると接続できるようです。
これは config.php の以下の部分を変更すればOKでした。

// Host / ip to use for console connections
var $consoleHost = '192.168.1.201';

他にも $enableGuestAdditionsVersionDisplay と $enableAdvancedConfig *1 を有効にしました。色々カスタマイズ出来そうなので、config.php内のコメント見ながら適当にいじくってみればいいと思います。

なお、config.php を変更した場合は phpVirtualBox をログインしなおさないと反映されないようです。

こんな感じです。