Documentation 2. インストール![]() |
![]() ![]() |
Webサーバ内からMathematica のフロントエンドをX上で起動する際の特殊な問題がいくつかあります.これは,通常Webサーバはtomcatのような特別なアカウントとして実行されるからです.つまり,webMathematica がフロントエンドを実行するとき,フロントエンドはそのアカウントとして実行されているのです.フロントエンドはXサーバに接続されていないと機能できません.そうするためには,Xサーバを実行している特別なアカウントが入っているWebサーバマシンのコンソールにログインするとよいのですが,このアプローチには問題もあります.まず,マシンのコンソールへのログインをオープンにしたままの状態にしなければなりません.また,フロントエンドが何かするたびにスクリーンにウィンドウが現れるので,マシンを使っている人の邪魔になる可能性があります.
Xの標準的な認証システムのもとでは,別のユーザがコンソールにログインしてXサーバを起動したら,特別なwebMathematica のアカウントから実行されているフロントエンドはこのサーバに全く接続できなくなります.このような接続が可能になるようにサーバを設定することはできますが,それでも十分ではありません.webMathematica がフロントエンドを使う度にスクリーンにウィンドウが表示されてしまうからです.この件に関しては後ろのセクションでより詳しく説明します.
これらの問題は次のセクションで説明するようにXvncのような仮想Xサーバを実行することで解決できます.仮想サーバを実行するとMathematica のフロントエンドが作るウィンドウがMathematica を実行しているコンピュータのスクリーンコンソールに表示されないようになります.
XvncとはUnix VNCサーバのことです.これはwebMathematica によって実行されているMathematica フロントエンドのようなアプリケーションが使う仮想Xサーバを提供します.また,VNCサーバも提供し,VNCビューアを接続してサーバで実行されているアプリケーションを見たりコントロールしたりできるようにします.これはフロントエンドを実行していることで起こる問題の所在を明らかにするのに役立ち便利です.
XvncはRealVNC(http://www.realvnc.com)とTightVNC(http://www.tightvnc.com)から入手することができます.Linuxの中にはRPMパッケージ形式でXvncを含んでいるものもあります.
Xvncのインストールは極めて単純です.アーカイブを解凍し,必要なファイルを/usr/local/bin.のようなローカルのbinディレクトリにコピーしてください.最新版のLinuxにはXvncがはじめからインストールされているものもあります.以下に示すようにXvncバイナリをコピーしてください.
[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
起動できたら,次にMathematica のフロントエンドのようにサーバを使うアプリケーションを実行してサーバをテストしてみるとよいでしょう.以下をご覧ください.
[server1]$ su tomcat
[server1]$ mathematica -display :1
もちろんこうしても実際のウィンドウはスクリーンに現れません.というのは,これが仮想サーバだからです.Mathematica フロントエンドからウィンドウが見たければ,vncviewerを実行してください.方法は次の通りです.
[server1]$ vncviewer :1
これでスクリーンにフロントエンドのウィンドウが表示されます.フロントエンドに入力して動いていることを碓認することもできます.webMathematica が動いているときならいつでもvncviewerを使ってデスクトップで見ることもできます.
最終段階としてMSP.confファイルを修正し,フロントエンドがこのサーバを使うようにします.FrontEndLaunchFlagsの設定は付録の「サイトの設定」の中で説明してあります.次はdisplay :1のXサーバに接続するサンプルの設定です.この設定はMSP.conf中にコメントとして入っています.
FrontEndLaunchFlags=-display :1
これでUnixサーバでwebMathematica を実行する準備が整いました.
フロントエンドが正しく起動できないようなら,設定ファイルにサーバ名を加えるとよいかもしれません.次の例をご覧ください.myserverがwebMathematica とXvncが実行されているマシン名です.
FrontEndLaunchFlags=-display myserver:1
このセクションでは,XサーバでwebMathematica を使う際のその他の問題について説明します.上記のようにXvncサーバを設定した場合は,このセクションは飛ばしても構いません.
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は仮想フレームバッファサーバです.これについての説明は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
もちろん,フロントエンドがこのサーバで正確に実行されていることを碓認したくても,これをスクリーン上で見ることはできません.このためエラーを示すダイアログボックスも見ることができません.フロントエンドが何を表示しているかを見る方法として,xwdとxwudを使ってダンプを調べることが考えられます.方法は次の通りです.
xwd -display :1 -root | xwud
これで,フロントエンドが表示しているものが分かります.例えば,パスワードが見付からないというメッセージを見たら,pwfileコマンドラインオプションを追加すればよいのです.
仮想フレームバッファXサーバが動いているときは,MSP.confファイルに修正を加えフロントエンドがこのサーバを使うようにしなければなりません.FrontEndLaunchFlagsの設定は「付録」の「サイトの設定」をご覧ください.以下は設定のサンプルです.
FrontEndLaunchFlags= -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/Wolfram/Mathematica/5.2/SystemFiles/Fonts/X/*.bdf .
mkfontdir
しかし,これはあまりよい解決方法とはいえません.できれば避けた方がよいでしょう.というのも,Mathematica をアップデートしたときにフォントも忘れずにコピーしなければならないからです.適切な解決方法は前述したようにフォントサーバかあるいはフォントパスの設定を使うようにしてXvfbを起動することです.なお,この問題はWindowで起動している場合には起りません.
![]() ![]() |