CNSのWebインタフェースをローカルで使う  

CNSのインプットファイルはWebインタフェースで編集することができます。通常はCNSの公式サイトを使うことが多いと思いますが、ローカルで実行または自分たち専用のサーバを立ち上げたいこともあると思います。そんな手順を解説します。

概要  

CNSの公式ページではWebインタフェースの構築方法が解説されていますが、これだけでは手順がわかりにくいので(というかこれだけでは使用できませんでした・・・)、メモしておきます。
大まかな手順は以下の通り。

  1. CNSのHTMLファイルおよびCGI実行環境をwww_cns_setupスクリプトで書き換える
  2. Webインタフェースに必要なファイルをfilewww_server_setup2スクリプトでコピー
  3. Webサーバの設定

になります。
オリジナルのwww_server_setupスクリプトには不具合があり、そのままでは環境を構築することができませんので修正したスクリプトを用意しました [smile]

必要環境  

手順  

ディレクトリ構造の確認  

CNSのWebインタフェースには絶対パスが使われている部分があるので、インストールする前にあらかじめWebサーバの公開ルートディレクトリを決めておく必要があります。インストールは(Webサーバの公開ルートディレクトリ)/cns_solve_1.21以下に配置されます。また、CGIスクリプトはCGI専用ディレクトリに配置する方がセキュリティ上安全ですが、基本的にはローカル(または限定的な範囲)で使うと仮定していますので同じディレクトリに配置します。
インストール後のファイル配置は以下のようになります。

- Webサーバ公開ルート/
  - cns_solve_1.21/
    - doc/
      - html/    <-- Webインタフェースの実体が置かれる
    - inputs/    <-- /usr/local/cns_solve_1.21/inputs/へのシンボリックリンク
    - libraries/ <-- /usr/local/cns_solve_1.21/libraries/へのシンボリックリンク
    - modules/   <-- /usr/local/cns_solve_1.21/modules/へのシンボリックリンク
    - utils/     <-- /usr/local/cns_solve_1.21/utils/へのシンボリックリンク
    - CGIスクリプト群(cns.lib, *.cgi) <-- 設定次第で別の場所にも置ける

必要なファイルの準備  

まずは必要なファイルを準備します。ここでは管理者権限があるものとしますが、ない場合は後ほど解説します。
CNSは/usr/local/cns_solve_1.21にインストールされているものとします。

# cd /usr/local/cns_solve_1.21
# source cns_solve_env  <-- CNSの環境を読み込む
# bin/www_cns_setup     <-- www_cns_setupスクリプトを実行
name of WWW server [default: server.foo.com ]-> localhost
path to the start of WWW tree [default: /home/httpd/html ]-> /usr/local/cnsweb
name of WWW CGI directory [default: cgi-bin ]-> .
full path to PERL on WWW server [default: /usr/bin/perl ]-> (通常Enterのみ)
==============================================================
location of CNSsolve directory is: /usr/local/cns_solve_1.21
version of CNSsolve is: 1.21
name of WWW server is: localhost
path to the start of the WWW tree is: /usr/local/cnsweb
name of the CGI directory is: .
location of the PERL program is: /usr/bin/perl
==============================================================
continue with these parameters? [y/n]-> y
...(省略)

という感じです。これで必要なファイルの書き換えができました。

ヒント
ここで指定するname of WWW CGI directoryはCGIスクリプトへのアクセスの際、http://localhost/(name of WWW CGI directory)/cns_solve_1.21/foo.cgiというように使用されます。ここでは"."を指定しているのでHTMLファイルと同じ場所になります。

Webサーバディレクトリに配置  

続いて必要なファイルをWeb公開ディレクトリに配置します。ここでは配置先は/usr/local/cnswebとします。
なお、オリジナルのwww_server_setupではdoc/html以下のファイルがコピーされないので、修正したfilewww_server_setup2を使って下さい。

