VPSでも高解像度&Xクライアントをローカル描画でGUI環境を徹底活用
2013年2月6日09:00
OSDN Magazine編集部
お名前.comのVPS(KVM) では2012年10月からvmvgaドライバに対応し、仮想マシン上のサーバーサービスでも高解像度環境が利用できるようになった。一般にVPSサービスを活用する場合、WebブラウザベースのコンソールやSSH経由のターミナルで操作する場合が多く、これまではX Window SystemのGUIを使うことを想定していないユーザーも多かっただろう。一方でGUIを使える場面はいくつかあり、設定ツールなどによってはGUIで操作したい、もしくはGUI操作を前提に作られてしまっているものもある。ここでは、vmvgaドライバを利用した高解像度X環境の利用と、Windows上のPC Xサーバーを利用したWebブラウザ上のphpMyAdmin管理画面をローカル接続に限定する、2つの活用方法について解説していく。
vmvgaドライバが使えるKVM VPS環境
お名前.comのVPS(KVM) では、ビデオドライバとしてKVM標準のcirrusとvmvgaの2つに対応している。cirrusは古いビデオカード(チップ)をベースに構成された仮想環境のため非常に汎用性が高く、どのOSでもまず動作するビデオ環境である。一方vmvgaは仮想環境用に構成されたビデオ環境であり、OS側の対応が必要となる点に注意が必要だ。
図1 KVM上の動作イメージ
ゲストOSがLinuxの場合、最新のLinuxカーネルであればvmvgaを利用できるが、少し前のバージョンのカーネルであると動作しない可能性がある。たとえば、Debian GNU/Linuxの安定板(6.0系、squeeze)ではLinuxカーネル2.6系が使われており、vmvga環境ではLinuxカーネルのエラーでOSが起動できない状態になってしまう。比較的新しいLinuxカーネルを使っているOSやvmvgaへの対応が進んでいるOS環境であれば問題ないが、すべてが動作するというわけではないので注意されたい。
vmvgaドライバを有効にするには
標準環境として用意されているCentOS 6.2では標準でvmvgaが利用できるので、これを例に手順を紹介していこう。まず、仮想マシンをシャットダウンするなどして停止状態にしてから、VirtioのON/OFFなどを行う「VM設定」のタブを開く。ここに追加されたのが、「ビデオデバイス設定」である。
図2 停止状態でコントロールパネルでのVM設定を選択
図3 コントロールパネルでのビデオデバイス設定
図3 の画面にてvmvgaを選択し、「決定」ボタンを押せばこの仮想マシンはvmvgaを使用して動作するようになる。作業はこれだけだ。あとは起動ボタンをクリックして仮想マシンを立ち上げれば、自動的にビデオドライバが認識され通常どおりに使えるようになる。
X Window System環境が整っていれば、「コンソール画面」タブ内に表示されるVNCクライアント画面でX Window Systemの操作が可能である。コントロールパネル内のVNC画面では操作メニューなどもあって手狭になるので、右上に設置されているボタンを押して別ウィンドウで表示させると操作しやすいだろう。
図4 別ウィンドウで表示させる
図5 別ウィンドウで表示したXの画面(Chrome上のVNCクライアントで動作)
最小インストール状態からのX Window Systemの導入(CentOS)
一般的なVPSの利用ケースでは、サーバー利用がメインということで必要最小限のパッケージのみをインストールしている状態が多いだろう。CentOSでX環境を追加でインストールする場合は、以下のコマンドを利用すると楽である。
# yum -y groupinstall "Japanese Support" "X Window System" Desktop
「-y」はコマンド実行中の問い合わせに「Yes」と答えるもので、途中で作業が止まることがなくなる。「groupinstall」はOSインストール時に選択できるパッケージ群を示したもので、上記のコマンドにて、日本語フォント、X Window System、デスクトップ環境が一気にインストールできる。
このようなグループは、以下のコマンドで確認できる。
# yum grouplist
グループリスト名に空白がある場合はダブルクォーテーション(”)で括って指定すれば良い。
cirrusとvmvgaの違い
vmvgaを利用すると、ビデオ関連の機能(エミュレーション)が向上し高解像度の画面が利用できるほか、処理速度も若干向上する。お名前.com VPS標準環境(CentOS 6.2)でのX Windows Systemの画面解像度設定を比較すると図6、7 のように認識される。
図6 cirrusの場合、1024×768pxまでしか選択肢がない
図7 vmvgaの場合、2360×1770pxまで利用できる
このようにvmvgaの場合、2360×1770pxまで選択可能だ。そのほかのメリットとしては、描画処理が向上するため、たとえばtopコマンドを実行しているターミナルのウィンドウを手早く動かすと、cirrusのほうは描画が追い付かず画面が乱れてしまうが、vmvgaの場合は乱れることなく正しく描画される。解像度は1024×768px程度で十分という場合でも、X Window Systemのアプリケーションを使う機会があるならばvmvgaを利用するのが良いだろう。
XアプリケーションをWindowsデスクトップで使ってみよう
もう1つのGUIの活用方法として、操作端末側でXサーバーを起動させ、そこへXクライアントを飛ばすという手法がある。Windowsであれば、WindowsのXサーバーであるPC Xサーバーと呼ばれるアプリケーションを起動しておけば、リモートのサーバーで動作するXアプリケーションをWindows上の1ウィンドウとして表示・操作することが可能だ。ローカルネットワークではよく使われていたものだが、インターネット回線やサーバーのスペックが向上したことにより、VPS上で動作するXクライアントをWindows上で動かすといったことも現実的な利用方法となっている。
たとえばWebブラウザ上でMySQLの管理が行えるphpMyAdminは、グローバルIPアドレスを持つVPS上で単純に動作させると外部からのHTTP接続でログイン画面にアクセスできてしまうし、実際にアタックをすぐに受ける。こういった管理ツールへの外部アクセスは遮断しておきたいところだ。Windows上のPC Xサーバーを使って環境を作っておけば、localhostアクセスに限定しても、リモートから利用可能だ。動作イメージは図8 のようになる。
図8 PC Xサーバーの利用概念図
最初にTera Term などのターミナル(SSHクライアント)でVPSに接続し、そこでFirefoxを起動すればそのままWindowsアプリケーションのようにWindows上の画面に表示される。Firefoxの実行プロセスはVPS上で動作しているが、ウィンドウ描画やキーボード・マウス操作はWindows上のPC Xサーバーで行われる。VPS環境から見ると、PC Xサーバーがビデオカード兼入力機器となっている格好だ。
PC Xサーバーの導入
Windowsで動作するPC Xサーバーには商用のものフリーのものなどさまざまなものがあるが、手軽に使えるものとしては、Xmingのオープンソース版がある。
http://sourceforge.jp/projects/sfnet_xming/ からXming-6-9-0-31-setup.exeをダウンロードしたら、このファイルを実行してインストールすればOKだ。
図9 Xmingのインストール
Xmingでは動作モードを4つから選べたり、DISPLAY番号の変更や初期起動アプリケーションの指定などもできるが、VPS上のXクライアントをWindowsアプリケーションのように使う場合はとくに設定する必要はない。スタートメニューからXmingを起動させて待機させておくだけだ。起動するとタスクトレイに常駐する。
図10 タスクトレイにXmingが常駐したところ
SSHクライアント(ターミナル)の設定
次に普段VPSに接続するためのSSHクライアント(ターミナル)の設定を変更し、Xフォワーディングを有効にする。Tera Term の場合は、SSHで接続する前に、「設定」メニューから「SSH転送」を選択し、「リモートの(X)アプリケーションをローカルに表示する」のチェックボックスをONにする。
図11 Tera Termでの設定
図12 Xクライアントアプリケーションのところでチェックを入れる
チェックを入れたら再度「設定」メニューから、「設定の保存」を選択し、この設定を標準のINIファイルなどに設定しておく。Windows側の設定は以上で完了である。
VPS上のXフォワーディング関連の整備
SSH経由のXフォワーディングを利用するには、VPS上のSSHサーバーでXフォワーディングが有効になるように設定を変更することと、X Windows Systemの認証パッケージを導入する2点が必要である。とくに後者は、最小インストールから「Firefoxを使うだけだから、関連パッケージはパッケージの依存関係にまかせてインストールしよう」としているとはまるポイントなので注意されたい。
SSHサーバー(sshd)の設定は、/etc/ssh/sshd_config(サーバー側なのでsshdであることに注意)で行う。最低限必要なのは、
X11Forwarding yes
の記述である。これを書き込んだらsshdを再起動しておく。
# /etc/init.d/sshd restart
なお、関連設定として、VPS上でX環境が動作している場合にDISPLAY値が重複しないようにデフォルトのDISPLAY値を変更しておく設定と、接続先サーバーをlocalhostに限定する設定もある。必須ではないが通常はこれらも追加しておくといいだろう。
X11DisplayOffset 10
X11UseLocalhost yes
次にX Window Systemの認証パッケージを導入しておく。
・CentOSなど
# yum install xorg-x11-xauth
・Debian GNU/Linux
# aptitude install xauth
このパッケージをインストールしておくことで、SSHによる接続時にユーザーのホームディレクトリ下に.Xauthorityファイルが作成され、Xフォワーディングが利用できるようになる。
あとは利用したいアプリケーションをインストールしておく。CentOSでFirefoxを利用する場合は、GNOME関連のパッケージに依存している部分があるので、インストールするパッケージが多くなってしまうが、GNOMEの管理ツールであるcontrol-centerも導入しておくと良い。
# yum install firefox control-center
これによってGConf のワーニングが表示されなくなる(ワーニングを無視するならfirefoxパッケージからの依存パッケージのみインストールしても動作する)。
GConf エラー: 設定サーバ (gconfd) に接続できませんでした: いくつか考えられる原因として、ORBit の TCP/IP ネットワークを有効にしていない、あるいはお使いのシステムで古い NFS のロックがクラッシュを引き起こしたことが考えられます。これに関連する情報については http://projects.gnome.org/gconf/ を参照して下さい: (詳細 - 1: セッションへの接続に失敗しました: /bin/dbus-launch terminated abnormally without any error message)
以上で環境設定は完了である。あとは起動したいアプリケーションをコマンドラインから「&」付き(バックグラウンド)で起動すればOKだ。
$ firefox &
図13 Windows上でDebianのIceweaselを起動
phpMyAdminの設定例
MySQLの管理をWebブラウザ上から行えるようにするphpMyAdminは、便利であると同時に著名なツールでもあるため、公開サーバーでは起動直後から日々管理UIへアタックを受ける状態になる。phpMyAdminを利用する場合は、外部からのアクセスの遮断は必須だ。そこで管理UIをPC Xサーバー上での操作のみに限定しておけば、SSH接続者のみリモート操作を可能としつつ、外部からのアクセスも遮断できるようになる。
phpMyAdminの詳細設定は省略するが、CentOSの場合、標準リポジトリには用意されていないのでExtra Packages for Enterprise Linux (EPEL)リポジトリを追加しておくか、phpMyAdminのサイトから直接PHPのソースを展開して導入しておく。
# rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum install phpmyadmin
なお、EPELを使うとPHPなど関連パッケージのバージョンがアップデートされてしまう点には注意されたい。
CentOS(EPEL)パッケージの場合、最初からphpMyAdminはローカル(127.0.0.1)からのみアクセスできる設定になっているので、特別にアクセス制御の追加設定は必要ない。MySQLなど各種設定が完了していれば、PC Xサーバー上に起動したFirefoxにて、「http://localhost/phpmyadmin/」にアクセスすればphpMyAdminが利用できるようになる。
Debian GNU/Linuxの場合は、phpMyAdminが標準リポジトリに用意されているので、まずはインストールするだけだ。
# aptitude install phpmyadmin
一方でDebianパッケージの場合は外部からphpMyAdminへのアクセスも可能な設定となっているので、何らかの制限設定をしておく。phpMyAdminの設定ファイルは、/etc/apache2/conf.d/phpmyadmin.confにあり、たとえば<Directory /usr/share/phpmyadmin>の部分に以下のような記述を追加し、Apache2を再起動させておく。
<Directory /usr/share/phpmyadmin>
:
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{Remote_Addr} !127.0.0.1
RewriteRule .* - [R=404,L]
</IfModule>
<IfModule !mod_rewrite.c>
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
</IfModule>
:
:
これでPC Xサーバー上にローカル起動したWebブラウザ(Iceweasel)のみ、「http://localhost/phpmyadmin/」にアクセスでき、phpMyAdminが利用できる。
図14 Windows上で動作するローカル接続のphpMyAdmin
VPSでもGUIの活用場面を想定してみよう
このように、vmvga環境を利用したり、PC Xサーバーを併用したりすることによって、リモート環境であるVPSでもローカル環境のようにGUIを活用することが可能である。後半に示したローカル接続のWebブラウザ操作については、HTTPアクセスの80番ポートに限定できるため、localhostの80番ポートとWindows上の任意のローカルポートをSSHポートフォワードで接続して活用する方法もあるが、ローカル利用のみに制限しているJavaアプリケーションの管理ツールなどではSSHのポートフォワードによる対処ができない。そのようなアプリケーションを使う場面では、vmvgaやPC Xサーバーが必須となる場面もあるだろう。ノウハウの1つとして一度活用してみていただきたい。