日曜研究室 〜技術的な日常〜

技術的な観点から日常を綴ります

   8 月 14

DomUのCentOS5.3 x86_64にiSCSI Enterprise Targetをインストール

DomUなCentOS5.3 x86_64でiSCSIターゲットを動かす必要があったのでやってみました。 最初はyumで簡単にインストールできるということで、scsi-target-utils(tgtd)を試してみたのですが、設定ファイルではなくコマンドで設定するその方法が気に入らず(まぁLinuxなんでシェルスクリプトを設定ファイルだと考えればいいのですが)、またMacのglobalSAN iSCSIイニシエータからどうやっても書き込み出来ません(接続は出来る)でした。 前者はともかく後者は致命的なので、scsi-target-utilsはあきらめて、scsi-target-utilsと同じくらいメジャーと思われるiSCSI Enterprise Target(以下IET)をインストールしてみました。 以下、IETのインストール方法です。 多分、DomUとかx86_64とかじゃなくても、影響のある部分を適宜読み替えることで対応可能かと思います。 1.必要なパッケージのインストール yum install kernel-xen-devel gcc openssl-devel 2.カーネルソースパスの確認 ls /usr/src/kernels/ これで出てきたディレクトリの中で自分のアーキテクチャ・バージョンにあったものを使います。 うちでは”2.6.18-128.4.1.el5-xen-x86_64″だったので、以下それで書きます。 3.iscsi_trgt.koのパスの確認 updatedb locate iscsi_trgt.ko うちでは、”/lib/modules/2.6.18-128.4.1.el5xen/kernel/iscsi/iscsi_trgt.ko”だったので、以下それで書きます。 4.カーネルモジュールディレクトリの確認 ls /lib/modules/ 自分のバージョン・アーキテクチャに合ったディレクトリが2種類見つかると思います。うちでは 2.6.18-128.el5xen と 2.6.18-128.4.1.el5xen でした。 IETはmake時に短い方のディレクトリを使います。 5.カーネルモジュールの依存関係の確認 vi /lib/modules/2.6.18-128.el5xen/modules.dep このファイルにiscsi_trgt.koのパスが無いときは3で確認したパスを末尾に追加する。うちでは”/lib/modules/2.6.18-128.4.1.el5xen/kernel/iscsi/iscsi_trgt.ko:”と追加しました。 6.IETのダウンロード・インストール cd /usr/src wget http://sourceforge.net/projects/iscsitarget/files/iscsitarget/0.4.17/iscsitarget-0.4.17.tar.gz/download tar zxvf iscsitarget-0.4.17.tar.gz cd iscsitarget-0.4.17 make KSRC=/usr/src/kernels/2.6.18-128.4.1.el5-xen-x86_64 make KSRC=/usr/src/kernels/2.6.18-128.4.1.el5-xen-x86_64 install KSRCには2で調べたカーネルソースディレクトリを指定します。 7.iSCSIターゲットで利用するディスクを用意 [...]

Read the rest of this entry »

   7 月 07

awstatsの自動アップデートには気をつけた方がいい

CentOS5.3で動かしてるアクセス解析ソフトのawstatsが急に動作しなくなるという問題が。 ブラウザで見ても404が返ってくるばかりで、かなり頭の中がパニックになりましたが、まずリバースプロキシとして使ってるDeleGateを疑うことに。 (その前にローカルプロキシのdolipoを疑うというステップがありましたが省略) 色々調べてみましたがDeleGateには問題はありませんでした。 awstatsが動いてたサーバーの/etc/httpd/conf.dあたりを見ると、awstats.conf.rpmnewというファイルが。 yumで自動アップデートする設定にしてるのでそれでアップデートされたんだろうなぁと思い、/var/log/yum.logを見ると案の定今朝更新されてました。 元のawstats.confではバーチャルドメイン対応の設定をしてたのと、awstats.conf.rpmnewにはデフォルトの設定が書かれてただけなので、rpmnewの方を消してapacheを再起動してみましたが、状況は全く変わらず。 ちょっと悶絶するくらい「何で〜?」ってなりましたが、よく調べてみると、どうもawstats本体のディレクトリが/usr/local/awstatsから/var/www/awstatsに変わってるようで、しかも元の/usr/local/awstatsの中身の主要なファイルが消えてました。 もちろんawstats.plも消えてるので404が出るのは当たり前です。 まぁ、yumでアップデートされたんなら古いプログラムファイルが削除されるのは分かるんですけど、なんで/usr/localなんだ? yumでアップデートされるということは、yumかrpmで入れたはず。 でまぁ、ちょっとした謎を抱えたまま、パスが変わってるのは分かったので各種設定ファイルをそれに合わせて書き換えました。 これで、定時のcronでの更新も動作するようになったんですけど、やっぱりブラウザからは閲覧できません。 正確には404ではなくawstats.plは表示されるようになったんですが、集計データが全て0のままで使い物にならない状態でした。 awstatsのバージョンが上がったからデータファイルの互換性がなくなったのかと思いましたがそうでもないみたいで。 現にコンソールからはoutputオプションをつければデータは見れました。 パーミッション等でCGI経由ではデータファイルが読み込めない問題が起きてるのかなと思い、apacheのエラーログを見ましたが全くエラーが記録されておらず。 perlに-wをつけてwarningも記録するようにしてみたら、awstats.plの9533行目で未初期化変数使用のwarningが出ましたが、今回の問題とは関係なさそうでした。 というか関係ないと思いたい。あんなソース読みたくない。 \(^o^)/ こんな感じでゴロゴロして現実逃避してたら、ふと一つの可能性に気づきました。 SELinuxじゃね? 開発コミュニティの理念がアレだとか、めんどくさいとかで評判の悪いSELinuxですが、僕は以前から意地でもSELinuxオンで行く事を決めてたので、今回のサーバーでもオンになっています。 /etc/log/audit/audit.logを見るとビンゴ!わんさかとawstats.plがらみのdeniedが記録されてました。 audit2allowとかで許可してあげると、ちゃんとブラウザでも表示されるようになりました。 しかし、awstatsのディレクトリが変わるってどういうことよ? まぁ元々ソースから入れた訳でもないはずなのに/usr/localに入ってた事がおかしいんですけどね。 perlもファイルが読めないならちゃんとエラー吐いてくれよと。 まぁ、perl/CGIからだとSELinuxのせいでファイルがある事さえ認識できなかったのかもしれないですけど。 これで4時間くらい食ってしまいましたよorz

