Mathematica 9 is now available
2.4 X Window Systemの設定(Unixのみ)

ドキュメント2. インストール

 

2.4 X Window Systemの設定(Unixのみ)

Webサーバ内からMathematica のフロントエンドをX上で起動する際の特殊な問題がいくつかあります.これは,通常Webサーバはtomcatのような特別なアカウントとして実行されるからです.つまり,webMathematica がフロントエンドを実行するとき,フロントエンドはそのアカウントとして実行されているのです.フロントエンドはXサーバに接続されていないと機能できません.そうするためには,Xサーバを実行している特別なアカウントが入っているWebサーバマシンのコンソールにログインするとよいのですが,このアプローチには問題もあります.まず,マシンのコンソールへのログインをオープンにしたままの状態にしなければなりません.また,フロントエンドが何かするたびにスクリーンにウィンドウが現れるので,マシンを使っている人の邪魔になる可能性があります.

Xの標準的な認証システムのもとでは,別のユーザがコンソールにログインしてXサーバを起動したら,特別なwebMathematica のアカウントから実行されているフロントエンドはこのサーバに全く接続できなくなります.このような接続が可能になるようにサーバを設定することはできますが,それでも十分ではありません.webMathematica がフロントエンドを使う度にスクリーンにウィンドウが表示されてしまうからです.この件に関しては後ろのセクションでより詳しく説明します.

これらの問題は次のセクションで説明するようにXvncのような仮想Xサーバを実行することで解決できます.仮想サーバを実行するとMathematica のフロントエンドが作るウィンドウがMathematica を実行しているコンピュータのスクリーンコンソールに表示されないようになります.

2.4.1 XvncとwebMathematica の設定

XvncとはUnix VNCサーバのことです.これはwebMathematica によって実行されているMathematica フロントエンドのようなアプリケーションが使う仮想Xサーバを提供します.また,VNCサーバも提供し,VNCビューアを接続してサーバで実行されているアプリケーションを見たりコントロールしたりできるようにします.これはフロントエンドを実行していることで起こる問題の所在を明らかにするのに役立ち便利です.

Linux,Solaris,Alphaを含む多くのプラットフォーム用のXvncがhttp://www.cl.cam.ac.uk/Research/DTG/attarchive/vnc/download.htmlでダウンロードできます.

Xvncのインストール

Xvncのインストールは極めて単純です.アーカイブを解凍し,必要なファイルを/usr/local/binのようなローカルのbinディレクトリにコピーしてください.以下はその例です.

[server1]$ cp vncviewer vncserver vncpasswd vncconnect Xvnc /usr/local/bin

Xvncの起動

Xvncの起動もインストールと同じように極めて単純です.起動はwebMathematica を実行しているユーザとして,例えばtomcatとして行ってください.最初に起動したときにパスワードが求められます.下記の例ではサーバはdisplay :1として起動されています.

[server1]$ su tomcat
[server1]$ vncserver
You will require a password to access your desktops.
Password:
Verify:
New'X' desktop is server1:1
Creating default startup script /home/tomcat/.vnc/xstartup
Starting applications specified in /home/tomcat/.vnc/xstartup
Log file is /home/tomcat/.vnc/server1.wolfram.com:1.log

Xvncのテスト

起動できたら,次にMathematica のフロントエンドのようにサーバを使うアプリケーションを実行してサーバをテストしてみるとよいでしょう.以下をご覧ください.

[server1]$ su tomcat
[server1]$ mathematica -display :1

もちろんこうしても実際のウィンドウはスクリーンに現れません.というのは,これが仮想サーバだからです.Mathematica フロントエンドからウィンドウが見たければ,vncviewerを実行してください.方法は次の通りです.

[server1]$ vncviewer :1

これでスクリーンにフロントエンドのウィンドウが表示されます.フロントエンドに入力して動いていることを碓認することもできます.webMathematica が動いているときならいつでもvncviewerを使ってスクリーンを見ることができます.

webMathematica の設定

最終段階としてMSP.confファイルを修正し,フロントエンドがこのサーバを使うようにします.FrontEndLaunchCommandの設定は付録の「サイト設定」の中で説明してあります.次はdisplay :1のXサーバに接続するサンプルの設定です.この設定はMSP.conf中にコメントとして入っています.

FrontEndLaunchCommand=mathematica -mathlink -display :1 -nogui -geometry 1000x500+10+10

これでUnixサーバでwebMathematica を実行する準備が整いました.

フロントエンドが正しく起動できないようなら,設定ファイルにサーバ名を加えるとよいかもしれません.次の例をご覧ください.myserverがwebMathematicaXvncが実行されているマシン名です.

FrontEndLaunchCommand=mathematica -mathlink -display myserver:1 -nogui -geometry 1000x500+10+10

2.4.2 X関連のその他の問題

このセクションでは,XサーバでwebMathematica を使う際のその他の問題について説明します.上記のようにXvncサーバを設定した場合は,このセクションは飛ばしても構いません.

Xサーバとの接続

Mathematica フロントエンドは,実行するときにXサーバと接続されていなければなりません.Xサーバがフロントエンドを実行しているユーザ以外のユーザによって実行されると,Xサーバはこの接続を拒否します.以下をご覧ください.

[root]# su tomcat
bash$ mathematica
Xlib:connection to ":0.0" refused by server
Xlib:Client is not authorized to connect to Server
xset:unable to open display ":0.0"
Xlib:connection to ":0.0" refused by server
Xlib:Client is not authorized to connect to Server
xset:unable to open display ":0.0"
Xlib:connection to ":0.0" refused by server
Xlib:Client is not authorized to connect to Server
xset:unable to open display ":0.0"
Xlib:connection to ":0.0" refused by server
Xlib:Client is not authorized to connect to Server
XMathematica:can't open display:0.0, exiting...
bash$

