* 各種インストール(D-Chaより) [#r017f2d5]
 * Webサーバで一般的によく使うと思われるプログラム [#j97397b3]
 ** 必要なプログラムのインストール [#k24e0ea2]
 - openssh-server
 - openssh-clients
 - wget
 - sudo
 - portmap
 - build-essential
 
 ** プログラムのインストール [#m53b5f50]
 D-Cha4ではレスポンスの高速化を目指して、コンパイルはすべてIntel Compilerで行う。ただし、Perlモジュールのコンパイルの際はgccが使われてしまうのでgccをiccのリンクにして対処する。
 
 ** Intel Compilerのオプション [#u873dc8b]
 必要な各プログラムをコンパイルするときにIntel Compilerを使用するが、その際、Ver.9.xと10.xではオプションが変わっている。従ってコンパイル時のCFLAGSがコンパイラバージョンによって
 異なるので注意!
 
 *** Intel Compiler Ver.9.x [#i426584a]
  CFLAGS="-O3 -tpp7 -xWNB -axWNB -ip"
 
 *** Intel Compiler Ver.10.x [#w2ed558e]
  # CFLAGS="-O3 -xW -axT -openmp -parallel -no-prec-div -ipo"
  CFLAGS="-O3 -xW -axT -mtune=pentium4 -parallel -no-prec-div -ip"
 ただし-xW,-axTオプションはCPUによって異なるので要確認。
 
 ** 実際のインストール [#y270690b]
 *** D-Chaユーザーの作成 [#d814fdce]
  # adduser -g 100 -m -u 1001 -s /bin/tcsh dcha
  # passwd dcha
 UID,GIDは環境に応じて変更する。
 
 *** Intel Compiler 9.1.042 [#r403340c]
 &color(red){10.0でもほぼ同じ};
 - インストール
 ''sudo''でインストールするとエラーは出ないが、''su -''でルートになってインストールするとスクリプトエラーが出た。~
  % cd l_cc_c_9.1.042
  % sudo ./install.sh
 ここではC/C++コンパイラとデバッガをインストールした。
 
 - ld.so.confに以下の行を追加
  /opt/intel/cc/9.1.042/lib
 
 - ldconfigのキャッシュを更新
  # ldconfig
 
 *** Apache 2.0.63 [#saf5fb9b]
 - apt
 -- openssl-devel
 - Intel Compilerでコンパイル~
 SSL、Headers、Rewriteモジュールが必要になるのでEnableにする。
  % cd httpd-2.0.63
  % ./configure CC=icc CFLAGS=IntelCompilerオプション LIBS=-lpthread \
    --enable-ssl --with-ssl=/usr --enable-headers --enable-rewrite
  % make
  % sudo make install
 - アカウント:apache(id=81)を作成(Vine4では48)
 
 *** mod_perl 2.0.3 [#t222b5ba]
 - apt
 -- gdbm-devel
 - gccをiccへのリンクにする
  # mv /usr/bin/gcc /usr/bin/gcc.bk
  # ln -s /opt/intel/cc/9.1.042/bin/icc /usr/bin/gcc
 - Intel Compilerでコンパイル
  % unsetenv LANG   <-- LANGが日本語だとerror_logが文字化けする
  % perl Makefile.PL MP_APXS=/usr/local/apache2/bin/apxs OPTIMIZE=IntelCompilerオプション
  % make
  % sudo make install
 
 *** PHP 5.2.5 [#db520100]
 - apt
 -- libxml2-devel
 
 WebサーバにPHPをインストールするためにIntel Compilerでコンパイル。
  % CC=icc CFLAGS="-O3 -tpp7 -xWNB -axWNB" ./configure \
      --with-apxs2=/usr/local/apache2/bin/apxs \
      --enable-safe-mode \
      --enable-mbstring
  % make
  % make test
 で大丈夫みたいだ。
 - 2007/12/13追記~
 PHP 5.2.5でenable-safe-modeでコンパイルした場合、テストで警告が出た。テスト結果ではsafe-modeを使っている場合、いくつかの警告が出ると書いてあるから多分OKかな?~
 今回はsafe-modeを切ってみた。
 
 インストール後libtoolを実行した
  libtool --finish /home/nobrin/progs/php-5.2.5/libs
  % sudo make install
  % sudo libtool --finish /home/nobrin/progs/php-5.2.5/libs
 
 - 2007/12/15追記~
 ApacheのMPMスレッドモデルをpreforkではなくworkerで起動しようとするとPHPがthreadsafeではない、と怒られる。どうやらPHPをコンパイルしたときにApacheがpreforkだったのが原因らしい。
 Apacheをworkerにしてインストール後PHPをコンパイルするとthreadsafeになるそうな。~
 つまり、コンパイルするときは、
 
 ++ Apache2を--with-mpm=workerでビルドおよびインストール
 ++ PHPのビルドおよびインストール
 
 という順が必要になるらしい。
 
 *** PostgreSQL 8.3.0 [#xcdb1e53]
 パフォーマンスが劇的に変わったという8.3を試す。
 - apt
 -- bison
 -- readline-devel
 -- flex
 -- zlib-devel
 - Intel Compilerでコンパイル
  % ./configure CC=icc CFLAGS=IntelCompilerオプション
  % make
  % sudo make install
 
 コンパイル時相当時間がかかるが待てば終わるはず。とにかく長い・・・
 - postgres(id=70)ユーザーを作成
  # groupadd -g 70 postgres
  # useradd -d /var/lib/postgresql -g 70 -m -s /bin/tcsh -u 70 postgres
 - postgresユーザーの設定
 .cshrcファイルに以下の行を追加
  setenv PGDATA /var/lib/postgresql/data
  setenv PATH /usr/local/pgsql/bin:${PATH}
 - postgresユーザーでデータベースを初期化する
  % source .cshrc
  % mkdir data
  % initdb
 - D-Cha用データベースアカウントを作成
  % createuser dcha
    Shall the new role be a superuser? (y/n) n
    Shall the new role be allowed to create databases? (y/n) n
    Shall the new role be allowed to create more new roles? (y/n) n
  % createdb dcha4
 
 *** ImageMagick 6.3.7-2 [#gb119242]
 aptでインストールしてもおそらく構わないが、依存プログラムが大量に入るため、ソースからインストールした。~
 &color(red){ImageMagick 6.3.3-3ではPerlMagick使用時に実行時エラーが出て使用できなかった};~
 &color(red){ImageMagick 6.3.2-9はOK。6.3.7-5はlibperl.aがない、と怒られてビルドできない};
 -apt
 -- libpng-devel,libjpeg-devel,libtiff-devel,libxml2-devel,netpbm-devel,freetype2-devel,gd-devel,bzip2-devel
 - Intel Compilerでコンパイル
  % ./configure CC=icc CFLAGS="-O3 -tpp7 -xWNB -axWNB -ip" LIBS=-lsvml
 しかし、なぜかLIBSが反映されないのでMakefileを修正する。(6.3.7では反映されていた)
  1984: LIBS = -lsvml
 svmlリンクオプションの問題はEMBOSSのインストールと同様。~
 また、C++のオプションで-O2がオーバライドされた、と何度も出て気持ち悪いので、
  1914: CXXFLAGS = -g -Wall -W -pthread
  2008: MAGICK_CXXFLAGS = -g -Wall -W -pthread
 これらの''-O2''オプションをはずした。その他、-Wは対応していない、という警告も出るので-Wも消してもいいのかもしれない。~
 さらに、PerlMagickコンパイル時のOPTIMIZEオプションを指定
  2053: PERL_MAKE_OPTIONS = OPTIMIZE="-O3 -tpp7 -xWNB -axWNB -ip"
 
  % make
  % sudo make install
 これもコンパイルに結構時間がかかる。
 
 *** GNUPLOT [#o4ca7984]
 XAFSをプロットする際に必要。aptでインストールする。
 
 *** Subversion [#ud08b955]
 Vine 4.2ではaptでインストールできるため、aptを使用。
 - subversion
 
 Vine 3.2ではneonのバージョンなどとの兼ね合いで1.3.2をインストールした。
 - apt
 -- ruby-devel, db4-devel, neon-devel, python-devel
 
 *** VLゴシック [#uc7e5245]
 getsp8.cgi(SPring-8環境カメラ画像)取得時に文字を埋め込むためにインストール。
 - apt
 -- TrueType-sazanami
 
 *** GhostScript [#q3a0a3ab]
 - apt
 -- ghostscript
 
 ** システム設定 [#w1f10996]
 *** rc.localの編集 [#p80a352e]
 /etc/rc.localの末尾に以下のコマンドを追加
  sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /var/lib/postgresql/data -l /var/lib/postgresql/pgsql.log start
  /usr/local/apache2/bin/apachectl startssl
 これで起動時にPostgreSQLとApacheが起動する。
 
 *** GnuPGを使う場合の設定 [#q1501e9c]
 GnuPGで公開鍵暗号を使う場合はApacheアカウントの設定が必要。大まかな流れは以下の通り。
 - &color(red){Apacheのホーム/home/apacheに.gnupgディレクトリを作り''--gen-key''をする};
 - &color(red){使用する公開鍵に内部署名する''--lsign-key''};
 - .gnupgディレクトリのパーミッションは700にしておく
 - gpgにsuidしておいた方が警告が出なくてよい(chmod u+s gpg)
 
 パーミッションの関係は、.gnupgディレクトリパーミッションは--no-permission-warning、安全でないメモリの警告は--no-secmem-warningで消せるが煩雑になるので(というか問題が解決して>
 いない)。
 
 - 手順
 -- apacheのホームディレクトリを/home/apacheとし、一時的にログインできるようにpasswdファイルを書き直す。~
 --- ''/bin/false''なので''/bin/tcsh''など。
 -- ディレクトリを構成する(後ろの数字は属性)
  /home/apache   (700)
  +- .gnupg/     (700)
 -- Insecure memoryエラーが出ないように、gpgにsuidする。
  # chmod u+s /usr/bin/gpg
 -- ユーザーapacheになり、GnuPGをセットアップする。
  apache% gpg --gen-key
 この時鍵長は2048bitにした。
 -- 使用する公開鍵にサインする
  apache% gpg --lsign-key 'D-Cha System'
 
 *** iptablesでポート転送する [#z63de1f6]
 10223へのアクセスを80に転送する。
  iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10223 -j REDIRECT --to-port 80
 
 * Perlモジュールのインストール [#o53f73d3]
 ** 初期設定 [#l334de16]
  Policy on building prerequisites (follow, ask or ignore)? [ask] follow
  ftp://ftp.riken.jp/lang/CPAN
 
 ** CPANモジュールの設定 [#c0f49a4f]
 ルートになってCPANモジュールでインストールする。perl Makefile.PLオプションの設定の時に、
  OPTIMIZE="-O3 -tpp7 -xWNB -axWNB -ip"
 を指定しておく。
 
 ** CPANモジュールのアップデート [#ve8ff5ab]
  install Bundle::CPAN
  reload CPAN
 
 ** D-Cha Bundlesのインストール [#aba05771]
 一つ一つインストールするのは大変なのでBundleを使ってインストールする。
 
 *** Bundleインストール前の準備 [#j2c512d2]
 - apt
 -- expat-devel
 -- libxml2-devel
 
 - その他、設定で細かいところ
 -- CGI.pm~
 CGI.pm 3.31ではこれまでの表示方法ができない。mod_perlのやり方通りが必要。~
 とりあえずCGI.pmは3.29を使う。
 -- PostgreSQLの共有ライブラリ~
 ld.so.confに/usr/local/pgsql/libを追加
 -- Net::SSLeayをあらかじめインストール~
 CPANでインストールしようとするとOPTIMIZEオプションがOpenSSLのコンパイル環境と異なる、とエラーが出て停止するのでaptを使ってインストールする。パッケージは''perl-Net_SSLeay''。
 -- Diffractionモジュール群
 --- Diffraction
 --- Diffraction-MarMosaic
 --- Diffraction-Jupiter
 --- Diffraction-RAXIS
 
 - Bundleファイルをコピー~
 DCha.pmを/root/.cpan/Bundle/Personal/DCha.pmとしてコピーしておく。
 
 *** インストール [#ee7fd877]
 CPANを使ってインストールする。Perl6::Slurpはエラーメッセージを確認するので''unset LANG''を実行しておく。
  # unset LANG
  # cpan
  cpan> install Bundle::Personal::DCha
 これでPerlモジュールの環境がセットアップされた。
 
 ** インストールしたモジュール [#a6973279]
 - DBI
 - DBD::Pg
 - Class::DBI -- 使わない
 - DBIx::Class
 - Exception::Class
 - FormValidator::Simple
 - Net::SSLeay
 -- コンパイラの種類があわないとか文句を言われるので.cpan/build中でコンパイルしてインストールする~
  # perl Makefile.PL /usr OPTIMIZE="-O3 -tpp7 -xWNB -axWNB -ip"
  # make
  # make test
  # make install
 Net::SSLeayをインストールすればIO::Socket::SSLも問題なくインストールできる。
 
 ** Etermで日本語入力 [#z01df3bc]
 WindowMaker + Etermで日本語入力します。今どきWindowMakerを使っている人がいるかどうかは疑問ですが((少なくとも私は使ってます))、設定してみます。Vine 4.0ではあらかじめ日本語入力>
 の設定ができているので、設定をちょっといじればOK。でも、Eterm-0.9.4じゃないとダメみたいです。0.9.3ではダメでした。~
 IMEの設定を確認する(Vine固有?)
 $HOME/.vine/system/imeファイル
  EMACS_IME=scim
  XIM_PROG=scim
  JSERVER=localhost
  WNN8_FRONT_END=kinput2
  WNN7_FRONT_END=kinput2
  WNN6_FRONT_END=kinput2
  WNN8_SERVER=localhost
  WNN7_SERVER=localhost
  WNN6_SERVER=localhost
  CANNA_SERVER=unix
  GTK_IM_MODULE=scim
 多分XIM_PROGとかGTK_IM_MODULEをscimにすればおっけー。
 
 Etermの設定ファイル(全ユーザーへの設定なら/usr/share/Eterm/themes/Eterm/theme.cfg、個別なら~/.Eterm/user.cfg)で
  begin xim
    input_method scim
    preedit_type OverTheSpot
  begin xim
 を追加します(theme.cfgならコメントアウトを外せばいいはず)。これでSCIM + Anthyの設定で日本語入力を使うことができます。後はAnthyでキーバインドの設定をいじればいいでしょう。