* CNSのWebインタフェースをローカルで使う [#l3f17fa6]
 CNSのインプットファイルはWebインタフェースで編集することができます。通常はCNSの公式サイトを使うことが多いと思いますが、ローカルで実行または自分たち専用のサーバを立ち上げたいこともあると思います。そんな手順を解説します。
 
 - 元ドキュメント -- http://cns-online.org/v1.21/installation/text.html#html_interface
 
 ** 概要 [#c860b78d]
 CNSの公式ページではWebインタフェースの構築方法が解説されていますが、これだけでは手順がわかりにくいので(というかこれだけでは使用できませんでした・・・)、メモしておきます。~
 大まかな手順は以下の通り。
 
 + CNSのHTMLファイルおよびCGI実行環境をwww_cns_setupスクリプトで書き換える
 + Webインタフェースに必要なファイルを&ref(www_server_setup2);スクリプトでコピー
 + Webサーバの設定
 
 になります。~
 &color(red){オリジナルのwww_server_setupスクリプトには不具合があり、そのままでは環境を構築することができませんので修正したスクリプトを用意しました⌣。};
 
 ** 必要環境 [#n01180a9]
 - Webサーバ(Apacheを管理できるならApache(ここでは解説しません)。またはCGIが使用可能なサーバ(章末に手順記載))。
 - Perl Ver.5以上(5.10.0で動作確認)
 - &color(red){サーバの管理者権限はなくても大丈夫};
 
 ** 手順 [#ge027ca4]
 *** ディレクトリ構造の確認 [#g06ef49c]
 CNSのWebインタフェースには絶対パスが使われている部分があるので、インストールする前にあらかじめWebサーバの公開ルートディレクトリを決めておく必要があります。インストールは'''''(Webサーバの公開ルートディレクトリ)'''/cns_solve_1.21''以下に配置されます。また、CGIスクリプトはCGI専用ディレクトリに配置する方がセキュリティ上安全ですが、基本的にはローカル(または限定的な範囲)で使うと仮定していますので同じディレクトリに配置します。~
 インストール後のファイル配置は以下のようになります。
  - Webサーバ公開ルート/
    - 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スクリプト群(*.cgi) <-- 設定次第で別の場所にも置ける
    - 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) <-- 設定次第で別の場所にも置ける
 
 *** 必要なファイルの準備 [#ve6b7425]
 まずは必要なファイルを準備します。ここでは管理者権限があるものとしますが、ない場合は後ほど解説します。~
 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
  ...(省略)
 という感じです。これで必要なファイルの書き換えができました。
 #classdiv(box-yellow)
 &color(red){''ヒント''};~
 ここで指定する''name of WWW CGI directory''はCGIスクリプトへのアクセスの際、''http&#058;//localhost/'''(name of WWW CGI directory)'''/cns_solve_1.21/foo.cgi''というように使用されます。ここでは''"."''を指定しているのでHTMLファイルと同じ場所になります。
 #classdiv(end)
 
 *** Webサーバディレクトリに配置 [#q847235d]
 続いて必要なファイルをWeb公開ディレクトリに配置します。ここでは配置先は/usr/local/cnswebとします。~
 なお、オリジナルのwww_server_setupではdoc/html以下のファイルがコピーされないので、修正した&ref(www_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
  ...(省略)
 これで配置が完了したはずです。
 
 #classdiv(box-blue)
 ''www_server_setupの修正点''~
 - doc/htmlの内容をコピーするようにした
 #classdiv(end)
 
 #classdiv(box-yellow)
 &color(red){''ヒント''};~
 ''location of the CGI directory''はCGIファイル群を配置する際に使用され、'''''(location of the CGI directory)'''/cns_solve_1.21/''以下に配置されます。
 #classdiv(end)
 
 ** Webサーバのセットアップ [#q171fc24]
 続いてWebサーバのセットアップを行います。広く使われているWebサーバにApacheがありますが、CNSのWebインタフェース専用としてのみ使う場合、設定が煩雑すぎますので、オープンソースの軽量Webサーバmongooseを使ってみます。このサーバはApacheなどのように設定ファイルをいちいち記述する必要がないのでちょっと使う場合便利だと思います。プログラムサイズも40KB程度とコンパクト。
 
 - http://code.google.com/p/mongoose/ -- mongooseプロジェクトホームページ
 
 &color(red){''注意:CNSのCGIスクリプトは/usr/tmpに書き込みを行うので、/usr/tmpへの書き込み権限が必要になります。通常は問題ないと思いますが・・・(変更可能)''};
 
 *** mongooseのビルド [#jd046ddf]
 プロジェクトホームページからLinux用のソースを取得します。ここではmongoose-2.8.tgzを取得しました。ざっと見た感じ特に必要なライブラリはなさそうです。~
 取得したら適当な場所で展開してビルドします。
  % tar zxvf mongoose-2.8.tgz
  % cd mongoose
  % make linux
 で実行ファイルmongooseがビルドされます。
 
 *** mongooseの起動 [#r864f89b]
 起動はいたって簡単。実行ファイルのmongooseのみあれば動作します。~
 今回のCNS Webインタフェースを使うなら、
  % mongoose -root /usr/local/cnsweb -ports 8080
 で起動します。終了するときはCtrl-Cで停止します。
 
 *** 動作確認 [#l7f85620]
 Webブラウザで、''http&#058;//localhost:8080/cns_solve_1.21/doc/html''にアクセスすればCNS-onlineと同じように使えるはずです。
 
 ** カスタマイズのヒント [#da2bfc10]
 *** 共用サーバとして使う [#p67f8c16]
 このページのやり方では、基本的にはローカルの使用を想定していましたが、研究室内で共用サーバとして使いたい場合、www_cns_setupスクリプトを実行するときに、
  name of WWW server [default: server.foo.com ]-> localhost
 このlocalhostにサーバ名またはIPアドレスを指定すれば使用可能になります。
 
 *** テンポラリディレクトリの変更 [#pe977588]
 標準の状態ではテンポラリディレクトリは''/usr/tmp''に指定されており、ログが''/usr/tmp/cns_solve_1.21''に書き込まれますが変更することも可能です。変更する際は''/usr/local/cnsweb/cns.lib''の、
  50 $tmp_dir     = "/var/tmp/$cns_version/inputs";
 を書き換えるとよさそうです。
 
 *** 管理者権限がない場合 [#lcf2bafa]
 管理者権限がない場合は、/usr/local/cns_solve_1.21の書き換えができないので、自分のホームディレクトリなどにCNSをインストールし、Webインタフェースをインストールします。なお、シンボリックリンクが張られるので、インストールしたCNSは削除せずに置いておきます。
 
 *** Apacheで使う [#s19d027e]
 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&#058;//server/cns-online/''にアクセスすることでCNSのページを開くことができます。
 
 ** ディスカッション [#ve4be496]
 #comment