2007-02-14 Wed
Debian Etch Linuxをインストールした
手元の開発環境のDebian Sarge Linuxのイメージが微妙な感じなのと、
自宅サーバの調子がよろしくないことから、
ここはひとつ両方一度に解決することにしました。
Debian Linux etch(testing)のインストール手順メモ
イメージのダウンロードからVMware起動まで
- Debianの日本語サイトからetch(testing)のイメージをダウンロード
-- http://www.debian.org/devel/debian-installer/
-- 32bitなのでi386
- VMwareのイメージをQemuでつくる
-- qemu-img.exe create -f vmdk d:\vmware\debian400g.vmdk 400G
-- あとあと面倒なので最大容量を400GByteにしておいた
- VMmwareの設定ファイル(*.vmx)を作る
起動してインストール
- カーネルが2.6系でlinux26とかいらない。「linux:」と出たらリターン
- 住んでる地域は「Asia->Tokyo」
- キーマップは「keymap->japanese」
- ディスクはマニュアルでパーティショニング。これも大雑把に。
-- /boot 128M
-- swap 2G
-- 残りは/
- rootのパスワード設定
- ユーザアカウント作成
ひたすら待つ
- ネットインスト使った
-- 標準パッケージは入れることにした。
-- apt用のミラーはasahiにした
再起動
インストール済みのパッケージをアップデート
- editorで /etc/apt/source.listを編集
-- /etc/apt/source.listからcdromをはずす
-- main contrib non-freeを付ける
- apt-get update
- apt-get upgrade
-- updateとupgradeを何度かやる
- apt-get installで残ってるものもいれちゃう
aptで必要なパッケージをインストール
- emacs mule-ucs
- jed vim screen zsh
- csh ruby gcc g++
- ftp ssh samba
- migemo sudo
- bzip2 unzip tar
- w3m-el python-mode perltidy
- ruby1.8-elisp ack nkf lv
- screen cvs subversion
- ncftp wget
- python php5 lighttpd
- apache2 trac
- lynx expat libxslt-dev libxml2-dev libexpat1-dev
- lookup lookup-el aspell aspell-en libxml-dev
- tidy libtidy-dev
- autoconf automake binutils gawk binutils-dev
- gdb libc6-dev sary libsdl-perl
- libperl-dev patch g77 libtool
- libmng-dev libungif4-dev
- bison libxpm-dev
- memcached libgd2-dev smbfs uuid-dev
- canna kinput2-canna xfonts-base language-env
- libglib2.0-dev pkg-config libdb3-dev openssl flex
- libgd-dev proftpd ntp ntpdate ntp-doc ntp-simple
- mysql-client dbishell libcompress-zlib-perl
# tinyca入れたら?といわれたけど入れなかった。
- mysql-server alsa-base alsa-utils
- sun-java5-bin sun-java5-jdk
- libpari-dev libpari-dbg pari-gp2c pari-doc pari-extra
- tetex-extra ptex-bin
- tetex-doc psutils perl-tk libxml-parser-perl latex-beamer
- libunicode-string-perl libmailtools-perl libhtml-format-perl
- dvipsk-ja jbibtex-bin jmpost mendexk
- dvi2ps-fontdata-ja
- defoma-doc psfontmgr x-ttcidfont-conf dfontmgr gs-gpl gs-esp
- gs-afpl gv libjasper-runtime
- gsfonts-x11 xpdf-reader texi2html dvipng chktex
- lacheck rubber sam2p
- latex-xcolor lmodern pgf preview-latex-style
- kakasi sary apache libgmp3-dev kakasi-dev
- svk libvcp-perl libvcp-dest-svk-perl
- libsqlite3-0 libsqlite3-dev sqlite3
- libdate-simple-perl
- libgd-gd2-perl libgd2-xpm-dev libgd-tools
- libcompress-zlib-perl libio-zlib-perl zlib-bin zlibc
- libgdbm-dev php5-cgi php-pear php5-dev php4-dev
- libfcgi-ruby1.8 libfcgi0c2 libfcgi-perl libfcgi-dev
- rsync libsvn-ruby
- imagemagick perlmagick libmagick9 libmagick9-dev
- gs gs-esp gs-cjk-resource
- libsyck-dev python-syck php4-syck
- ruby1.8-dev rubygems rdoc libyaml-ruby libzlib-ruby rails
- libapache2-mod-ruby libapache-mod-ruby libapache2-mod-fcgid
- ant junit
SSLだけ、別にインストールしておく。
何かと使うことが多いのでOpenSSLをソースからインストールしておく。
- http://www.openssl.org/source/からwgetする
- 解凍
- %./config --prefix=/usr/local/openssl
- %make
- %make test
- %make install
zshを使うようにする
- /etc/passwdの普段使うユーザのシェルをbashからzshに変更
- $HOMEに.zshrcを書く
そろそろ日本語の設定する(etchをUTF-8環境に)
まずは、OS側をUTF-8にする。
- # dpkg-reconfigure localesする
-- en_USのUTF8とISO08859-1、ja_JPのUTFとEUCにチェックを入れた。
-- ja_JP.UTF-8を選択
ここから先設定ファイルをいじるのでemacsを先になんとか。
結局emacsはsidのものを使うことにした。
なんかうまくいかなかったので。
- /etc/apt/source.listにsid用の行を追加
- apt-get update
- apt-get install emacs-snapshot emacs-snapshot-el anthy-el
- さっき追加したsidの行をコメントアウト
このままだと、emacs21が使われるのでemacs22を使うようにする
- update-alternatives --config emacs
-- 2(emacs-snapshot)を選択する
- emacs --versionして、emacs22を使えるようなったか確かめる。
- .zshrcの設定
-- LANG=ja_JP.utf8と記述。LC_ALLやLOCALは記述しない。
--- 3つの環境変数は使われ方はほぼ同じで、優先順位が違う。
--- LC_ALL > LANG > LOCAL
--- ALLは他を上書きしてしまうし、LOCALはなー、ということでLANG。
- .bash
-- export LANG=ja_JP.utf8と記述
- .screenrc
-- defencoding UTF-8と記述
ちなみに、.zshや.bashrcを変更したら、% source $HOME/.hogefugaする。
emacsはあとでカスタマイズするだろうけど、とりあえず。
- .emacsの設定
-- 以下を記述する。片っ端からutf-8に。
(require 'un-define)
(coding-system-put 'utf-8 'category 'utf-8)
(set-language-info
"Japanese"
'coding-priority (cons 'utf-8
(get-language-info "Japanese" 'coding-priority)))
(set-language-environment "Japanese")
(set-default-coding-systems 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(coding-system-put 'utf-8 'category 'utf-8)
(set-language-info
"Japanese"
'coding-priority (cons 'utf-8
(get-language-info "Japanese" 'coding-priority)))
(set-language-environment "Japanese")
(set-default-coding-systems 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
再起動して、ログインしたらzshになっていて、
screenを起動して、emacsを起動して日本語を読み書きできれば終了。
libファイル関係
- /etc/ld.so.confや、/etc/ld.so.conf.d/hogefuga.confにパスが通っているかを確認する。
- 以下を記述する。
/lib
/usr/lib
/usr/local/lib
/usr/X11R6/lib
/usr/lib
/usr/local/lib
/usr/X11R6/lib
emacs-lisp
- [O] 使ったことがないEmacsのマクロを使ってみるを参照。
CPANモジュール
- perl -MCPAN -e shell
地獄のCPANモジュールインストール大会。
まー、CatalystとPlaggerと、って最近流行のをインストールすると、
いい感じに大体そろうんじゃないだろうかww
- Bundle::CPAN
- Bundle::XML
- CPAN::Mini
一回じゃインストールが終わらない。
その後何回かBundle::XMLすると、
XML::SablotronとXML::Grove以外はインストールできた。
まー、この辺は放置。
足りないものを補うことにする。
- XML::Parser
- ExtUtils::MakeMaker
- ExtUtils::ParseXS
- Net::SSLeay
- XML::Atom
- XML::RSS
- SOAP::Lite
- Date::Range
HTML::Tidyはテストを最後のだけこけるけど、
まー、大丈夫そうなのでforceした。
- force install HTML::Tidy
- POE
- Cache
- Log::Dispatch
- force Log::WarnDie
- Catalyst
- force install HTML::Widget
- force install Error
- forcr install Test::NoWarnings
- Task::Catalyst
- Exporter::Lite
- Net::Domain::TLD
- UNIVERSAL::exports
- DB_File
- EtchになってからMySQLは5系なんだけど、testっていう名前の
DatabaseがつくられなくなったからMySQL関連のモジュールは
だいたいテストでコケル。他のDBもそうなのかもな。
-- かならずmysql_install_dbする
-- mysqlにログインして、空っぽでいいから
--- create database testする
- Tie::DBI
HTML::Widgetのテストは、致命的じゃなさそうなので
エラーが出たけどforce install HTML::Widgetした。
- Catalyst::Plugin::HTML::Widget
- Catalyst::Devel
- Math::BigInt
- Test::Simple
- Math::Bezier::Convert
- Font::TTF::Font
- HTML::Template
Pariはソースが必要
- ftp://megrez.math.u-bordeaux.fr/pub/pari/unix/pari-2.3.1.tar.gz
ソースを解凍して、自分でコンパイル
- % cd .cpan/build/Math-Pari-2.010709/
- % perl Makefile.PL paridir=/tmp/pari-2.3.1
あらかじめ、2.3は一部コケルよ、と警告があったのでこけても気にしない。
- % make
- % make test
まー、コケたけどいいや
- % make install
- Plagger
- Cache::File Catalyst::Plugin::Cache::Memcached
- Data::Hierarchy Locale::Maketext::Simple IO::Pager
- VCP::Dest::svk
- force install SVN::Mirror
SVK2.0をインストールするときのSVN::Mirrorのエラーは無視した。
- SVK
もう、なんか、ほかにもやったけど忘れたよ。orz。つかれた。
何とかインストールに成功したが、
別のことやりながらで2日かかった。
もう多分大半の普段使うものは入っているので、
サーバの設定をする。
サーバの設定
どんな感じにするか
サーバのできあがりはこんな感じ。
とりあえずPC1台のなかに構築しておいて、
あとで負荷が上がったら、proxyで他のPCに飛ばす予定。
+-------------------+
Apache2 mod_proxy |
+-------------------+-----------
| |
+--------------------+ +----------+
Apache2 + mod_perl | | Lighttpd |
+--------------------+ +----------+
***んじゃ、まずはmod_proxy側から。
apache 2.2.4 + mod_proxy
いろいろ後で考えて最適化すればいいので、
とりあえず使いそうなモジュール全部乗せ。
mod_perlを静的に組み込んでいない以外は、mod_perl側と同じ。
% ./configure --with-ssl=/usr/local/openssl\ --prefix=/usr/local/httpd_proxy --enable-proxy-balancer\ --enable-proxy --with-mpm=prefork 適当なオプション *** apache 2.2.4 + mod_perl 2.0.3 いろいろカッチリ決めるのが面倒なので、 mod_proxy側とまったく同じオプション指定。 以下のようなクソ長いオプションを指定していますが、 本当は指定しなくてよいのが混ざっていそうだな。 [src] % perl Makefile.PL MP_USE_STATIC=1 MP_AP_PREFIX=../httpd-2.2.4\ MP_AP_CONFIGURE="--with-ssl=/usr/local/openssl\ --prefix=/usr/local/httpd_mp203 --enable-proxy-balancer\ --enable-proxy --with-mpm=prefork 適当なオプション" % make % make install
Portの設定
mod_proxyは80で、mod_perlとlightyは80以外の何か。
互いにかぶらなければ何でもいいのです。
htttpd.conf
lighttpd.conf
hostsの設定
/etc/hostsに、ドメイン名とmod_proxyのIPを登録
Apache2.0にmod_rpafのインストール
proxy側から送ったリクエストのリモートホストのIPアドレスを、
127.0.0.1からリクエスト元のIPに書き換えてあげます。
このモジュールを使わないと、サーバごとにとるログが
使えないごみになってしまいます。
まずはmod_rpafのソースを入手
mod_rpafの配布ページから、mod_rpaf-0.5.tar.gzをダウンロードします。
そんで解凍して中に入る。
tar xvfz mod_rpaf-0.5.tar.gz
cd mod_rpaf-0.5
cd mod_rpaf-0.5
Makefileに手を加える
バックエンドにする予定のApache2.0のbin/apxsを指定します。
Makefileの先頭の方に、以下のような感じで記述します。
他にAPXSの指定があったらコメントアウトします。
APXS=/usr/local/httpd_lb/bin/apax
makeしてmake install
configureはないので、すぐにmakeします。
make rpaf-2.0
make install-2.0
make install-2.0
インストール先は、httpd_proxy/modules以下になります。
httpd.confにmod_rpafの設定を追記
--enable-soオプションをつけて、Apacheをコンパイルしておけば、
DSOをサポートしてくれるので、以下を記述すればOKになります。
# LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1
Lighttpdのproxy経由のIPアドレスをリモートホストのアドレスに
Lighttpdの場合は、lighttpd.confで直接X-Forwarded-Forを指定した。
こうするとLighttpdでリモートホストのIPを記録できてウマー。
もうちょっと上手なやり方がしそうだけど、簡単なのでこれでいいや。
accesslog.format = "%{X-Forwarded-For}i %v %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
【Apache2.0の関連リンク】
▼リバースプロキシを導入する際はmod_rpaf - Drk7jp
▼MODULE.JP - リソースプール適材適所
[2007-02-25]:追記
HDDがぶっ壊れたので、再度やりましたが、
メモがあったおかげで12時間程度でCPANインストール終了。
それでもスゴク時間がかかりましたね。
あ、あと、Class::DBIは使うのをあきらめますた。
投稿者:としのり 日時:23:59:59 | パーマリンク | コメント | トラックバック() |