ローカルマシンからのすべての接続を許可すると,この問題を避けることができます.

[root]# xhost +localhost
localhost being added to access control list
[root]# su tomcat
bash$ mathematica
bash$

しかし,こうするとセキュリティの問題が起こりかねないので,これは余りよい方法ではありません.また,フロントエンドが実行される度にスクリーンにウィンドウが表示され,システムのユーザに迷惑がかかるという問題もあります.

このような問題を避けるためにはXvncのような仮想Xサーバを実行するのが賢明です.

Xvfb

Xvfbは仮想フレームバッファサーバです.これについての説明はhttp://www.xfree86.org/4.3.0/Xvfb.1.htmlをご覧ください.これはXvncの代りに使うことができます.しかし,Xvncの方が使いやすく機能も充実しています.

Linuxの場合はhttp://www.redhat.comからRPMアーカイブがダウンロードできます.インストールしたら次のように起動してください.この際,rootととして実行する必要があるかもしれません.

su tomcat -c "/usr/X11R6/bin/Xvfb :1 -fp
unix/:7100, /usr/local/Wolfram/Mathematica/4.2/SystemFiles/Fonts/Type1,
/usr/local/Wolfram /Mathematica/4.2/SystemFiles/Fonts/BDF -screen 0 800x600x24 " &

このコマンドで,Xvfbがポート7100のフォントサーバを参照して起動され,Mathematica フォントを含むディレクトリが加えられます.これとは異なる場所にMathematica がインストールしてある場合はこのディレクトリを変更する必要があります.インストールによってはMathematica フォントの場所がフォントサーバの設定に加えられていることがあります.その場合はXvfbを起動するときにMathematica フォントを参照する必要はありません.Xvfbは次のように起動することができます.

su tomcat -c "/usr/X11R6/bin/Xvfb :1 -fp unix/:7100" &

この例では,Xvfbがフォントサーバとしてローカルマシンのポート7100を使うと想定されています.フォントサーバの設定がこれとは異なる場合は,実際の設定に必要な変更を加えてください.例えばRedhat 6ではフォントサーバがローカルのunixのソケットを使うので,Xvfbは次のように起動します.

su tomcat -c "/usr/X11R6/bin/Xvfb :1 -fp
unix/:-1, /usr/local/Wolfram/Mathematica/4.2/SystemFiles/Fonts/Type1,
/usr/local/Wolfram /Mathematica/4.2/SystemFiles/Fonts/BDF -screen 0 800x600x24 " &

フォントサーバを実行しない場合は,フォントサーバの参照なしにXvfbを起動する必要があるでしょう.その場合は,次の「マニュアルでのフォントインストール」のセクションで説明するように,Mathematica のフォントをXのレイアウトにコピーする必要があります.

su tomcat -c "/usr/X11R6/bin/Xvfb :1 -screen 0 800x600x24 "&

仮想フレームバッファサーバを起動したら,実行されているかどうかをテストします.これはrootととして行う必要があるでしょう.

[root]# su tomcat
bash$ mathematica -display :1

もちろん,フロントエンドがこのサーバで正確に実行されていることを碓認したくても,これをスクリーン上で見ることはできません.このためエラーを示すダイアログボックスも見ることができません.フロントエンドが何を表示しているかを見る方法として,xwdxwudを使ってダンプを調べることが考えられます.方法は次の通りです.

xwd -display :1 -root | xwud

これで,フロントエンドが表示しているものが分かります.例えば,パスワードが見付からないというメッセージを見たら,pwfileコマンドラインオプションを追加すればよいのです.

仮想フレームバッファXサーバが動いているときは,MSP.confファイルに修正を加えフロントエンドがこのサーバを使うようにしなければなりません.FrontEndLaunchCommandの設定は「付録」の「サイト設定」をご覧ください.以下は設定のサンプルです.

FrontEndLaunchCommand=mathematica -mathlink -display :1 -nogui -geometry 1000x500+10+10

Sun/Solarisのように,システムによってはユーザのtomcatで起動した場合に問題のあるXサーバもあります.これは/tmp/.X11ディレクトリの許可がセキュリティ上の理由で限定されているためです.リスニングソケットが確立できないというメッセージにより,この問題が生じていることが分かります.ひとつの解決策としてディレクトリに修正を加えtomcatが書き込めるようにすることが考えられます.この問題に関してはhttp://www.faqs.org/faqs/Solaris2/FAQ/もご参照ください.

マニュアルでのフォントインストール

Mathematica フォントにアクセスできなければフロントエンドは動きません.vncviewerあるいはxwdを使ったXサーバの出力でフロントエンドがフォントを見付けられないというダイアログボックスを表示していることが分かったら,フォントを見付けるための更なる手段を講じなければなりません.そのための簡単かつ劇的な解決策のひとつとして,Mathematica フォントをXにコピーすることが考えられます.

cd /usr/X11R6/lib/X11/fonts
cp -r 75dpi 75dpi.orig
cd 75dpi
cp /usr/local/mathematica/SystemFiles/Fonts/X/*.bdf .
mkfontdir

しかし,これはあまりよい解決方法とはいえません.できれば避けた方がよいでしょう.というのも,Mathematica をアップデートしたときにフォントも忘れずにコピーしなければならないからです.適切な解決方法は前述したようにフォントサーバかあるいはフォントパスの設定を使うようにしてXvfbを起動することです.なお,この問題はWindowで起動している場合には起りません.



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information