# mkdir /usr/local/cnsweb
# bin/www_server_setup2
location of CNSsolve directory [default: /usr/local/cns_solve_1.21 ]-> 
path to the start of WWW tree [default: /home/httpd/html ]-> /usr/local/cnsweb
full path to CGI directory [default: /home/httpd/cgi-bin ]-> /usr/local/cnsweb
==============================================================
location of the CNSsolve directory is: /usr/local/cns_solve_1.21
version of CNSsolve is: 1.21
path to the start of the WWW tree is: /usr/local/cnsweb
location of the CGI directory is: /usr/local/cnsweb
==============================================================
continue with these parameters? [y/n]-> y
...(省略)
overwrite the files in this directory? [y/n]-> y
...(省略)

これで配置が完了したはずです。

www_server_setupの修正点

  • doc/htmlの内容をコピーするようにした

ヒント
location of the CGI directoryはCGIファイル群を配置する際に使用され、(location of the CGI directory)/cns_solve_1.21/以下に配置されます。

Webサーバのセットアップ  

続いてWebサーバのセットアップを行います。広く使われているWebサーバにApacheがありますが、CNSのWebインタフェース専用としてのみ使う場合、設定が煩雑すぎますので、オープンソースの軽量Webサーバmongooseを使ってみます。このサーバはApacheなどのように設定ファイルをいちいち記述する必要がないのでちょっと使う場合便利だと思います。プログラムサイズも40KB程度とコンパクト。

注意:CNSのCGIスクリプトは/usr/tmpに書き込みを行うので、/usr/tmpへの書き込み権限が必要になります。通常は問題ないと思いますが・・・(変更可能)

mongooseのビルド  

プロジェクトホームページからLinux用のソースを取得します。ここではmongoose-2.8.tgzを取得しました。ざっと見た感じ特に必要なライブラリはなさそうです。
取得したら適当な場所で展開してビルドします。

% tar zxvf mongoose-2.8.tgz
% cd mongoose
% make linux

で実行ファイルmongooseがビルドされます。

mongooseの起動  

起動はいたって簡単。実行ファイルのmongooseのみあれば動作します。
今回のCNS Webインタフェースを使うなら、

% mongoose -root /usr/local/cnsweb -ports 8080

で起動します。終了するときはCtrl-Cで停止します。

動作確認  

Webブラウザで、http://localhost:8080/cns_solve_1.21/doc/htmlにアクセスすればCNS-onlineと同じように使えるはずです。

カスタマイズのヒント  

共用サーバとして使う  

このページのやり方では、基本的にはローカルの使用を想定していましたが、研究室内で共用サーバとして使いたい場合、www_cns_setupスクリプトを実行するときに、

name of WWW server [default: server.foo.com ]-> localhost

このlocalhostにサーバ名またはIPアドレスを指定すれば使用可能になります。

テンポラリディレクトリの変更  

標準の状態ではテンポラリディレクトリは/usr/tmpに指定されており、ログが/usr/tmp/cns_solve_1.21に書き込まれますが変更することも可能です。変更する際は/usr/local/cnsweb/cns.libの、

50 $tmp_dir     = "/var/tmp/$cns_version/inputs";

を書き換えるとよさそうです。

管理者権限がない場合  

管理者権限がない場合は、/usr/local/cns_solve_1.21の書き換えができないので、自分のホームディレクトリなどにCNSをインストールし、Webインタフェースをインストールします。なお、シンボリックリンクが張られるので、インストールしたCNSは削除せずに置いておきます。

Apacheで使う  

Apacheのサーバコンフィギュレーションに関しては省略しますが、ここでインストールした構成のCNSのWebインタフェースに関しては例えば以下のような設定が有効です。

Alias /cns-online /usr/local/cnsweb/cns_solve_1.21/doc/html
Alias /cns_solve_1.21 /usr/local/cnsweb/cns_solve_1.21
<Directory /usr/local/cnsweb/cns_solve_1.21>
    Allow from all
    Options +ExecCGI
</Directory>

この設定の場合、http://server/cns-online/にアクセスすることでCNSのページを開くことができます。

ディスカッション  

添付ファイル: filewww_server_setup2 1287件 [詳細]