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

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

   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 »

   8月 10

復旧の肝

社内サーバー(CentOS4.6)のHDDが壊れかけていた(IOエラーが発生して強制的に読み取り専用モードでマウントされる)ため、昨日は1日復旧作業に費やしました。 その復旧作業の中で詰まった点などを書いておきます。たまたま自分の環境でうまくいっただけかもしれませんので、ここに書いてあることを真似するときは自己責任でお願いします。 1.新マシンに旧マシンのHDDを繋いでも普通に起動する これは壊れかけてるHDDにトドメを刺すことになるかもしれないし、こんなことしなくでもデータの吸い出しはできるので、全くおすすめしない方法ですが、Linuxでは特殊な構成のハードウェアで無い限り、他のマシンのHDDを移植しても起動時にハードウェアの変更が自動的に検出されて、いくつか質問に答えるだけで普通に使える状態で起動できるようです。 今回、fsckを何周かさせてエラーが落ち着いたので、試しにやってみたのですが、旧マシンが昔Dellで買ったCeleron(多分Northwood以前)+インテルチップセットのマシンで、新マシンがVIA PC1500という、Windowsだったらドライバの問題で確実にまともに動作しないだろうなという組み合わせでも普通に元マシンの環境が新マシンで立ち上がりました。 あと、旧マシンは再利用頻度の低いファイルの置き場所として使ってたり、Subversionサーバー(つまり作業コピーがどこかのクライアントに存在する)として使ってたり、今回は消えたらアウトなファイルが無かったため、fsckを掛けまくりましたが、普通はそれでいくつかファイルが消えたりするし、今回もその課程でいくつかのファイルが実際に消えたので、まったくおすすめできません。 2.旧マシンのHDDをマウントするにはちょっと操作が必要 普通は1.の操作をするよりこの操作をした方がサルベージしやすいと思います。新マシンに新しいHDDを取り付けてCentOS5.2をインストールし、旧マシンのHDDをセカンダリに取り付けてマウントしようとしたのですが、普通にはできませんでした。つまり # mount /dev/hdb2 /mnt とかの操作ができませんでした。で、色々調べたのですが最近のRedHat系はLVMという、パーティションの中にさらに仮想的にパーティションを切るような方法でインストールされるらしく、そのLVMの中身をマウントするには少々操作が必要になります。 基本的には、LVMの中のパーティションをアクティブにし、# mount /dev/VolGroup00/LogVol00 /mntみたいな感じでマウントできるのですが、デフォルトのままLinuxをインストールしてると、起動中のHDDとマウントしたいHDDでボリューム名が両方VolGroup00とかでかぶってしまい、操作できません。 ということで、HDDのボリューム名を変えるには、まず、変えたいHDDのUUIDを調べて、そのUUIDを指定してボリューム名を変更するコマンドを実行します。具体的には # vgdisplay— Volume group —VG Name VolGroup00・・・省略・・・VG UUID mK5km2-IgeS-IJN9-wz4i-kR6T-6d6n-ozxFqe # vgrename mK5km2-IgeS-IJN9-wz4i-kR6T-6d6n-ozxFqe OldVolGroup00 くれぐれも稼働中のボリュームの名前を変えないように!多分エラーが出て実行できないとは思いますが。 あとは以下のようにしてアクティブにし、マウントするだけです。 # vgchange -ay OldVolGroup00# mount /dev/OldVolGroup00/LogVol00 /mnt 最初LVMの存在さえ知らなくてちまちまと外付けHDDにコピーしてしまいました。それ自体がバックアップになるから無駄じゃないけど、時間がすごいかかった。 3.MySQLの移行は簡単 /var/lib/mysqlをコピーしてくるだけで動作しました。オフラインの移行は超簡単です。オンラインは気を遣いますけどね。 4.Subversionの修復 リビジョンが1600弱に達してるリポジトリがあったのですがどうも1450あたりのリビジョンデータが破損してるようで、svnadmin dumpでもエラーが出てダンプできませんでした。 たまたま、リビジョン0-1500までのダンプデータがあったのでそれを使いsvnadmin loadした後# svnadmin dump /path/to/repos -r 1501:1600 –incremental [...]

Read the rest of this entry »

   8月 01

UbuntuとCentOSで良く使うコマンドの対応表

Ubuntuでサーバを立てるのは初めてで基本的なコマンド1つとっても戸惑うことばかりです。このエントリは完全に自分用メモです。 1.rootユーザになる方法CentOS:#suUbuntu:#sudo -s※Ubuntuでは継続的にrootになることはできず、管理者権限でコマンドを実行する場合は毎回sudoを付けないといけないと思ってましたが、sudo -sでrootになれるようです。というか設定すればsuも使えるそうです。 2.パッケージ管理CentOS:#yumUbuntu:#aptitude もしくは apt-get※Ubuntuではapt-get推奨で、aptitudeとapt-getを混ぜて使うのは危険らしいです。しかし、最初知らずにaptitudeを使ってしまったので、aptitudeでいきます。 3.サービスの自動起動設定CentOS:#chkconfigUbuntu:#sysv-rc-conf※on/offやlistの出し方は同じ。存在しないサービスをonにしてもエラーは出ず、/etc/rc#.d/に余分なファイルができるだけ。(「#」は0~6の数字)

Read the rest of this entry »