Read the rest of this entry »

   4 月 10

CentOS5.2 x86_64 にApache2::Request(libapreq2)をインストールする方法

必要に駆られてCentOS5.2 x86_64上にApache2::Requestインストールしようとしてたのですが、普通にはインストールできなくてえらく苦労したので、メモっときます。 基本的には、 CentOS5.0にlibapreq2(Apache2::Request)のrpmを入れる の方法と同じなのですが、db-4.5.20.tar.gzからはlibdb-4.5.soが入手できませんでした。 その辺の問題の解決部分を含めて全体的な手順を書いておきます。 まず、Fedora7のlibapreq2-2.09とperl-libapreq2-2.09のRPMを取得します。 ファイルが古くなってきてるようで、手に入れづらくなってますので、RPM Searchあたりで検索した方が早いと思います。 一応今回は以下のようにして取得しました。 wget ftp://ftp.muug.mb.ca/mirror/fedora/archive/releases/7/Everything/x86_64/os/Fedora/libapreq2-2.09-0.rc2.4.fc7.x86_64.rpm wget ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/7/x86_64/perl-libapreq2-2.09-0.rc2.7.fc7.x86_64.rpm 試しに、そのままインストールしようとしてみると、依存性のエラー(libdb-4.5.soがない)でインストール出来ないはずです。 で、BerkeleyDB4.5.20に含まれるlibdb-4.5.soをゲットしたいところですが、冒頭に上げたリンク先の方法(http://download.oracle.com/berkeley-db/db-4.5.20.tar.gz を解凍)では手に入らなかったため、別の方法を行います。 Fedora7のdb4-4.5.20のRPMを取得します。こちらも実際にはRPM Searchあたりで検索することをおすすめします。 wget ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/7/Fedora/x86_64/os/Fedora/db4-4.5.20-5.fc7.x86_64.rpm これを普通にインストールしても既存のものとコンフリクトしてインストール出来ない(というかしたくない)ので、インストールはせずに中身だけ取り出します。 rpm2cpio db4-4.5.20-5.fc7.x86_64.rpm | cpio -id これでカレントディレクトリにlib64とusrいうディレクトリができますが、lib64の中にlibdb-4.5.soがぽつんと入ってるはずです。 そいつを /lib64/libdb-4.5.soにコピーします。 cp ./lib64/libdb-4.5.so /lib64/libdb-4.5.so これで、libapreq2は動くはずですが、BerkeleyDB4.5.20をインストールしたわけじゃなく、依存性のエラーが出るので強制的にインストールします。 rpm -ivh –nodeps libapreq2-2.09-0.rc2.4.fc7.x86_64.rpm ここまで来れば、perl-libapreq2は普通に入るはずです。 rpm -ivh perl-libapreq2-2.09-0.rc2.7.fc7.x86_64.rpm これでApacheを再起動すればApache2::Requestが動作するようになってるはずですが、 libapreq2をインストールした段階で、中に LoadModule apreq_module modules/mod_apreq2.so と書かれた/etc/httpd/conf.d/apreq.confというファイルが作成されてます。 もし他の設定ファイルでmod_apreq2.soを読み込んでるとApacheの起動時に警告が出ますので、どちらかのLoadModuleの行をコメントアウトしてください。 CentOS5.2にFedora7のrpm入れて大丈夫なの?という不安はありますが、使ってみてる範囲では特に問題は出てないです。

Read the rest of this entry »