各種インストール(D-Chaより)
Webサーバで一般的によく使うと思われるプログラム
必要なプログラムのインストール
- openssh-server
- openssh-clients
- wget
- sudo
- portmap
- build-essential
プログラムのインストール
D-Cha4ではレスポンスの高速化を目指して、コンパイルはすべてIntel Compilerで行う。ただし、Perlモジュールのコンパイルの際はgccが使われてしまうのでgccをiccのリンクにして対処する。
Intel Compilerのオプション
必要な各プログラムをコンパイルするときにIntel Compilerを使用するが、その際、Ver.9.xと10.xではオプションが変わっている。従ってコンパイル時のCFLAGSがコンパイラバージョンによって 異なるので注意!
Intel Compiler Ver.9.x
CFLAGS="-O3 -tpp7 -xWNB -axWNB -ip"
Intel Compiler Ver.10.x
# CFLAGS="-O3 -xW -axT -openmp -parallel -no-prec-div -ipo" CFLAGS="-O3 -xW -axT -mtune=pentium4 -parallel -no-prec-div -ip"
ただし-xW,-axTオプションはCPUによって異なるので要確認。
実際のインストール
D-Chaユーザーの作成
# adduser -g 100 -m -u 1001 -s /bin/tcsh dcha # passwd dcha
UID,GIDは環境に応じて変更する。
Intel Compiler 9.1.042
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
- 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
- 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
- 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を実行した
% 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
パフォーマンスが劇的に変わったという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
aptでインストールしてもおそらく構わないが、依存プログラムが大量に入るため、ソースからインストールした。
ImageMagick 6.3.3-3ではPerlMagick使用時に実行時エラーが出て使用できなかった
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
XAFSをプロットする際に必要。aptでインストールする。
Subversion
Vine 4.2ではaptでインストールできるため、aptを使用。
- subversion
Vine 3.2ではneonのバージョンなどとの兼ね合いで1.3.2をインストールした。
- apt
- ruby-devel, db4-devel, neon-devel, python-devel
VLゴシック
getsp8.cgi(SPring-8環境カメラ画像)取得時に文字を埋め込むためにインストール。
- apt
- TrueType-sazanami
GhostScript
- apt
- ghostscript
システム設定
rc.localの編集
/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を使う場合の設定
GnuPGで公開鍵暗号を使う場合はApacheアカウントの設定が必要。大まかな流れは以下の通り。
- Apacheのホーム/home/apacheに.gnupgディレクトリを作り--gen-keyをする
- 使用する公開鍵に内部署名する--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'
- apacheのホームディレクトリを/home/apacheとし、一時的にログインできるようにpasswdファイルを書き直す。
iptablesでポート転送する
10223へのアクセスを80に転送する。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10223 -j REDIRECT --to-port 80
Perlモジュールのインストール
初期設定
Policy on building prerequisites (follow, ask or ignore)? [ask] follow ftp://ftp.riken.jp/lang/CPAN
CPANモジュールの設定
ルートになってCPANモジュールでインストールする。perl Makefile.PLオプションの設定の時に、
OPTIMIZE="-O3 -tpp7 -xWNB -axWNB -ip"
を指定しておく。
CPANモジュールのアップデート
install Bundle::CPAN reload CPAN
D-Cha Bundlesのインストール
一つ一つインストールするのは大変なのでBundleを使ってインストールする。
Bundleインストール前の準備
- 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
- CGI.pm
- Bundleファイルをコピー
DCha.pmを/root/.cpan/Bundle/Personal/DCha.pmとしてコピーしておく。
インストール
CPANを使ってインストールする。Perl6::Slurpはエラーメッセージを確認するのでunset LANGを実行しておく。
# unset LANG # cpan cpan> install Bundle::Personal::DCha
これでPerlモジュールの環境がセットアップされた。
インストールしたモジュール
- 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も問題なくインストールできる。
- コンパイラの種類があわないとか文句を言われるので.cpan/build中でコンパイルしてインストールする
Etermで日本語入力
WindowMaker + Etermで日本語入力します。今どきWindowMakerを使っている人がいるかどうかは疑問ですが*1、設定してみます。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でキーバインドの設定をいじればいいでしょう。